题目描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 输入样例 复制 FFFF C语言
时间: 2024-10-13 15:04:13 浏览: 52
数字设计原理与实践(第四版第二章中文答案)
4星 · 用户满意度95%
题目要求你编写一个C语言程序,该程序的功能是从用户通过键盘输入的一串不超过8位的十六进制字符串开始,将其转换成对应的十进制整数,并将结果输出到屏幕上。需要注意的是,十六进制系统使用了字母A-F代表数字10到15。
输入样例中的 "FFFF" 表示十六进制数的最大值,即十六进制的4个F相当于十进制的255 * 4 = 1020。
以下是一个简单的C语言函数实现这个功能:
```c
#include <stdio.h>
#include <string.h>
// 十六进制转十进制的辅助函数
int hex_to_dec(char c) {
if (c >= '0' && c <= '9') return c - '0';
else if (c >= 'A' && c <= 'F') return c - 'A' + 10;
else return -1; // 如果不是有效的十六进制字符,则返回错误
}
// 主函数,处理用户输入并输出结果
int main() {
char hex_input[10];
printf("请输入一个不超过8位的十六进制数:");
fgets(hex_input, sizeof(hex_input), stdin); // 读取用户输入
int decimal_num = 0;
for (int i = 0; i < strlen(hex_input); i++) {
if (hex_input[i] != '\n') { // 跳过换行符
int digit = hex_to_dec(hex_input[i]);
if (digit == -1) break; // 非法字符,退出转换
decimal_num *= 16; // 移位到高位
decimal_num += digit;
}
}
// 检查是否越界
if (decimal_num > INT_MAX) {
printf("输入的十六进制数超出了整型范围!\n");
} else {
printf("转换后的十进制数是:%d\n", decimal_num);
}
return 0;
}
```
阅读全文