一道题 求更好的解决方法 小白问题
题目:给一个不多于五位的正整数,要求:
1 求出它是几位数
2 分别输出每一位数字
3按照逆序输出各位数字,例如原数为321,应该输出123
下面是我写的 可我觉得还得有简单的方法。目前我学完了 选择结构设计。就是if 和 switch 语句。就用我学过的 大家能帮我想个简单的方法吗?
我的代码中 a,b,c,d,e 分别为个位 十位 百位 千位 万位
p,q,t 分别 多位数取出的余数 作为中间变量
有 z 位数
程序代码:
#include <stdio.h> #include <conio.h> void main() { int x,a,b,c,d,e,p,q,t,z; scanf("%d",&x); if (x<10) { z=1; a=x; printf("这是个%d位数\n",z); printf("个位%d\n",a); printf("逆序为%d\n",a); } else if (x<100) { z=2; a=x%10; b=x/10; printf("这是个%d位数\n",z); printf("十位%d,个位%d\n",b,a); printf("逆序为%d%d\n",a,b); } else if (x<1000) { z=3; c=x/100; p=x%100; a=p%10; b=p/10; printf("这是个%d位数\n",z); printf("百位%d,十位%d,个位%d\n",c,b,a); printf("逆序为%d%d%d\n",a,b,c); } else if (x<10000) { z=4; d=x/1000; q=x%1000; c=q/100; p=q%100; a=p%10; b=p/10; printf("这是个%d位数\n",z); printf("千位%d,百位%d,十位%d,个位%d\n",d,c,b,a); printf("逆序为%d%d%d%d\n",a,b,c,d); } else if (x<100000) { z=5; e=x/10000; t=x%10000; d=t/1000; q=t%1000; c=q/100; p=q%100; a=p%10; b=p/10; printf("这是个%d位数\n",z); printf("万位%d,千位%d,百位%d,十位%d,个位%d\n",e,d,c,b,a); printf("逆序为%d%d%d%d%d\n",a,b,c,d,e); } getch(); }