用c语言实现输入一位16进制数(0~F), 转换为4位二进制形式显示
时间: 2024-10-27 12:14:06 浏览: 44
在C语言中,我们可以使用`scanf`函数获取用户输入的十六进制数,然后通过循环和一些数学运算将其转换为四位的二进制形式。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void hex_to_bin(char hex_num[]) {
int decimal = 0;
int len = strlen(hex_num);
// 如果输入长度不是2(因为最前面的是 '0x'),则返回错误
if (len != 2) {
printf("Invalid input! Please enter a single hexadecimal digit.\n");
return;
}
for(int i = 1; i < len; i++) {
switch(hex_num[i]) {
case '0': case '1': case '2':
decimal += (hex_num[i] - '0') * pow(16, len - i - 1);
break;
case '3': case '4': case '5':
decimal += (hex_num[i] - '3') * pow(16, len - i - 1);
break;
case '6': case '7': case '8':
decimal += (hex_num[i] - '6') * pow(16, len - i - 1);
break;
case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
decimal += (hex_num[i] - 'A' + 10) * pow(16, len - i - 1);
break;
default:
printf("Invalid character in the hexadecimal number!\n");
return;
}
}
// 将十进制数转换为四位二进制并打印
while(decimal > 0) {
char bit = decimal % 2;
printf("%d", bit);
decimal /= 2;
}
printf("\n");
}
int main() {
char hex_input[3];
printf("Enter a single hexadecimal digit (0-F): ");
scanf("%s", hex_input);
hex_to_bin(hex_input);
return 0;
}
```
这个程序首先检查输入是否只有一位数字,并尝试将它转换为十进制。然后,它把得到的十进制数转换成四位的二进制数。
阅读全文