题目描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 C语言
时间: 2024-10-12 07:15:50 浏览: 58
题目要求你编写一个C程序,该程序会接收用户通过键盘输入的一个不超过8位的十六进制数字符串,然后将其转换成对应的十进制整数并输出。需要注意的是,十六进制数系统中的A-F会被视为10-15。
以下是一个简单的C语言函数示例,用于完成这个任务:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 十六进制转十进制的辅助函数
int hex_to_dec(char hex_char) {
if (hex_char >= '0' && hex_char <= '9') {
return hex_char - '0';
} else if (hex_char >= 'A' && hex_char <= 'F') {
return hex_char - 'A' + 10;
} else if (hex_char >= 'a' && hex_char <= 'f') { // 大小写敏感版本
return hex_char - 'a' + 10;
}
// 如果不是有效的十六进制字符,返回0
return 0;
}
// 主函数
int main() {
char hex_str[10];
printf("请输入一个不超过8位的十六进制数:");
fgets(hex_str, sizeof(hex_str), stdin); // 接收用户输入
// 移除行尾的换行符
hex_str[strcspn(hex_str, "\n")] = '\0';
int decimal_num = 0;
for (int i = 0; i < strlen(hex_str); i++) {
decimal_num = 16 * decimal_num + hex_to_dec(hex_str[i]);
}
printf("转换后的十进制数是:%d\n", decimal_num);
return 0;
}
阅读全文