输入一个十进制整数a,然后输入一个n(n为2、8或16),将a转换为n进制数据输出。c语言
时间: 2024-10-25 13:16:15 浏览: 10
在C语言中,你可以使用`itoa()`函数或者手动编写算法将十进制整数转换成其他进制。这里是一个简单的示例,展示如何将十进制转换为二进制(base 2),八进制(base 8)和十六进制(base 16):
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将十进制转为指定进制字符串
char* decimal_to_base(int a, int base) {
char result[50];
sprintf(result, "%d", a); // 先转化为字符表示以便处理
char* end = result + strlen(result);
char* ptr = end;
while (ptr > result && *ptr == '0') {
ptr--;
}
int len = ptr - result + 1; // 计算实际需要的位数
if (len > 49) {
return "Number too large for the given base";
}
int remainder;
for (int i = len - 1; i >= 0; i--) {
remainder = result[i] - '0'; // 获取每个数字对应的数值
if (remainder >= base) {
return "Invalid number for the given base";
}
*(end - len + i) = "0123456789ABCDEF"[remainder]; // 根据余数填充对应进制字符
}
return result;
}
int main() {
int a;
printf("Enter a decimal integer: ");
scanf("%d", &a);
int n;
printf("Choose a base (2, 8, or 16): ");
scanf("%d", &n);
char* converted = decimal_to_base(a, n);
printf("Converted to %d-base: %s\n", n, converted);
free(converted); // 释放内存
return 0;
}
```
阅读全文