c语言将十进制整数 n(−2 31 ≤n≤2 31 −1)转换成 k(2≤k≤16) 进制数。注意,10∼15分别用字母 A、B、C、D、E、F表示。
时间: 2024-05-01 07:18:57 浏览: 17
这里给出一个将十进制整数转换为任意进制数的C语言代码:
```c
#include <stdio.h>
int main() {
long long n; // 输入的十进制整数
int k; // 转换的进制数
char ans[100]; // 存储结果的数组
int i = 0; // ans数组的下标
scanf("%lld %d", &n, &k);
if (n < 0) {
printf("-");
n = -n;
}
do {
int digit = n % k;
if (digit < 10) {
ans[i++] = digit + '0';
} else {
ans[i++] = digit - 10 + 'A';
}
n /= k;
} while (n > 0);
for (int j = i - 1; j >= 0; j--) {
printf("%c", ans[j]);
}
printf("\n");
return 0;
}
```
上面这段代码中,我们使用了一个数组 `ans` 来存储转换后的 k 进制数。在处理每一位时,我们先求出当前位的数字,然后判断是否需要转换为字母,最后将其存入数组中。最后,我们按照逆序输出数组中的元素即可得到最终结果。
需要注意的是,在将十进制整数转换为 k 进制数时,如果输入的十进制整数为负数,需要先输出一个负号,并将其转换成正数进行处理。这里我们使用了 long long 类型来存储输入的十进制整数,以避免数据溢出的问题。