3

入力番号を追加する次のコードがあります。12345と入力すると正しい結果が得られますが、56789と入力すると間違った結果が得られます。

どんな助けでもありがたいです...

#include <stdio.h>
#include <conio.h>
main()
{
int d1, d2, d3, d4, d5, sum, number, n;
clrscr();
scanf("%d", &number);
printf("number=%d\n",number);
n=number;
d1=n % 10;
n=n / 10;
d2=n % 10;
n=n / 10;
d3=n% 10;
n=n / 10;
d4=n% 10;
n=n / 10;
d5=n;
sum=d1 + d2 + d3 + d4 + d5;
printf ("sum of digits =%d\n", sum);
getch();
}

結果を画像に出力します。ここに画像の説明を入力してください

4

1 に答える 1

11

変数がオーバーフローしている可能性があります。long代わりに を使用してみてくださいint。16 ビットintの場合、範囲は-3276832767です。これは、より一般的な(32 ビット) ではなく、sizeof(int)おそらく2(16 ビット) を印刷することで簡単にテストできます。4

ピートのために、Turbo C++ の使用をやめてください。そこには無数のより良い選択肢があります。

于 2012-12-18T15:46:33.833 に答える