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

num0 になるまでずっと変更してきました(それがあなたの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 に答える