我有以下代码添加输入编号。 当我输入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();
}
输出图片中的结果..
答案 0 :(得分:11)
您可能会溢出变量,请尝试使用long
代替int
。对于16位int
,范围为-32768
到32767
。您可以通过打印sizeof(int)
轻松测试这一点,2
可能是4
(16位),而不是更常见的{{1}}(32位)。
为了Pete的缘故,停止使用Turbo C ++ 。那里有无数更好的选择。