用C语言输入3个十六进制的字符,输出相应的十进制数。例如输入 ‘3’,’F’,’A’, 输出 1018。
时间: 2024-10-27 08:08:07 浏览: 9
C语言实现十六进制数据转十进制数据
在C语言中,你可以通过`scanf`函数获取用户输入的十六进制字符,然后将它们转换成对应的十进制值。下面是一个简单的程序来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h> // 包含atoi函数
int hex_to_dec(char hex_char) {
switch (hex_char) {
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
case '8': case '9':
return hex_char - '0';
case 'a': case 'A':
return hex_char - 'a' + 10;
default:
printf("Invalid hexadecimal character.\n");
exit(1); // 如果输入无效字符,终止程序
}
}
int main() {
char hex[3];
printf("请输入三个十六进制字符: ");
scanf("%s", hex);
long decimal = 0;
for (int i = 0; i < 3 && hex[i] != '\0'; i++) {
decimal *= 16;
decimal += hex_to_dec(hex[i]);
}
printf("对应的十进制数是: %ld\n", decimal);
return 0;
}
```
这个程序首先定义了一个`hex_to_dec`函数,它接收一个十六进制字符,根据其ASCII码值减去相应的偏移量得到对应的十进制值。然后在`main`函数中,读取用户的输入,并逐个字符转换成十进制,最后乘以16的相应次方。
注意,`scanf`在这里会读取直到空格为止的字符,所以如果用户输入超过3个字符或包含非十六进制字符,结果可能会不准确。
阅读全文