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。您可以通过打印轻松地测试它sizeof(int),这可能是2(16 位)而不是更常见的4(32 位)。

看在皮特的份上,停止使用 Turbo C++。那里有无数更好的选择。

于 2012-12-18T15:46:33.833 回答