0

ユーザーが正の整数を入力できるようにするプログラムを作成しようとしています。プログラムは、各桁の合計を加算して出力します。たとえば、ユーザーが を入力する54と、プログラムは を出力します9。何らかの理由で、プログラムはとてつもなく大きな数値を出力しています。が入力の場合、出力はまたは54のようになります。私は C プログラミングは初めてですが、このコードに問題はありません。51654512191235

//This program takes a positive integer
//from the user, and adds all the digits
//of the number together.

#include <stdio.h>

int main() {
  system("clear");
  int given, add, hold, i;

  printf("Enter a positive integer (up to 10 digits): ");
  scanf("%d", &given);                      //User input

  for (i = 0; i < 10; i++) {                //Loop to add digits
    hold = (given % 10);
    given = (given / 10);
    add = (add + hold);
  }
  printf("Sum of the digits is %d\n", add); //Output
}
4

3 に答える 3

0

for ループが間違っていると思います
。ループは 10 回実行されますが、scanf は int データ型の制限、つまり 32768 までしか入力を受け付けません。long データ型
を指定する必要があります。forループを次のようにします

for(;given!=0;)
     {
        hold = (given % 10);
        given = (given / 10);
        add = (add + hold);
     }

もちろん初期化してゼロに追加します。

于 2012-09-13T19:30:29.937 に答える
0
int given, add, hold, i;

を初期化していないaddため、指定されていないデータ、別名ガベージが含まれています。指定されていないときにその値を使用すると、未定義の動作になります。

于 2012-09-13T19:14:50.617 に答える
0

ループの前に挿入add = 0;して、それが役立つかどうかを確認してください。

于 2012-09-13T19:18:36.783 に答える