用C语言编写输入3个十六进制的字符,输出相应的十进制数。例如输入 ‘3’,’F’,’A’, 输出 1018。
时间: 2024-10-27 13:09:14 浏览: 25
在C语言中,你可以使用`scanf`函数读取用户输入的十六进制字符,并通过位操作将其转换为对应的十进制数值。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 十六进制到十进制的映射表
unsigned char hex_to_dec[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
};
int main() {
unsigned int num;
printf("请输入三个十六进制字符:");
// 读入每个字符并转换
for (size_t i = 0; i < 3; i++) {
scanf(" %c", &num);
num &= 0x0F; // 取每一位(最高四位有效)
num = hex_to_dec[num]; // 转换为十进制
num <<= 4 * (i); // 将每位移至适当位置
if (i > 0) {
num += scanf("%d", &num); // 如果不是第一个数字,合并下一个数字
}
}
printf("对应的十进制数是:%u\n", num);
return 0;
}
```
在这个程序中,我们假设用户会连续输入两个整数,第二个数可能会覆盖前面的高位。所以我们在每次读取一个字符后,先将它移动到正确的位置,然后在第二次读取时,如果读到了另一个数字,就合并它们。
注意:这个例子假设用户输入的十六进制字符都是有效的,实际应用中应加入错误处理代码来检查输入是否合法。
阅读全文