用c语言要求:任意输入一个十进制整数及需要转换的数字进制( Eg .二进制八进制),并最终输出所转换进制的最终数字(提升:可考虑复杂情形,如负数、小数情形的转换) 如输入10,2输出的结果是1010
时间: 2024-03-06 22:46:48 浏览: 84
好的,这是一个十分经典的问题,需要用到除留余数法。以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main() {
int num, base, is_negative = 0;
char result[100];
scanf("%d %d", &num, &base);
if (num < 0) {
is_negative = 1;
num = -num;
}
int i = 0;
while (num != 0) {
int remainder = num % base;
if (remainder < 10) {
result[i] = remainder + '0';
} else {
result[i] = remainder - 10 + 'A';
}
num = num / base;
i++;
}
if (is_negative) {
printf("-");
}
if (i == 0) {
printf("0");
} else {
for (int j = i - 1; j >= 0; j--) {
printf("%c", result[j]);
}
}
printf("\n");
return 0;
}
```
该程序首先通过`scanf`函数获取用户输入的数字和需要转换的数字进制。然后通过除留余数法,将十进制整数转换为指定进制的数字。最后将转换后的数字输出即可。
需要注意的是,如果输入的数字为负数,则需要先将其转换为正数进行计算,并在输出结果前加上负号。同时,如果输入的数字为 0,则需要特殊处理。另外,如果需要考虑小数情形的转换,可以先将整数部分按照上述方法转换,再将小数部分乘以指定进制,将得到的整数部分再按照上述方法转换。
阅读全文