c语言实现任意进制转换
时间: 2023-09-29 10:03:16 浏览: 104
以下是C语言实现任意进制转换的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* convert(int num, int base) {
char* result = (char*) malloc(sizeof(char) * 100);
int i = 0;
char symbol[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (num == 0) {
result[i++] = '0';
result[i] = '\0';
return result;
}
while (num > 0) {
result[i++] = symbol[num % base];
num /= base;
}
result[i] = '\0';
// Reverse the string
int len = strlen(result);
for (int j = 0; j < len / 2; j++) {
char temp = result[j];
result[j] = result[len - j - 1];
result[len - j - 1] = temp;
}
return result;
}
int main() {
int num, base;
printf("Enter a number: ");
scanf("%d", &num);
printf("Enter the base (2-36): ");
scanf("%d", &base);
if (base < 2 || base > 36) {
printf("Invalid base!");
return 0;
}
char* result = convert(num, base);
printf("Result: %s", result);
free(result);
return 0;
}
```
该代码中,`convert`函数接受一个十进制整数和一个目标进制,返回一个对应的字符串。在函数中,我们使用一个字符数组`symbol`来存储各个进制下的符号。当输入的整数为0时,直接返回字符串“0”。当输入的整数大于0时,我们不断地取模并将余数对应的符号加入结果字符串中,直到整数变为0。最后,我们需要将结果字符串反转,因为我们是从低位到高位依次添加符号的。
在`main`函数中,我们从用户输入中获取需要转换的十进制整数和目标进制。如果目标进制不在2-36之间,则输出“Invalid base!”,程序结束。否则,我们调用`convert`函数得到结果字符串,并输出到屏幕上。最后,我们需要释放结果字符串所占用的内存。
阅读全文