我的'cout'没有给出正确的价值 - 为什么?

时间:2009-09-05 04:26:38

标签: c++ sum-of-digits

简单的“数字之和”代码。它编译但是在执行时,最后一个cout为num int而不是实际的用户输入数字给出一个“0”。

如果您愿意,请随意将其复制并粘贴到您自己的编译器中,看看我的意思。

如何输出正确的“num”值?

~~~

#include <iostream>

using namespace std;

int main()
{
  int num;
  int sum = 0;

  cout << "Please type any non-negative integer: ";
  cin >> num;

  while ( num > 0 ) {
    sum += num % 10;
    num /= 10;
  }

  cout << "The sum of the digits of " << num << " is " << sum << "\n";

  system("PAUSE");
  return 0;
}

3 个答案:

答案 0 :(得分:11)

你一直在修改num直到它变为0(这就是你的while ( num > 0 )语句确保!),所以当然它最后是0!如果您想要发出之前的内容,请添加例如循环前int orig=num;,最后发出orig

答案 1 :(得分:1)

问题在于num /= 10更改num。如果您想让它工作,您应该创建一个temp变量,用于执行所有计算。

答案 2 :(得分:1)

下次,您可以尝试使用调试器。你会发现那些“错误”很容易!