用c语言设计一个进制转换器,输入某种进制数,能同时输出其他三种进制数。 例(输入一个十进制数,转化为二进制,八进制,十六进制并同时输出。) 例(输入一个二进制数,转化为八进制,十进制,十六进制并同时输出。)
时间: 2024-10-20 19:19:44 浏览: 39
在C语言中设计一个进制转换器,我们可以创建三个函数分别处理从一个进制到另外两个进制的转换。这里是一个简单的例子,我们将编写一个程序,用户可以输入任意一种进制(0-9、0-1 for二进制,0-7 for八进制,0-15 for十六进制),然后选择他们想要转换成的目标进制。
```c
#include <stdio.h>
#include <string.h>
// 函数声明
int decimal_to_other(int num, int from_base, int to_base);
int binary_to_other(int num, int to_base);
int octal_to_other(int num, int to_base);
int main() {
// 输入部分
printf("请输入数字以及当前进制 (0-9 for 十进制, 0-1 for 二进制, 0-7 for 八进制): ");
char input[100];
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 移除末尾换行符
// 转换部分
int from_base = -1; // 初始值表示未确定
switch (input[0]) {
case '0': from_base = 8; break; // 八进制前缀是0
case '1': from_base = 2; break; // 二进制前缀是1
default: from_base = 10; break; // 十进制默认
}
int num = atoi(input + 1); // 取消字符串前缀
if (from_base == -1) {
printf("错误:输入无效,请输入有效的数字加上进制前缀(0-9, 0-1 或者 0-7)\n");
return 1;
}
printf("\n转换结果:\n");
printf("%d %s进制 -> ", num, "十进制"); // 输出原始数值作为十进制
int decimal = decimal_to_other(num, from_base, 10);
printf("%d\n", decimal);
printf("%d %s进制 -> ", num, "二进制"); // 输出二进制
printf("%o\n", binary_to_other(num, 2));
printf("%d %s进制 -> ", num, "十六进制"); // 输出十六进制
printf("%x\n", octal_to_other(num, 16));
return 0;
}
// 进制转换函数
int decimal_to_other(int num, int from_base, int to_base) {
if (from_base == to_base) return num;
int result = 0;
while (num > 0) {
result += num % to_base;
num /= to_base;
}
return result;
}
int binary_to_other(int num, int to_base) {
return decimal_to_other(num, 2, to_base);
}
int octal_to_other(int num, int to_base) {
return decimal_to_other(num, 8, to_base);
}
```
阅读全文