目录
题目
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
问题分析
方法一:基本方法(if语句)
分离出各位的数字,从最高位开始判断是否为零,例如万位数字为零就不是“五位数”,以此类推。倒序输出就比较“原始”了,(手动挡)手动倒序。
方法二 :使用数组
把分离出的各位数字存放到数组里(最前面的数字是高位的),然后倒序输出的时候就是把数组中的数字依次输出就OK了。
代码
方法一
#include<stdio.h>
//最基本的方法
int main()
{
int a, b, c, d, e, x;
printf("请输入不多于5位的正整数:");
scanf_s("%d", &x);
a = x / 10000; //分解出万位
b = x % 10000 / 1000; //分解出千位
c = x % 1000 / 100; //分解出百位
d = x % 100 / 10; //分解出十位
e = x % 10; //分解出个位
if (a != 0) { //若a不为0,则说明这个数有万位,则为五位数
printf("为 5 位数\n逆序为: %d %d %d %d %d\n", e, d, c, b, a);
}
else if (b != 0) {
printf("为 4 位数\n逆序为: %d %d %d %d\n", e, d, c, b);
}
else if (c != 0) {
printf("为 3 位数\n逆序为:%d %d %d\n", e, d, c);
}
else if (d != 0) {
printf("为 2 位数\n逆序为: %d %d\n", e, d);
}
else if (e != 0) {
printf("为 1 位数\n逆序为:%d\n", e);
}
}
方法二
#include<stdio.h>
//使用数组
int main()
{
int count=0;
int a,i=0;
char arr[10];
printf("请输入一个不多于5位的正整数:\n");
scanf_s("%d", &a);
while (a!=0)
{
arr[i] = a % 10;
a = a / 10;
i++;
}
printf("它是 %d 位数\n", i);
printf("逆序为:\n");
for (int j = 0;j < i;j++)
printf("%d", arr[j]);
printf("\n");
return 0;
}
测试结果
方法一