C语言 输出错误

o0lyfsai  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(174)

赋值是编写一个程序,用户在其中输入数字,程序将输入的数字加到一个和上。每次输入时,打印该和。当用户输入0时,程序终止。
我的代码是:

#include <stdio.h>
int main(){ 
    
    int n;
    int i;
    int sum = 0;
        
   for(i=0; i<=n; i++){
     scanf("%d", &i);
       if(i==0){
           break;
       }
       sum += i;
       
       
       
   }
    printf("%d\n", sum);
    return 0;


}

然而,输出并不理想。
如果输入为:输出应为:1、3、6、10、15
现在它只输出总和15。
我是编程新手,感谢任何关于我可能做错了什么的建议:)

wqsoz72f

wqsoz72f1#

只是一个警告:语句i<=n是未定义的行为,因为您没有给n赋值,只是用int n初始化了它。
你应该使用while (i != 0)循环而不是for循环,因为你事先不知道你会迭代多少次,你会一直循环直到用户输入0
要打印中间和,您应该将printf移动到循环内部。

c2e8gylq

c2e8gylq2#

n在这里未初始化。因此i<=n将产生未定义的行为,这意味着任何事情都可能在那里发生。最好的方法是使用while循环。

解决方案

#include <stdio.h>
int main(void)
{

    int i;
    int sum = 0;
        
   while (scanf("%d", &i) == 1)
   {
       if(i==0)
           break;
       sum += i;
       printf("%d\n", sum);
       
   }
    return 0;
}

相关问题