繁体   English   中英

为什么这个简单的程序给我看似不正确的输出?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM