C语言实现:十进制输入,以十六进制数出。 (函数递归完成)
时间: 2024-01-22 07:20:40 浏览: 29
可以使用递归方法将十进制数转换为十六进制数,具体实现如下:
```c
#include <stdio.h>
void dec2hex(int n)
{
if (n == 0) {
return;
}
else {
dec2hex(n / 16);
int remainder = n % 16;
if (remainder < 10) {
printf("%d", remainder);
}
else {
printf("%c", 'A' + remainder - 10);
}
}
}
int main()
{
int n;
printf("请输入一个十进制数:");
scanf("%d", &n);
printf("对应的十六进制数为:");
dec2hex(n);
printf("\n");
return 0;
}
```
在递归函数 `dec2hex()` 中,如果当前的数为 0,递归结束;否则,先递归处理 n/16,然后得到 n%16 的余数,如果余数小于 10,则直接输出;否则,将余数转换为字母输出。在主函数中,先输入一个十进制数,然后调用 `dec2hex()` 函数将其转换为十六进制数并输出。
相关问题
C语言实现递归十进制转十六进制
下面是一个用 C 语言实现递归十进制转十六进制的示例代码:
```c
#include <stdio.h>
void convert(int num)
{
int rem = num % 16;
if (num == 0) {
return;
}
convert(num / 16);
if (rem < 10) {
printf("%d", rem);
} else {
printf("%c", rem - 10 + 'A');
}
}
int main()
{
int num;
printf("Enter a decimal number: ");
scanf("%d", &num);
printf("Hexadecimal equivalent: ");
if (num == 0) {
printf("0");
} else {
convert(num);
}
printf("\n");
return 0;
}
```
该程序通过递归的方式将输入的十进制数转换为十六进制,并输出结果。程序首先计算出当前数除以 16 的余数,然后递归调用 convert 函数,将当前数除以 16 的商作为参数传递给下一次递归调用。当当前数为 0 时,递归终止,程序开始输出十六进制数。如果当前数除以 16 的余数小于 10,则直接输出该余数;否则,将该余数转换为相应的十六进制字符后输出。
C语言递归法完成十进制与十六进制的转换
以下是一个简单的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'用于表示数字。