C语言递归法完成十进制与十六进制的转换
时间: 2023-06-20 21:08:11 浏览: 108
以下是一个简单的C语言递归函数,用于将十进制数转换为十六进制数:
```c
#include <stdio.h>
void decToHex(int num) {
if (num/16 == 0) {
printf("%c", num%16 < 10 ? num%16 + '0' : num%16 - 10 + 'A');
return;
}
decToHex(num/16);
printf("%c", num%16 < 10 ? num%16 + '0' : num%16 - 10 + 'A');
}
int main() {
int num;
printf("Enter a decimal number: ");
scanf("%d", &num);
printf("Hexadecimal equivalent: ");
decToHex(num);
printf("\n");
return 0;
}
```
该函数递归地将给定的十进制数除以16,直到商为0。在每次递归的过程中,将余数转换为十六进制数并打印。注意,当余数小于10时,字符'0'到'9'用于表示数字,当余数大于等于10时,字符'A'到'F'用于表示数字。
相关问题
c语言用递归法求进制转换
在C语言中,递归法可以用于将十进制数转换成其他进制(如二进制、八进制或十六进制)。递归的主要思路是将大数值分解为较小的部分,直到每个部分变成单一的位值。下面是一个简单的示例,展示如何将十进制转换为二进制:
```c
#include <stdio.h>
// 递归函数,将十进制转二进制
void dec_to_bin(int num, int base) {
if (num == 0) { // 基础情况:当num变为0时,返回空字符串表示结束
printf("");
} else {
// 计算当前位的值,并添加到结果前
printf("%d", num % base);
// 递归处理剩余位
dec_to_bin(num / base, base);
}
}
int main() {
int decimal = 42; // 需要转换的十进制数
char bin[64]; // 存储二进制结果的数组
// 调用函数并获取结果
sprintf(bin, "%d", decimal); // 先用sprintf保存原始十进制结果
dec_to_bin(stoi(bin), 2); // 转换为二进制并输出
printf("\n%d in binary is %s\n", decimal, bin);
return 0;
}
```
在这个例子中,`dec_to_bin` 函数会一直调用自身,每次减少输入数字 `num` 的大小,直到其变为0,然后逐次输出对应的二进制位。
c语言递归法求进制转换
在C语言中,递归法可以用于将十进制数转换为其他进制数,比如常见的二进制、八进制或十六进制。递归的基本思想是将大问题分解成更小的子问题,直到问题简化到可以直接求解的基础情况。
下面是一个简单的例子,展示如何使用递归将一个十进制数转换为二进制:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
void decToBinary(int n, char binary[50]);
int main() {
int decimal = 42;
char binary[50];
// 调用函数并打印结果
decToBinary(decimal, binary);
printf("十进制 %d 转换成二进制是 %s\n", decimal, binary);
return 0;
}
// 递归函数 decToBinary
void decToBinary(int n, char binary[50]) {
if (n == 0) { // 当数字变为0,结束递归
binary[0] = '\0'; // 终止字符串
return;
}
binary[strlen(binary)] = '0' + n % 2; // 将当前位添加到结果
decToBinary(n / 2, binary); // 递归处理下一位
}
```
在这个例子中,`decToBinary`函数会一直调用自身,每次减半输入的十进制数,并记录每一位的二进制值。当十进制数变为0时,递归停止,最终得到的`binary`数组就是转换后的二进制表示。
阅读全文