用c语言要求:任意输入一个十进制整数及需要转换的数字进制( Eg .二进制八进制),并最终输出所转换进制的最终数字(提升:可考虑复杂情形,如负数、小数情形的转换) 如输入10,2输出的结果是1010
时间: 2024-03-06 19:46:21 浏览: 18
好的,下面是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *dec_to_base(int num, int base) { // 定义进制转换函数
char *buf = (char *)malloc(32 * sizeof(char)); // 申请足够大的内存空间
int i = 0;
while (num > 0) {
int rem = num % base;
if (rem < 10) {
buf[i++] = rem + '0'; // 将数字转换为字符
} else {
buf[i++] = rem - 10 + 'A'; // 将数字转换为大写字母
}
num /= base;
}
buf[i] = '\0'; // 添加字符串结束标志
strrev(buf); // 翻转字符串
return buf;
}
int main() {
int num, base;
printf("请输入一个十进制整数:");
scanf("%d", &num);
printf("请输入需要转换的数字进制:");
scanf("%d", &base);
char *result = dec_to_base(num, base); // 调用进制转换函数
printf("%s\n", result);
free(result); // 释放内存空间
return 0;
}
```
该程序先从标准输入中读取一个十进制整数 `num` 和需要转换的数字进制 `base`,然后调用 `dec_to_base` 函数将 `num` 转换为 `base` 进制,并将转换结果以字符串的形式返回。最后在主函数中输出转换结果,并释放申请的内存空间。需要注意的是,当转换结束后需要将字符串翻转过来,因为转换出的字符串是从低位到高位的,需要将其翻转才能得到正确的结果。