输入三位数时怎么老出现错误

来源:百度知道 编辑:UC知道 时间:2024/05/14 04:52:04
C语言:功能是输入一个不多于五位的数,判断此数是几位数,并逆序输出该数,每次输入一个三位数后逆序数字显示完后总是跟一个2672,而且输入大于3万多的数时显示就乱了,不知道怎么回事,我定义的是长整型,为什么连输入大于4万的数都不行?
#define ge indiv
#define shi ten
#define bai hundred
#define qian thousand
#define wan ten_thousand

main()
{int ge,shi,bai,qian,wan,logic=1,place,a;
unsigned long int num;
printf("输入该数:\n");

while(logic) /*输入该数*/
{scanf("%ld",&num);
if (num>99999||num<0)
printf("输入有误,重输:\n\n");
else logic=0;}

if((a=num/10000)>0) place=5;/*算该数是几位数*/
else if((a=num/1000)>0) place=4;
else if((a=num/100)>0) place=3;
else if((a=num/10)>0) place=2;
else place=1;

printf("该数是:%d位数\n\n",place);

wan=num/10000;/*输出各拉数*/
qian=(num-wan*10000)/1000;
bai=(num-wan*10000-qian*1000)/100;
shi=(num-wan*10000-qian*1000-bai*100)/10;
ge=num-wa

你参考一下吧?我又重写了一遍,相信不用解释了,你原来的写法好象有点乱,不太集中,当然思路是没问题的,出问题的就是你判断条件不够严密,可以考虑一下!
main()
{
int i,n,m,t,w,z;
printf("input a num between(0,100000)\n");
do
{scanf("%d",&i);
if(i>=100000&&i<=0)
printf("error!input a num again!\n");
}while((i<100000&&i>0)==0);
if(i>=0&&i<10)
{printf("1 位数\n");
printf("倒序 %d\n",i);
}
else if(i>=10&&i<100)
{printf("2 位数\n");
printf("倒序 %d%d\n",i%10,i/10);
}
else if(i>=100&&i<1000)
{printf("3 位数\n");
n=i%10;
i=i/10;
m=i%10;
t=i/10;
printf("倒序 %d%d%d\n",n,m,t);
}
else if(i>=1000&&i<10000)
{printf("4 位数\n");
n=i%10;
i=i/10;
m=i%10;
i=i/10;
t=i%10;
w=i/10;
printf("倒序 %d%d%d%d