当前位置:  开发笔记 > 编程语言 > 正文

阵列平均程序的输出错误

如何解决《阵列平均程序的输出错误》经验,为你挑选了1个好方法。

我遇到了一个问题,我必须取一行数字之和的平均值,以零结束,不能计算在等式中.然而,虽然我的第一个输出值非常接近或有时是正确的,但我的其他值完全没有了.如果有人能弄明白我的代码错误,我会很高兴.

#include 
#include 
using namespace std;
int main() {
    int a, b, sum, average;
    int numb = 0;
    cin>>a;
    for (int i=0;i>b;
            sum= b+sum;
            numb++;
        } while (b!=0);
        average = sum/(numb-1);
        cout<

输入:

11
780 1610 565 799 1664 431 0
12848 10728 4091 12286 8035 0
959 418 171 255 694 78 393 917 119 1016 929 761 363 0
14930 11543 11508 3062 1545 8434 6504 2631 0
418 359 477 157 224 170 124 433 255 0
1175 1789 853 1411 1772 661 884 449 1324 713 0
52 325 456 579 732 621 0
6898 11736 13531 11906 2502 0 16334
10736 7506 8493 3749 5434 0
3221 4212 5720 6807 14802 11421 8939 4167 12245 14132 11460 5120 9445 5000 5379 0
366 2435 3709 1616 3725 3449 1591 901 7202 5837 0

输出:

974 4486 2342 3459 2748 2405 2182 2667 3109 3895 3778

预期:

975 9598 544 7520 291 1103 461 9315 8709 8138 3083

但出了什么问题?



1> Ivaylo Tosko..:

您的代码存在以下几个问题:

    您尚未初始化,sum因此此程序的输出不确定.我想在你的情况下,编译器只是将它设置0为预期的行为,所以这就是你的结果接近正确的结果.但是,不要指望总是如此,并始终确保使用初始化变量.

    在循环结束时,你需要重新设置的值numbsum.

    您使用整数,它总是向下舍入结果.您可以使用双精度型或在需要时投射变量.

    #include 
    #include 
    using namespace std;
    int main() {
      int a, b;
      double average, sum;
      int numb;
      cin >> a;
      for (int i = 0; i < a; i++) {
        sum = 0.0;
        numb = 0;
        do {
          cin >> b;
          sum = b+sum;
          numb++;
        } while (b != 0);
        average = sum / (numb - 1);
        cout << round(average) << " ";
      }
    }
    

另请注意,如果您直接键入相同的情况0,程序将因为除以0而崩溃.


更好的样式(恕我直言)在循环开始时初始化变量,所以你不必两次.
推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有