用C语言编写一个递归函数,实现将任意的十进制正整数转化为八进制数
时间: 2024-01-24 13:17:40 浏览: 175
以下是用C语言编写的递归函数,实现将任意的十进制正整数转化为八进制数:
```c
#include <stdio.h>
void decToOct(int num) {
if(num == 0) {
return;
} else {
decToOct(num / 8);
printf("%d", num % 8);
}
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Octal equivalent: ");
decToOct(decimal);
return 0;
}
```
在这个程序中,我们定义了一个递归函数 `decToOct`,它接收一个十进制正整数 `num` 作为参数,并将其转换为八进制数。
递归函数的基本情况是当输入的数为 0 时,递归结束并返回。否则,函数会继续递归调用自身,传递 `num / 8` 作为参数,并输出 `num % 8` 的余数。这样,每次递归调用都会输出一位八进制数,直到最后一次递归结束。
在 `main` 函数中,我们首先提示用户输入一个十进制正整数,并读取输入。然后,我们调用 `decToOct` 函数,并输出转换后的八进制数。
相关问题
用C语言编写一个递归函数,实现将任意的十进制正整数转化为八进制数,越简单越好
下面是一个简单的递归函数实现:
```c
void dec2oct(int n)
{
if (n == 0) {
return;
}
dec2oct(n/8);
printf("%d", n%8);
}
```
调用该函数,传入一个十进制正整数,即可输出对应的八进制数:
```c
int main()
{
int n = 123;
dec2oct(n);
printf("\n");
return 0;
}
```
输出结果为:
```
173
```
编写一个递归函数,将一个十进制正整数转换成八进制形式输出。
在C语言中,你可以编写一个递归函数来将十进制正整数转换为八进制形式。以下是使用递归的一个简单示例:
```c
#include <stdio.h>
#include <string.h> // 用于字符串操作
// 递归函数,将十进制数转换为八进制并返回结果字符串
char* decimal_to_octal(int num, char* octal_string, int base) {
// 基本情况:如果数字为0,则返回字符串
if (num == 0) {
octal_string[0] = '\0'; // 添加空字符作为字符串结束标记
return octal_string;
}
// 将当前位的值添加到字符串,并更新剩余数值
octal_string[strlen(octal_string)] = num % base + '0';
octal_string[strlen(octal_string) + 1] = '\0';
// 递归调用,处理剩下的高位
return decimal_to_octal(num / base, octal_string, base);
}
int main() {
int decimal_num;
printf("请输入一个十进制正整数:");
scanf("%d", &decimal_num);
// 分配内存存储八进制字符串
size_t length = (decimal_num > 0 ? sizeof(int) * 8 : 1); // 至少需要一个字符保存0
char* octal_result = (char*) malloc(length);
memset(octal_result, ' ', length); // 初始化为空格,防止直接显示0
// 调用递归函数并将结果打印出来
octal_result = decimal_to_octal(decimal_num, octal_result, 8);
printf("八进制表示: %s\n", octal_result);
free(octal_result); // 释放内存
return 0;
}
```
当你运行这个程序时,它会提示用户输入一个十进制数,然后输出其对应的八进制形式。
阅读全文