用c语言,要求:任意输入一个十进制整数及需要转换的数字进制(要考虑负数、小数情形的转换),并最终输出所转换进制的最终数字如输入10,2输出的结果是1010
时间: 2024-03-10 18:49:54 浏览: 110
好的,可以参考下面的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void dec_to_other(long long num, int base) {
char result[100]; // 保存转换结果的数组
int i = 0;
int is_negative = num < 0; // 判断是否为负数
if (is_negative) {
num = -num;
}
while (num) {
int r = num % base;
if (r < 10) {
result[i++] = r + '0';
} else {
result[i++] = r - 10 + 'A';
}
num /= base;
}
if (i == 0) {
printf("0\n");
} else {
if (is_negative) {
printf("-");
}
for (int j = i - 1; j >= 0; j--) {
printf("%c", result[j]);
}
printf("\n");
}
}
int main() {
long long num; // 输入的数字
int base; // 需要转换的进制
printf("请输入一个十进制整数和需要转换的数字进制:\n");
scanf("%lld %d", &num, &base);
dec_to_other(num, base);
return 0;
}
```
这里定义了一个 `dec_to_other` 函数,它接受两个参数,一个是需要转换的十进制整数 `num`,另一个是需要转换的进制 `base`。函数中使用了短除法的思想,将十进制整数 `num` 转换成 `base` 进制,最后将转换结果保存在字符数组 `result` 中。
在 `main` 函数中,通过 `scanf` 函数输入需要转换的十进制整数和进制,然后调用 `dec_to_other` 函数进行转换,最后输出转换结果。这里还考虑了负数的情况,如果输入的是负数,则在输出结果前加上负号。
阅读全文