请c语言的大虾指导下!!

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:23:20
输入39999以前的数都能正常运行,从40000开始就不行了,请各位大虾帮忙指点下!
main()
{
int a,b,c,d,e;
long x;
x=scanf("%ld",&x);
if(x>99999&&x<0)
printf("it is a wrong number\n");
else
{
a=x/10000;
b=(x-a*10000)/1000;
c=(x-a*10000-b*1000)/100;
d=(x-a*10000-b*1000-c*100)/10;
e=(x-a*10000-b*1000-c*100-d*10);
if(a!=0)
{ printf("it is a five-bit number\n");
printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
printf("%d%d%d%d%d\n",e,d,c,b,a);
}
else
{
if(b!=0)
{ printf("it is a four-bit number\n");
printf("%d,%d,%d,%d\n",b,c,d,e);
printf("%d%d%d%d\n",e,d,c,b);
}
else
{
if(c!=0)
{ printf("it is a three-bit number\n");
printf("%d,%d,%d\n",c,d,e);
p

加上强制类型转换就可以了
----------------------------------------------------------------------------------------------
#include <stdio.h>
main()
{
int a,b,c,d,e;
long x;
scanf("%ld",&x);/*不要用x=scanf("%ld",&x);*/
if(x>99999||x<0)/*要用||*/
printf("it is a wrong number\n");
else
{
a=x/10000;
b=(x-(long)a*10000)/1000;
c=(x-(long)a*10000-(long)b*1000)/100;
d=(x-(long)a*10000-(long)b*1000-(long)c*100)/10;
e=(x-(long)a*10000-(long)b*1000-(long)c*100-(long)d*10);

if(a!=0)
{
printf("it is a five-bit number\n");
printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
printf("%d%d%d%d%d\n",e,d,c,b,a);
}
else
{
if(b!=0)
{
printf("it is a four-bit number\n");
printf("%d,%d,%d,%d\n",b,c,d,e);
printf(&