第1个回答 推荐于2017-09-14
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=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;}
else 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; }
else 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; }
else 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; }
else if(a>=1&&a<10)
{ printf("this is 1 step\n");
printf("a=%d",a); break; }
}
getch();
}
这样就可以了。注意if 和else if 的区别本回答被提问者采纳
第2个回答 2012-04-30
这样写比较简单,而且输出格式和你一样
#include <stdio.h>
void main()
{
int n, l = 0; //l记录长度
int a[5]; //存放五位数
char ch;
scanf("%d", &n);
for (int i = 0; i < 5; i++)
{
a[i] = n % 10;
if (n > 0)
l++;
n /= 10;
} //将五位数一一截出并求出长度
printf("this is %d step\n", l);
if (l > 0)
printf("a=%d", a[l-1]); //第一位输出无空格
ch = 'a';
for (int i = l - 2; i >= 0; i--)
{
ch++; //ASCII码加一,'a' + 1 = 'b';
printf(" %c=%d", ch, a[i]); //以后输出前带空格
}
}
有看不懂的可以问我
第3个回答 2012-04-30
#include<stdio.h>
main()
{
int a;
int b,c,d,e,f;
scanf("%d",&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; }
}
getchar();
}
getch();改为getchar,加上头文件#include<stdio.h>
第4个回答 2012-04-30
#include<stdio.h>
#include<string.h>
void main()
{
char a[5];
int i;
printf("请输入一个正整数:\n");
gets(a);
printf("这是一个%d位数\n",strlen(a));
printf("各个位上的数为:\n");
for(i=0;i<strlen(a);i++)
printf("%d\t",a[i]-'0');
printf("\n");
}
如果你想求更多位数的话,直接把 char a[5],定义更大就可以了。