数的分析与变换

需求:给一个不多于5位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为321,应输出123。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<stdio.h>
int main(){
int a;//声明变量a为整数int类型
scanf("%d",&a);//扫描输入值并赋予a
if(a>=10000){//判断a是否为五位数
int b,c,d,e,f;
b=a/10000;
c=(a-b*10000)/1000;
d=(a-b*10000-c*1000)/100;
e=(a-b*10000-c*1000-d*100)/10;
f=(a-b*10000-c*1000-d*100-e*10)/1;
//声明万位千位百位十位个位分别为b,c,d,e,f
//利用小数省略输出各位值
printf("该数为五位数");//输出位数
printf("万位%d千位%d百位%d十位%d个位%d",b,c,d,e,f);//输出各位值
printf("%d%d%d%d%d",f,e,d,c,b);//逆序输出各位数字
}else if(a>=1000){//判断a是否为四位数
int c,d,e,f;
c=a/1000;
d=(a-c*1000)/100;
e=(a-c*1000-d*100)/10;
f=(a-c*1000-d*100-e*10)/1;
//声明千位百位十位个位分别为c,d,e,f
//利用小数省略输出各位值
printf("该数为四位数");//输出位数
printf("千位%d百位%d十位%d个位%d",c,d,e,f);//输出各位值
printf("%d%d%d%d",f,e,d,c);//逆序输出各位数字
}else if(a>=100){//判断a是否为三位数
int d,e,f;
d=a/100;
e=(a-d*100)/10;
f=(a-d*100-e*10)/1;
//声明百位十位个位分别为d,e,f
//利用小数省略输出各位值
printf("该数为三位数");//输出位数
printf("百位%d十位%d个位%d",d,e,f);//输出各位值
printf("%d%d%d",f,e,d);//逆序输出各位数字
}else if(a>=10){//判断a是否为二位数
int e,f;
e=a/10;
f=(a-e*10)/1;
//声明十位个位分别为e,f
//利用小数省略输出各位值
printf("该数为二位数");//输出位数
printf("十位%d个位%d",e,f);//输出各位值
printf("%d%d",f,e);//逆序输出各位数字
}else if(a>=1){//判断a是否为一位数
int f;
f=a/1;
//声明个位分别为f
//利用小数省略输出各位值
printf("该数为一位数");//输出位数
printf("个位%d",f);//输出各位值
printf("%d",f);//逆序输出各位数字
}
}