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 a[100]; /*一百位的都行
while(n)
{
a[len]=n%10;
len++;
n/=10;

}
要想节省空间还可以用动态分配内存
第2个回答  2012-04-30
#include <stdio.h>
#include <string.h>
void main()
{
int num, i = 0;
char c[5];
scanf("%d", &num);

while(num > 0)
{
c[i++] = num % 10 + 48;
num /= 10;
}

printf("this is %d step\nnum = ", i);

for (int j = i - 1; j >= 0; j--)
printf("%c", c[j]);

printf("\n");
}
第3个回答  2012-05-03
if(a>0)
{if((a/10000)>=1&&(a/10000)<10)
......}
getchar();
第4个回答  2012-05-03
这题楼主有点小题大做了。。。
第5个回答  2012-04-30
呃,楼主实在是。。。设个count,扫描数组,count++,依次print出扫描到的每一个值不就可以了。。。。

c语言输入一个不多于5位正整数要求:求出它是几位数;分别打印出每一位...
include <stdio.h> int main(void){ long int x;int y,i=1;printf("请输入一个不超过100000的整数:"); \/\/ <---请把,x去掉 scanf("%ld",&x);if (x>99999||x<1) printf("你所输入的数据超出计算范围\\n");else { while (x!=0) \/\/ <---请把 do 去掉 { y=x%10;printf("...

c语言给一个不多于5位数的正整数,求出他是几位数,分别输出每一位数字...
include<stdio.h>int main(){ int a,b,c,d,e,p,n; scanf("%d",&n); if (n>9999) p=5; else if(n>999) p=4; else if(n>99) p=3; else if(n>9) p=2; else p=1; printf("位数:%d\\n",p); a=n\/10000; b=(int)(n-a...

C语言: 给一个不多于5为的正整数 要求:1.求出它是几位数 2.分别打印...
int n,m;printf("请输入一个正整数:");scanf("%d",&n);if(n<=0){ printf("输入错误!\\n");} else { m=0;while(n>0){ m++;n=n\/10;} printf("这是一个%d位数!\\n",m);} return 0;} 2.分别打印出每一位数字 include <stdio.h> int main(){ int n,m;printf("请...

C语言编程题 给一个不多于五位的正整数,要求: 1.求出它是几位数 2.分...
unsigned char c[5]={0};while(1){ printf("输入正整数x(不超过5位):");scanf("%u",&x);if(x\/100000){ printf("超过范围!\\n");continue;} i=0;do { c[i++]=x%10;}while(x \/= 10);printf("%d位数\\n",i);while(i >0)printf("%d ",c[--i]);putchar('\\n');} ...

c语言编程:给一个不多于5位的正整数,要求(1)求出它是几位数(2)分别输 ...
int main(){int n;int count=0,i,a[5];printf ("输入一个不多于5位正整数(0~99999):\\n");scanf("%d",&n);if (n<=0 || n>=100000){printf ("输入的数不合法\\n");}else{while(1){a[count]=n%10;n=n\/10;if(n==0){break;}count++;}printf("位数:%d\\n正序:",...

c语言编程序 给一个不多于5位数的正整数,要求: 1:求出它是几位数; 2...
先 定义一个数组 a[5]初值 a[5]的各个数都等于-1;然后 对于你输入的数num;p=num;i=0;\/\/主要程序 while(p>0){ a=[i]=p%10; \/\/对p取余 p=p\/10;i++;} 输出 几位数:printf("%d",i);逆序输出 数字:for(int j =0;j...

设计一个C语言程序:给一个不多于5位的正整数,要求:求出它是几位数,分 ...
return n > 0 ? 1 + Digit(n\/10) : 0;} void rprint(int n)C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨...

C语言:输入一个不多于5位的正整数,求它是几位数。要求:将判断一个数...
include<stdio.h>#define N 5int main(){ int len(int x); int i,x; for(i=0;i<N;i++){ scanf("%d",&x); printf("The length of %d is %d\\n",x,len(x)); } return 0;}int len(int x){ int ans=0; while(x){ ans++; x\/=10; ...

C语言编程,任意输入一个五位正整数,逆序输出每一位上的数 如输入54321...
\/(int) 结果为int 2: 待执行ser函数后,输出结果个位数 12345 % 10 = 5 3: 第二次执行ser函数...类比步骤1 4: 待递归执行ser函数,类比步骤2,输出十位个数 1234 % 10 = 4 5: 类比步骤1 6: 类比步骤2,输出百位个数 123 % 10 = 3 7: 类比步骤1 8: 类比步骤2,输出千位 12 %...

输入一个不多于5位的正整数,求出它是个几位数,C语言设计
120是3位数。23 23是2位数。2234565 2234565是7位数。q Press any key to continue \/ include <stdio.h>int main() {unsigned num,digits,t;while(scanf("%u",&num) == 1) {digits = 0;t = num;if(t == 0) digits = 1;else {while(t) {t \/= 10;++digits;}}printf("%u是%d...

相似回答