C语言问题,题目:输入一个5位数以内的正整数,要求输出这是个几位数?每一位分别是多少?

题目:输入一个5位数以内的正整数,要求输出这是个几位数?每一位分别是多少?
main()
{
long int a;
int b,c,d,e,f;
scanf("%ld",&a);
while(a>=1&&a<=99999)
{
if(a/10000>=1&&a/10000<10)
{
printf("this is 5 steps\n");
b=(int)(a/10000);
c=(int)((a-b*10000)/1000);
d=(int)((a-b*10000-c*1000)/100);
e=(int)((a-b*10000-c*1000-d*100)/10);
f=a-b*10000-c*1000-d*100-e*10;
printf("b=%d c=%d d=%d e=%d f=%d",b,c,d,e,f);break; }
if(a/1000>=1&&a/1000<10)
{
printf("this is 4 steps\n");
b=(int)(a/1000);
c=(int)((a-b*1000)/100);
d=(int)((a-b*1000-c*100)/10);
e=a-b*1000-c*100-d*10;
printf("b=%d c=%d d=%d e=%d",b,c,d,e); break; }
if(a/100>=1&&a/100<10)
{ printf("this is 3 steps\n");
b=(int)(a/100);
c=(int)((a-b*100)/10);
d= a-b*100-c*10;
printf("b=%d c=%d d=%d",b,c,d); break; }
if(a/10>=1&&a/10<10)
{ printf("this is 2 steps\n");
b=(int)(a/10);
c=a-b*10;
printf("b=%d c=%d",b,c); break; }
if(a>=1&&a<10);
{ printf("this is 1 step\n");
printf("a=%d",a); break; }
}
getch();
}
疑问是,输入40000以上的数就出错了,请指点!

第1个回答  2012-04-30
那个你写的太复杂了,那个int型是有取值范的,你可以试下long型
相似回答