进制转换器课程设计
时间: 2023-08-07 09:13:43 浏览: 100
一个简单的进制转换器程序可以包含以下功能:
1. 十进制转其他进制:用户输入一个十进制数,程序将其转换为二进制、八进制、十六进制等其他进制形式。
2. 其他进制转十进制:用户输入一个二进制、八进制、十六进制等其他进制数,程序将其转换为十进制形式。
下面是一个基本的进制转换器程序的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 十进制转二进制
void dec2bin(int n) {
int binary[32];
int i = 0;
while (n > 0) {
binary[i] = n % 2;
n = n / 2;
i++;
}
printf("二进制数为:");
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
// 十进制转八进制
void dec2oct(int n) {
int octal[32];
int i = 0;
while (n > 0) {
octal[i] = n % 8;
n = n / 8;
i++;
}
printf("八进制数为:");
for (int j = i - 1; j >= 0; j--) {
printf("%d", octal[j]);
}
}
// 十进制转十六进制
void dec2hex(int n) {
char hex[32];
int i = 0;
while (n > 0) {
int temp = 0;
temp = n % 16;
if (temp < 10) {
hex[i] = temp + 48;
} else {
hex[i] = temp + 55;
}
n = n / 16;
i++;
}
printf("十六进制数为:");
for (int j = i - 1; j >= 0; j--) {
printf("%c", hex[j]);
}
}
// 二进制转十进制
void bin2dec(int n) {
int decimal = 0;
int base = 1;
while (n > 0) {
int rem = n % 10;
decimal = decimal + rem * base;
n = n / 10;
base = base * 2;
}
printf("十进制数为:%d", decimal);
}
// 八进制转十进制
void oct2dec(int n) {
int decimal = 0;
int base = 1;
while (n > 0) {
int rem = n % 10;
decimal = decimal + rem * base;
n = n / 10;
base = base * 8;
}
printf("十进制数为:%d", decimal);
}
// 十六进制转十进制
void hex2dec(char hex[]) {
int decimal = 0;
int base = 1;
int len = strlen(hex);
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal = decimal + (hex[i] - 48) * base;
base = base * 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal = decimal + (hex[i] - 55) * base;
base = base * 16;
}
}
printf("十进制数为:%d", decimal);
}
int main() {
int choice;
printf("请选择转换方式:\n");
printf("1. 十进制转二进制\n");
printf("2. 十进制转八进制\n");
printf("3. 十进制转十六进制\n");
printf("4. 二进制转十进制\n");
printf("5. 八进制转十进制\n");
printf("6. 十六进制转十进制\n");
scanf("%d", &choice);
switch (choice) {
case 1:
int n;
printf("请输入十进制数:");
scanf("%d", &n);
dec2bin(n);
break;
case 2:
printf("请输入十进制数:");
scanf("%d", &n);
dec2oct(n);
break;
case 3:
printf("请输入十进制数:");
scanf("%d", &n);
dec2hex(n);
break;
case 4:
printf("请输入二进制数:");
scanf("%d", &n);
bin2dec(n);
break;
case 5:
printf("请输入八进制数:");
scanf("%d", &n);
oct2dec(n);
break;
case 6:
char hex[32];
printf("请输入十六进制数:");
scanf("%s", hex);
hex2dec(hex);
break;
default:
printf("输入错误!\n");
break;
}
return 0;
}
```
以上是一个简单的进制转换器程序示例,可以根据需要进行修改和完善。