输入一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

时间:2022-07-23 11:03:25

繁琐的方法:

<span style="font-size:24px;">    int a  = 0;
printf("输入一个不多于5位的正整数:");
scanf("%d", &a );
printf("%d", a);
int x = 0,y = 0, z = 0, m = 0, n = 0;
if (a / 10000 != 0) {
printf("是一个五位数\n");
x = a / 10000 ;//求万位
y = a % 10000 / 1000;//求千位
z = a % 10000 % 1000 / 100;//求百位
m = a % 10000 % 1000 % 100 / 10;//求十位
n = a % 10000 % 1000 % 100 % 10;//求个位
printf("逆序打印为:%d%d%d%d%d",n , m , z, y ,x);
}else if(a / 1000 !=0){
printf("是一个四位数\n");
y = a / 1000;//求千位
z = a % 1000 / 100;//求百位
m = a % 10000 % 1000 % 100 / 10;//求十位
n = a % 10000 % 1000 % 100 % 10;//求个位
printf("逆序打印为:%d%d%d%d",n , m , z, y);
}else if(a / 100 !=0){
printf("是一个三位数\n");
z = a / 100;//求百位
m = a % 100 / 10;//求十位
n = a % 10;//求个位
printf("逆序打印为:%d%d%d",n , m , z);
}else if(a / 10 !=0){
printf("是一个两位数\n");
m = a % 100 / 10;//求十位
n = a % 100 % 10;//求个位
printf("逆序打印为:%d%d",n , m);
}else{
printf("是一个一位数\n");
n = a % 10;//求个位
printf("逆序打印为:%d", n);
}
</span>

简化后的方法,如下:

<pre name="code" class="cpp"><span style="font-size:24px;">int number = 0, a  = 0, count = 0;
printf("请输入一个数字");
scanf("%d", &number);
while(number > 0)//输入的数
{
a = number % 10;//求最后一位数,也就是个位上的数
++count;//没执行一次,count自动增加
printf("%d ", a);//执行第一遍,打印个位上的数,第二遍,打印十位上的数
number = number / 10;//求输入的数最大位上的数,直到number为0.
}
printf("\n这个数是%d位数", count);//输出count也就是输入数的位数
</span>