我想制作输入数字和打印两个数字的程序,一个是所有奇数,第二个是偶数。
如果输入数字的数字小于10,但是当数字为10且更多数字出错时,它可以正常工作。你知道为什么吗?
unsigned long int n;
unsigned long int even=0,odd=0;
int countOdd=1,countEven=1;
printf("enter every number: \n");
scanf("%lu",&n);
while(n!=0){
if(n%2==0){
even+=10*countEven*(n%10);
countEven*=10;
}
else
{
odd+=10*countOdd*(n%10);
countOdd*=10;
}
n=n/10;
}
printf("the odd number is %d \n",odd/10);
printf("the even number is %d \n\n\n",even/10);
答案 0 :(得分:4)
unsigned long
在您的机器上可能是32位,它可以容纳的最大值是2 32 - 1(4294967295
),您可能正在输入一个数字那更大。
请尝试使用unsigned long long
,至少为64位。
答案 1 :(得分:1)
您已将n
声明为unsigned long int
,它可以在32位系统中保持4,294,967,295
的最大值。因此,当您输入超过此值的值时,它会输出<{p}}
4294967296