C语言完成给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
时间: 2024-11-15 07:33:19 浏览: 32
求给定正整数的位数和并逆序打印各位数
在C语言中,你可以通过以下几个步骤来完成这个任务:
1. **判断位数**:
首先,你需要检查输入的整数是否大于0,并且位数不超过5。可以借助除以10并取余的方式,循环5次(因为每除一次相当于去掉最后一位),如果结果不为0,则说明还有剩余的位数。
```c
int num, digit;
num = <用户输入的整数>;
digit = 0;
while (num > 0) {
digit++;
num /= 10;
}
```
此时,`digit`就是输入整数的位数。
2. **逆序打印每位数字**:
接下来,从低位开始,每次取出一位数字,然后打印出来。这也可以通过循环完成,将每一位乘以10的相应次幂,然后再对10取余来获取当前的数字。
```c
int reversed_num = num;
for (int i = digit - 1; i >= 0; i--) {
printf("%d", reversed_num % 10);
reversed_num /= 10;
}
printf("\n");
```
完整的函数示例如下:
```c
#include <stdio.h>
void reversePrint(int num) {
int digit, temp;
if (num <= 0 || num > 99999) {
printf("输入错误, 请输入1到99999之间的正整数.\n");
return;
}
digit = 0;
while (num > 0) {
digit++;
num /= 10;
}
reversed_num = num;
for (int i = digit - 1; i >= 0; i--) {
temp = reversed_num % 10;
printf("%d", temp);
reversed_num /= 10;
}
printf("\n");
}
int main() {
int input;
printf("请输入一个1到5位的正整数: ");
scanf("%d", &input);
reversePrint(input);
return 0;
}
```
阅读全文