用递归实现对任意一个非负十进制数打印输出与其等值的八进制数c语言
时间: 2024-10-28 16:09:52 浏览: 31
C语言用栈实现十进制转换为二进制的方法示例
5星 · 资源好评率100%
在 C 语言中,你可以使用递归来将一个非负十进制数转换成对应的八进制数并打印出来。下面是一个简单的示例函数 `decimal_to_octal`,它实现了这个功能:
```c
#include <stdio.h>
// 辅助函数,用于处理每一位数字
int convert(int n, int base) {
if (n < base) return n; // 当数字小于目标基数,直接返回
else {
return n % base + convert(n / base, base); // 否则,通过递归处理高一位
}
}
void print_octal(int decimal) {
printf("%o", decimal); // 使用%o直接打印八进制形式
if (decimal > 0) { // 如果还有剩余位需要处理
print_octal(convert(decimal, 8)); // 调用自身处理下一位
}
}
int main() {
int num;
printf("请输入一个非负十进制数:");
scanf("%d", &num);
printf("其等值的八进制数为:%o\n", num);
print_octal(num); // 对输入的数字进行转换并打印
return 0;
}
```
在这个程序中,`convert` 函数负责将十进制数递归地转换成八进制,而 `print_octal` 函数则是调用 `convert` 并打印结果。注意,当输入的十进制数为0时,不会进入递归循环。
阅读全文