C语言任务:请定义一个递归函数 void print_digits_desc(int n),该函数接收一个正整数参数并按从高到低的顺序输出该整数的每位数字。
时间: 2024-11-13 15:20:30 浏览: 25
在C语言中,我们可以定义一个名为`print_digits_desc`的递归函数,用于按照从高位到低位的顺序打印一个整数的每一位。这里是一个简单的实现:
```c
#include <stdio.h>
// 递归函数
void print_digits_desc(int n, int pos = -1) {
// 如果位置超过数字位数,结束递归
if (pos == -1) {
return;
}
// 获取当前位的值
int digit = n % 10;
// 打印当前位
printf("%d", digit);
// 继续递归处理下一位
print_digits_desc(n / 10, pos + 1);
}
int main() {
int num;
printf("请输入一个正整数: ");
scanf("%d", &num);
print_digits_desc(num);
printf("\n"); // 结束行
return 0;
}
```
在这个函数中,我们首先检查位置是否已经到达了数字的最后一位(即位置超过了位数),如果是,则结束递归。接着获取当前位的数值,然后打印它,再将剩余的部分传递给下一次递归,将位置加一。
相关问题
C语言本关任务:请定义一个递归函数 void print_digits_desc(int n),该函数接收一个正整数参数并按从高到低的顺序输出该整数的每位数字。
在C语言中,你可以定义一个递归函数`print_digits_desc`来实现这个需求。递归是一种函数调用自己的方法,对于每个输入,我们先处理最高位的数字,然后对剩下的部分继续调用自身。以下是函数的基本实现:
```c
#include <stdio.h>
// 定义递归函数
void print_digits_desc(int n) {
// 基线条件:当n小于0时结束递归
if (n == 0) {
return;
}
// 输出当前高位数字
printf("%d", n % 10);
// 对剩余的高位递归调用
print_digits_desc(n / 10);
}
int main() {
int num = 12345; // 测试输入任意正整数
print_digits_desc(num);
return 0;
}
```
在这个函数中,我们通过取模操作 `% 10` 可以得到当前位的数字,然后用整除 `n / 10` 将问题规模减小到下一位。每次递归都会先打印最低有效位,直到整个数字都被处理完。
阅读全文