【问题标题】:Wrong with output输出错误
【发布时间】:2022-11-26 15:26:11
【问题描述】:

作业是编写一个程序,用户在其中输入数字,然后程序将输入的数字加到总和中。在每个条目中,打印总和。当用户输入 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,2,3,4,5,0 输出应该是:1,3,6,10,15

现在它只输出总和 15。

我是编程新手,感谢您对我可能做错了什么的任何建议 :)

【问题讨论】:

    标签: c output


    【解决方案1】:

    n 在这里未初始化。所以 i&lt;=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
    ", sum);
           
       }
        return 0;
    }
    

    【讨论】:

      【解决方案2】:

      只是一个警告:int n 是未定义的行为,因为您还没有将它设置为一个值,所以语句 i&lt;=n 也是未定义的行为。相反,您应该使用 while (i != 0) 循环,因为您应该一直循环直到用户输入 0

      要打印中间总和,您应该将 printf 移到循环内部。

      【讨论】:

      • int n 是未定义的行为-->i<=n 是未定义的行为
      • @DavidRanieri 我添加了说明,感谢您的建议
      • 澄清很好,但你似乎是说变量n的声明是未定义行为的原因,它看起来有点奇怪。
      • @DavidRanieri 是的,我明白你的意思,我已经向后解释了
      猜你喜欢
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2020-01-02
      • 2017-12-31
      相关资源
      最近更新 更多