【问题标题】:c++, 'avg = sum/5' gives me junk values but writing avg = sum/2 gives works and i don't know whyc++, 'avg = sum/5' 给了我垃圾值,但是写 avg = sum/2 给了我工作,我不知道为什么
【发布时间】:2020-01-31 01:24:54
【问题描述】:

我正在尝试用 c++ 创建一个简单的程序。它计算用户输入的 5 个数字的平均值,但是当我运行它时它一直给我一个垃圾值。我花了 30 多分钟来解决这个问题,试图修复它,但我似乎无法弄清楚。

#include <iostream>  

int main() {
    std::cout << "hello this my program" << '\n';
    int sum, avg;

    int numbOne{  }, numbTwo{  }, numbThree{  }, numbFour{  }, numbFive{  };
    std::cout << "enter your first number: ";
    std::cin >> numbOne;

    std::cout << "enter your second number: ";
    std::cin >> numbTwo;

    std::cout << "enter your third number: ";
    std::cin >> numbThree;

    std::cout << "enter your fourth number: ";
    std::cin >> numbFour;

    std::cout << "enter your fifth number:";
    std::cin >> numbFive;

    sum = numbOne+numbTwo+numbThree+numbFour+numbFive;

    avg = sum/5;

    std::cout << "the average is: " << avg << '\n;';
}

这是在控制台中打印的内容。

hello this my program
enter your first number: 1
enter your second number: 2
enter your third number: 3
enter your fourth number: 4
enter your fifth number:5
the average is: 32619

【问题讨论】:

  • 你调试过numbOne等的值吗? (例如,在您的 sum = 上方放置一个 std::cout 以获取值)

标签: c++ sum average


【解决方案1】:

这就是为什么:'\n;' 我确定你的意思是放双引号。或者如果你使用单引号,'\n' 后跟 ';'..

所以应该是:"\n";'\n';

正如 cmets 中所指出的,您应该启用像 -Wall-Wextra 这样的编译器警告。他们将帮助您查看问题-Wmultichar

【讨论】:

  • 如果编译时出现警告,您将看到一条消息(g++ -Wall -Wextra ...):如下所示:wandbox.org/permlink/eFFFIHmcv8rXVdQp 警告:多字符字符常量 [-Wmultichar]
  • @RyanHaining;感谢那。在我的一生中,我不记得这叫什么了。 -Wmultichar 看到后修复了我的大脑哈哈。
  • 好眼光!
  • 不错。还应该提到,还需要进行一次更正:为了正确计算平均值,avg 必须声明为 float(或 double)而不是 int(对于 sum,转换为 float/double 就足够了)。例如,实例 (11+12+13+14+15)/5 应该产生 12,8 但 OP 的代码将输出 13。
  • @RonaldSouza, 11, 12, 13, 14 and 15的平均值 13
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2020-08-10
相关资源
最近更新 更多