为什么这个简单的程序给我看似错误的输出?

Use*_*458 0 c output

这是一个简单的程序,我有一个任务要做.

  • 向用户询问一个数字,您可以假设该数字为1或更大
  • 按3计数,将数字从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;
}
Run Code Online (Sandbox Code Playgroud)

这是示例输出:

请输入大于1:15的数字

1 4 7 10 13

这些数字的总和是:50

我不能为我的生活弄清楚为什么数字(15)被添加到总和.输入15被添加到1,4,7,10和13的总和.在这个程序的哪个点上,我的数字相等?

如果这不是很有意义,我很抱歉.任何帮助表示赞赏.我想了解我做错了什么.谢谢.

frs*_*slm 6

i在将它添加到总和之前,您正在递增!如果每个数字增加3,那么在这种情况下,您的总误差将加起来为15.

确保i只有在每次迭代中使用完后才增加:

while(i < number){
    printf("%d ", i);
    sum = sum + i;

    i+=3;
}
Run Code Online (Sandbox Code Playgroud)