用C语言编程:给一个不多于5位的正整数,要求如下:

1、求出它是几位数
2、分别输出每一位数字
3、按逆序输出各位数字,例如原数为321,应输出123
我是刚学C语言的,只讲到选择结构程序设计,就是用if语句,希望各位的回答不要太深奥哦~~~
#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);
printf("每一位数为:");
a=n/10000;
b=(int)(n-a*10000)/1000;
c=(int)(n-a*10000-b*1000)/100;
d=(int)(n-a*10000-b*1000-c*100)/10;
e=(int)(n-a*10000-b*1000-c*100-d*10);
switch(p);
{
case 5:printf("反向数为:%d%d%d%d%d\n",e,d,c,b,a);
case 4:printf("反向数为:%d%d%d%d\n",e,d,c,b);
case 3:printf("反向数为:%d%d%d\n",e,d,c);
case 2:printf("反向数为:%d%d\n",e,d);
case 1:printf("反向数为:%d\n",e);
break;
}
return 0;
}

这个是我自己写的,请各位高手看看对不对?告诉我错在哪?怎么改?在线等!

不对的原因,主要是if条件语句应该是用“==”而不是“=”,这是判断,不是赋值。其它的错误,scanf_s("%d",&a)改成scanf("%d",&a),printf用错了,printf打印应该是一个占位符对应一个要输出的内容,就是你代码中%d对应一个输出。

修改后的代码:

#include<stdio.h>

int main()

{

int a, b, c, d, e, f, w;

printf("输入一个不多于五位的整数:");

scanf("%d",&a);

//第一问,求出它是几位数

b = 10000 - a;

c = 1000 - a;

d = 100 - a;

e = 10 - a;

f = 0 - a;

while (a < 0 || a > 99999)

printf("输入错误,请重新输入\n");

if (b < 0)

{

printf("a是五位数\n");

w = 5;

}else if (c < 0){

printf("a是四位数\n");

w = 4;

}else if (d < 0){

printf("a是三位数\n");

w = 3;

}else if (e < 0){

printf("a是两位数\n");

w = 2;

}else if (f < 0){

printf("a是个位数\n");

w = 1;

}else

printf("输入错误,请重新输入\n");

//第二问,分别输出每一位数字

if (w == 5)

printf("%d %d %d %d %d\n", a / 10000, a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10);

if (w == 4)

printf("%d %d %d %d\n", a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10);

if (w == 3)

printf("%d %d %d\n", a / 100 % 10, a / 10 % 10, a % 10);

if (w == 2)

printf("%d %d\n", a / 10 % 10, a % 10);

if (w == 1)

printf("%d\n", a % 10);

//第三问,按逆序输出各位数字

if (w == 5)

printf("%d %d %d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10, a / 10000);

if (w == 4)

printf("%d %d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10);

if (w == 3)

printf("%d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10);

if (w == 2)

printf("%d %d\n", a % 10, a / 10 % 10);

if (w == 1)

printf("%d\n", a % 10);

}

修正后的代码执行如下:

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-12
这样就好了,最大错误是switch语句,因为当p<5时,case 5就没意义了,就会报错。
这题要用数组做的话会很简洁,可惜你们没学到,我们也是才学C语言,讲的比较快,呵呵。
能想到这方法这的很不容易,,居然循环都没用

#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*10000)/1000;
c=(int)(n-a*10000-b*1000)/100;
d=(int)(n-a*10000-b*1000-c*100)/10;
e=(int)(n-a*10000-b*1000-c*100-d*10);
printf("每一位数为:");
if(p==5)
{
printf("%d %d %d %d %d\n",a,b,c,d,e);
printf("反向数为:%d%d%d%d%d\n",e,d,c,b,a);
}
if(p==4)
{
printf("%d %d %d %d\n",b,c,d,e);
printf("反向数为:%d%d%d%d\n",e,d,c,b);
}
if(p==3)
{
printf("%d %d %d\n",c,d,e);
printf("反向数为:%d%d%d\n",e,d,c);
}
if(p==2)
{
printf("%d %d\n",d,e);
printf("反向数为:%d%d\n",e,d);
}
if(p==1)
{
printf("%d\n",e);
printf("反向数为:%d\n",e);
}
return 0;
}本回答被提问者和网友采纳
第2个回答  2011-11-07
/* Note:Your choice is C IDE */
#include"stdio.h"
void main()
{
int a,i,b,c,e,f,n;
scanf("%d",&n);
a=n/10000;
b=n%10000/1000;
c=n%10000%1000/100;
e=n%10000%1000%100/10;
f=n%10000%1000%100%10/1;
if(a>0)
{ printf("有五位数");printf("%d%d%d%d%d",f,e,c,b,a);}
else if(b>0)
{printf("%d%d%d%d",f,e,b,c);
printf("有四位数");}
else if(c>0)
{printf("有三位数");printf("%d%d%d",f,e,c);}
else if(e>0)
{printf("有两位数");printf("%d%d",f,e);}
else
{printf("有一位数");printf("%d",f);}
}这样才可以把各位数字分解出来,希望对你有帮助
第3个回答  2012-09-04
switch 语句 没错 ,换成这样就 可以了 (还有有一种用法 ,不过 会麻烦点) , 还有就是 要对 n 作 限制
#include<stdio.h>
int main()
{
int a,b,c,d,e,p,n;
scanf("%d",&n);
if (n < 100000 && n > 0)
{
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);
printf("每一位数为:");
a=n/10000;
b=(int)(n-a*10000)/1000;
c=(int)(n-a*10000-b*1000)/100;
d=(int)(n-a*10000-b*1000-c*100)/10;
e=(int)(n-a*10000-b*1000-c*100-d*10);
switch(p);
{
case 5:printf("反向数为:%d%d%d%d%d",a);
case 4:printf("反向数为:%d%d%d%d",b);
case 3:printf("反向数为:%d%d%d",c);
case 2:printf("反向数为:%d%d",d);
case 1:printf("反向数为:%d",e);
break;
}
}
return 0;
}
第4个回答  2011-10-23
1.
int x;//5位数
i=0;//求解
do
{x=x/10;i++}
while(x);
//i为所求
2.
int x;//5位数
do
{printf(%d,x%10);x=x/10;}
while(x);
3.上面输出的就是逆序的,先个位,再十位,。。。。

用C语言编程:给一个不多于5位的正整数,要求如下:
int main(){ int a, b, c, d, e, f, w;printf("输入一个不多于五位的整数:");scanf("%d",&a);\/\/第一问,求出它是几位数 b = 10000 - a;c = 1000 - a;d = 100 - a;e = 10 - a;f = 0 - a;while (a < 0 || a > 99999)printf("输入错误,请重新输入\\n")...

c语言编程:给一个不多于5位的正整数,要求(1)求出它是几位数(2)分别输 ...
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语言编程题 给一个不多于五位的正整数,要求: 1.求出它是几位数 2.分...
int main(){ unsigned int x=1, i=0;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(...

c语言 给一个不多于5位的正整数 用C语言写出
int main(){ int a,b,c,d;int count = 1;printf("请输入一个不多于5位的正整数:");scanf("%d",&a);c = a;printf("逆序:\\n");while(c \/ 10 != 0){ count++;b = c % 10;printf("%d\\n",b);c = c \/ 10;} b = c % 10;printf("%d\\n",b);printf("位数是:%d...

c语言编程:给一个不多于五位的正整数,用if-else语句求出它是几位数
{ int num; printf("请输入一个不大于5位数的正整数:");scanf("%d",&num);if(num>99999||num<1)printf("您的输入有误!\\n");else { if(num<10)printf("您输入的是1位数!\\n");else if(num<100)printf("您输入的是2位数!\\n");else if(num<1000)printf("您输入的是3位数!\\...

输入一个不多于5位的正整数,要求: (1)求它是几位数;(2)逆序打印出各位...
\/*给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。*\/ include <stdio.h> int main(){ int a[5],num,k,i=0;printf("请输入一个不多于五位的正整数:");scanf("%d",&num);if(num<=0)printf("请输入一个正整数");while(num>0){ k=num%10;a[i]=...

C语言编程:给一个不多于5位的正整数,
不多于五位的正整数,包括一位数到五位数,所有的数值。即[1,99999].以下代码,功能为获取一个不多于五位的正整数并输出。int main(){ int n; srand(time(NULL)); printf("%d", rand()%99999+1);}

C语言: 给一个不多于5为的正整数 要求:1.求出它是几位数 2.分别打印...
printf("这是一个%d位数!\\n",m);} return 0;} 2.分别打印出每一位数字 include <stdio.h> int main(){ int n,m;printf("请输入一个正整数:");scanf("%d",&n);if(n<=0){ printf("输入错误!\\n");} else { m=10000;while(m>0){ if((n\/m)!=0){ 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位的正整数,要求编程实现(1)求它是几位数?(2...
void main(){ long int a;int n,b,c,d,e,f;printf("\\n请输入一个整数(0~99999):");scanf("%d",&a);if(a>9999)n=5;else if(a>999)n=4;else if(a>99)n=3;else if(a>9)n=2;else n=1;printf("\\n这个数的位数=%d",n);f=a\/10000;e=a%10000\/1000;d=a%10000%1000...

相似回答