题目:
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字
输入:
一个不大于5位的数字
输出:
输出三行, 第一行 位数, 第二行 用空格分开的每个数字,注意最后一个数字后没有空格, 第三行 按逆序输出这个数
样例输入:
12345
样例输出:
5
1 2 3 4 5
54321
代码如下:
#include<stdio.h>
int main()
{
int a,b,c,d,e,k,i;
scanf("%d",&k);
a=k/10000;
b=k%10000/1000;
c=k%1000/100;
d=k%100/10;
e=k%10;
for(i=0;k!=0;i++)
{
k=k/10;
}
switch(i)
{
case 1:printf("1\n%d\n%d",e,e);break;
case 2:printf("2\n%d %d\n%d%d",d,e,e,d);break;
case 3:printf("3\n%d %d %d\n%d%d%d",c,d,e,e,d,c);break;
case 4:printf("4\n%d %d %d %d\n%d%d%d%d",b,c,d,e,e,d,c,b);break;
case 5:printf("5\n%d %d %d %d %d\n%d%d%d%d%d",a,b,c,d,e,e,d,c,b,a);break;
}
}
关于这个题,看了很多题解,都没有用switch做的,我个人认为这样便于理解,逻辑简单,且位数只在5位以内,不至于写很多种情况,所以采用了此方法。
注意:
- for循环的正确使用,此题中,用for循环进行了位数计数,两行带过;
- 在求每一位的数值时,注意求余和除法不能错,第几位应该除几余几要搞清楚;