[英]Why is this simple program giving me seemingly incorrect output?
这是我要分配的一个简单程序。
- 向用户询问一个数字,您可以假设该数字将为1或更大
- 以3s计数,打印从1到用户编号的数字; 例如最多15:1、4、7、10、13 o在一行上打印数字o另外,找到这些数字的总和并在下一行打印,在这种情况下为35
- 在1个程序中,使用while循环求解,然后使用for循环再次求解
这是我的代码
#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的数字
1 4 7 10 13
这些数字的总和是:50
我一生都无法弄清楚为什么将数字(15)相加。 输入15被加到1、4、7、10和13的总和上。在此程序中,我什么时候等于数字?
很抱歉,如果这没有任何意义。 任何帮助表示赞赏。 我想了解我做错了什么。 谢谢。
在将i
加到总和之前,您要递增i
! 如果每个数字都增加了3,那么在这种情况下,您的总错误将总计为15。
确保仅在每次迭代中使用完i
后才递增i
:
while(i < number){
printf("%d ", i);
sum = sum + i;
i+=3;
}
你没有得到50
1 + 4 + 7 + 10 + 13 + number
而是
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
。
只需对线求和,然后对i加3即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.