用 c 语言要求:任意输入一个十进制整数及需要转换的数字进制( Eg .二进制八进制),并最终输出所转换进制的最终数字(提升:可考虑复杂情形,如负数、小数情形的转换) 如输入10,2输出的结果是1010
时间: 2024-03-06 09:46:10 浏览: 84
好的,以下是用 C 语言实现将一个十进制整数转换为其他进制的数字的代码,包括处理负数和小数情况:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char* convert(int num, int base) {
// 处理负数情况
int sign = 1;
if (num < 0) {
num = -num;
sign = -1;
}
// 临时存储余数的数组
int digits[100];
int i = 0;
while (num > 0) {
digits[i++] = num % base;
num /= base;
}
// 处理小数情况
if (i == 0) {
digits[i++] = 0;
}
if (sign == -1) {
digits[i++] = '-';
}
// 倒序输出余数
char* result = (char*)malloc(sizeof(char) * (i + 1));
int j = 0;
for (; i > 0; i--) {
if (digits[i - 1] < 10) {
result[j++] = digits[i - 1] + '0';
} else {
result[j++] = digits[i - 1] - 10 + 'A';
}
}
result[j] = '\0';
return result;
}
int main() {
int num, base;
printf("请输入需要转换的十进制整数:");
scanf("%d", &num);
printf("请输入需要转换的进制:");
scanf("%d", &base);
char* result = convert(num, base);
printf("转换结果为:%s\n", result);
free(result);
return 0;
}
```
在上述代码中,我们使用了一个临时数组来存储每次的余数,然后倒序输出这个数组即可。注意,我们需要将余数转换为字符型(如果是 10 进制以上需要转换为 A、B、C 等字母),并且在最后加上字符串结束符 '\0'。最后,别忘了释放动态分配的内存。
阅读全文