0

简单的“数字总和”代码。它可以编译,但在执行时,最后一个 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;
}
4

3 回答 3

11

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

于 2009-09-05T04:37:49.767 回答
1

问题是num /= 10变化num。如果你想让它工作,你应该创建一个temp变量来进行所有计算。

于 2009-09-05T04:42:31.083 回答
1

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

于 2009-09-05T05:42:17.673 回答