十进制转换成任意进制,用C语言写
时间: 2024-11-28 17:28:26 浏览: 49
在C语言中,可以使用`itoa`函数或者自定义算法将十进制数转换为任意进制字符串。这里有一个简单的示例,展示如何使用`sprintf`函数配合整数除法和取余操作完成这个任务:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义函数,将十进制数转换为指定进制字符串
char* convertToBase(int decimal, int base) {
if (decimal == 0) {
return "0";
}
char result[33]; // 结果数组足够容纳32位数字及前导零
char* ptr = &result[32]; // 指针从数组末尾开始
do {
*ptr-- = '0' + decimal % base; // 取余并转换为字符
decimal /= base; // 除以当前基数
} while (decimal > 0);
// 添加前导零
for (; ptr != result; ++ptr) {
printf("%c", *ptr);
}
// 添加小数点和后缀
strcat(result, ".");
strcat(result, itoa(1, NULL, base)); // 将1转为base进制,得到后缀例如".2"、".13"
return result;
}
int main() {
int decimal = 42; // 待转换的十进制数
int base = 16; // 目标进制
printf("Decimal %d in base %d is: %s\n", decimal, base, convertToBase(decimal, base));
return 0;
}
```
运行上述代码,会输出 `Decimal 42 in base 16 is: 2A`。
阅读全文