给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序构造新数并打印。 要求使用函数实现功能,在主函数中调用,输入参数由键盘输入。要求用C语言写
时间: 2023-05-29 15:03:54 浏览: 117
求给定正整数的位数和并逆序打印各位数
```c
#include<stdio.h>
int reverse(int num, int n); // 声明reverse函数
int main(){
int num, n = 0; // num为输入的正整数,n为位数
printf("请输入一个不多于5位的正整数:");
scanf("%d", &num);
int temp = num; // 用temp保存输入的正整数,以便后面使用
while(temp != 0){ // 计算输入正整数的位数
n++;
temp /= 10;
}
printf("输入的正整数是%d位数\n", n);
printf("逆序构造的新数是%d\n", reverse(num, n)); // 调用reverse函数,输出逆序构造的新数
return 0;
}
int reverse(int num, int n){
int new_num = 0; // 保存逆序构造的新数
while(num != 0){
new_num = new_num * 10 + num % 10; // 将num的个位数放到new_num的最高位上
num /= 10; // num去掉个位数
}
// 对于不足5位的数,需要根据位数补上0
if(n < 5){
int i;
for(i = 0; i < 5 - n; i++){
new_num *= 10;
}
}
return new_num;
}
```
阅读全文