从键盘输入一个整数,判断该数是几位数,逆向输出该数,用递归的形式写出来。
时间: 2023-04-26 14:03:55 浏览: 267
首先,我们可以通过循环来判断一个整数的位数,具体方法是不断将该数除以10,直到商为,每除一次,位数加1。代码如下:
```
int num, count = ;
scanf("%d", &num);
while(num != ){
num /= 10;
count++;
}
printf("该数是%d位数\n", count);
```
接下来,我们需要逆向输出该数。可以通过不断取该数的个位数,然后将该数除以10,直到该数为,每次取到的个位数依次输出即可。代码如下:
```
int num, count = ;
scanf("%d", &num);
while(num != ){
int digit = num % 10;
printf("%d", digit);
num /= 10;
count++;
}
printf("\n");
```
最后,我们需要用递归的形式来实现上述功能。递归的思路是将一个问题分解成更小的同类问题,直到问题的规模足够小,可以直接求解。对于本题,我们可以将一个整数的逆向输出问题分解成将该数除以10后的子问题,直到该数为,然后再将每个子问题的个位数输出即可。代码如下:
```
void reverse(int num){
if(num == ){
return;
}
int digit = num % 10;
printf("%d", digit);
reverse(num / 10);
}
```
完整代码如下:
```
#include <stdio.h>
void reverse(int num){
if(num == ){
return;
}
int digit = num % 10;
printf("%d", digit);
reverse(num / 10);
}
int main(){
int num, count = ;
scanf("%d", &num);
while(num != ){
num /= 10;
count++;
}
printf("该数是%d位数\n", count);
reverse(num);
printf("\n");
return ;
}
```
阅读全文