C语言把任意十进制负数转换成其他R进制数
时间: 2023-11-18 09:05:20 浏览: 112
要把一个十进制负数转换成其他进制数,需要以下步骤:
1. 将负数转换成对应的正数。具体方法是将负数取绝对值,然后再在结果前面加上负号。
2. 将正数转换成其他进制数。具体方法是不断地将正数除以进制数,直到商为0为止。每次将余数记录下来,最后按照倒序排列所有余数即可得到结果。
3. 如果结果是负数,在前面加上负号。
下面是一个示例代码,可以把一个负数转换成其他进制数:
```c
#include <stdio.h>
#include <stdlib.h>
// 将十进制数转换成其他进制数
void convert(int num, int base) {
int abs_num = abs(num);
int result[32]; // 保存转换结果
int i = 0;
// 不断除以进制数,记录余数
while (abs_num) {
int remainder = abs_num % base;
result[i++] = remainder;
abs_num /= base;
}
// 如果结果为0,则输出0
if (i == 0) {
printf("0");
}
// 如果结果为负数,输出负号
if (num < 0) {
printf("-");
}
// 倒序输出所有余数
for (int j = i - 1; j >= 0; j--) {
printf("%d", result[j]);
}
}
int main() {
int num = -12345;
int base = 16;
printf("%d转换成%d进制数为:", num, base);
convert(num, base);
printf("\n");
return 0;
}
```
这个程序可以将-12345转换成16进制数,输出结果为:-3039。
阅读全文