用c语言编写把十进制正整数转换为S进制(S=2,8,16)数输出的递归函数,在main函数中调用这个函数并输出结果。
时间: 2024-11-29 11:37:56 浏览: 2
进制转换 把一个任意的十进制正整数 N 转换成 d 进制数。 N 是一个正整数,d 是一个大于 1 小于 10 的整数,二者均由用户输入,且两数字用换行分隔。
在C语言中,你可以编写一个递归函数来将十进制正整数转换为二进制、八进制或十六进制。以下是三种情况的示例:
1. 十进制转二进制(bin)
```c
#include <stdio.h>
#include <string.h>
void dec_to_bin(int num, int base, char *result) {
if (num == 0) {
result[strlen(result)] = '\0';
printf("%s\n", result);
} else {
result[strlen(result)] = '0' + num % base;
dec_to_bin(num / base, base, result);
}
}
int main() {
int decimal_num = 42; // 示例数字
char bin[32]; // 存放结果的空间,假设最大位数不超过31位
dec_to_bin(decimal_num, 2, bin);
return 0;
}
```
2. 十进制转八进制(oct)
```c
void dec_to_oct(int num, int base, char *result) {
if (num == 0) {
result[strlen(result)] = '\0';
printf("%s\n", result);
} else {
result[strlen(result)] = '0' + num % base;
dec_to_oct(num / base, base, result);
}
}
int main() {
int decimal_num = 42; // 示例数字
char octal[11]; // 八进制最多9位
dec_to_oct(decimal_num, 8, octal);
return 0;
}
```
3. 十进制转十六进制(hex)
```c
void dec_to_hex(int num, int base, char *result) {
const char hex_digits[] = "0123456789ABCDEF";
if (num == 0) {
result[strlen(result)] = '\0';
printf("%s\n", result);
} else {
result[strlen(result)] = hex_digits[num % base];
dec_to_hex(num / base, base, result);
}
}
int main() {
int decimal_num = 42; // 示例数字
char hexadecimal[9]; // 十六进制最多两位(包括前导的0x)
dec_to_hex(decimal_num, 16, hexadecimal);
return 0;
}
```
阅读全文