不多于5位的正整数,求出它是几位数。给一个不多于5位的正整数,要求: 求出它是几位数。 分别打印出每一位数字。 按逆序打印出各位数字。例如原数为321,应输出123。用c语言实现
时间: 2025-03-16 13:10:23 浏览: 34
### C语言实现计算最多五位正整数的位数、逐位输出及其逆序
以下是完整的解决方案,能够满足题目中的需求:
#### 实现代码
```c
#include <stdio.h>
void reverseAndPrint(int number) {
int originalNumber = number;
int count = 0; // 记录数字的位数
int digits[5]; // 存储每一位上的数字
while (number != 0) { // 循环提取每一位数字
digits[count] = number % 10; // 提取当前最低位
number /= 10; // 去掉最低位
count++; // 更新计数器
}
printf("%d 是一个%d位数。\n", originalNumber, count);
for (int i = count - 1; i >= 0; i--) { // 正向打印每一位
if (i == count - 1) {
printf("最高位是%d,", digits[i]);
} else if (i == 0) {
printf("最低位是%d.", digits[i]);
} else {
printf("第%d位是%d,", count - i, digits[i]);
}
}
printf("\n该数逆序为:");
for (int i = 0; i < count; i++) { // 打印逆序后的数字
printf("%d", digits[i]);
}
printf("\n");
}
int main() {
int num;
printf("请输入一个不超过5位的正整数:");
scanf("%d", &num);
if (num <= 99999 && num > 0) { // 验证输入范围是否合法
reverseAndPrint(num); // 调用函数处理逻辑
} else {
printf("输入错误!请输入一个有效的不超过5位的正整数。\n");
}
return 0;
}
```
---
#### 功能说明
上述代码实现了以下几个功能:
1. **判断位数**
使用 `while` 循环不断去除原数的最低位,直到剩余部分为零为止。每次循环都会记录一位数字到数组中,并更新总位数。
2. **逐位输出**
利用存储在数组中的数据,按照从高到低的顺序依次输出各位数字[^1]。
3. **逆序输出**
数组本身已经保存了逆序的结果,在最后通过简单的遍历即可完成逆序输出[^2]。
---
#### 输出示例
假设用户输入的是 `412`,运行结果如下所示:
```
请输入一个不超过5位的正整数:412
412 是一个3位数。
最高位是4,第二位是1,最低位是2.
该数逆序为:214
```
---
#### 注意事项
- 输入验证非常重要,需确保用户的输入是一个有效且不超过五位的正整数。
- 如果需要支持更大的数字或者负数,则需要调整算法逻辑和变量类型。
---
阅读全文
相关推荐


















