为什么这个简单的程序给我看似不正确的输出?
这是一个简单的程序,我有一个任务要做。为什么这个简单的程序给我看似不正确的输出?
- 要求一个号码,你可以假设为1或更大的三分球
- 计数的用户,从1打印数字0到用户号码;例如高达15:1,4,7,10,13 o在一行上打印数字 o另外,找到这些数字的总和并在下一行打印,在这种情况下打印35
- 1在程序中求解用一个while循环,然后再次循环
这是我的代码
#include<stdio.h>
int main(){
int number;
int i = 1;
int sum = 0;
printf("Please enter a number greater than 1: ");
scanf("%d", &number);
while(i < number){
printf("%d ", i);
i+=3;
sum = sum + i;
}
printf("\nThe sum of these numbers is: %d\n", sum);
return 0;
}
这是示例输出:
请输入一个大于1:15
这些数字的总和是:50
我不能为我的生活弄清楚为什么数( 15)正被添加到总和中。输入15被加到1,4,7,10和13的总和上。 在这个程序的什么位置我是否等于数字?
对不起,如果这并没有很大的意义。任何帮助表示赞赏。我想了解我做错了什么。谢谢。
在将其添加到总和之前,您正在增加i
!如果每个数字已经增加了3,那么在这种情况下,您的总误差将加起来为15。
确保你增加i
你在每次迭代使用完之后才:
while(i < number){
printf("%d ", i);
sum = sum + i;
i+=3;
}
噢,天啊! 就是这样!我应该知道这一点。 我一直盯着这一个小时试图找出我做错了什么。 非常感谢你学到这个教训! – MissAnnThropic
随时!另一个提示:如果你在这个特定场景中使用了for循环,你可能没有遇到这个问题:'for(int i = 1; i
你不能从
1 + 4 + 7 + 10 + 13 + number
而得到50,这是
4 + 7 + 10 + 13 + 16
相同
(1 + 3) + (4 + 3) + (7 + 3) + (10 + 3) + (13 + 3)"
或
(1 + 4 + 7 + 10 + 13 + (3+3+3+3+3)
错误的总和恰好等于number
,但它并没有来自number
。
只是反转线计算的总和和一个加3我。
你写的代码;你应该知道它做了什么。 –
调试器逐步检查值,然后执行。 –
请将'i + = 3;'语句放在循环体的末尾,因为在添加之前您正在更改已处理的数字。 –