c语言输入一个16进制转10进制的代码
时间: 2024-11-12 18:41:48 浏览: 9
在C语言中,转换十六进制数为十进制数通常需要先读取用户输入的十六进制字符,然后逐个转换并相加。这里是一个简单的示例,使用`scanf`函数获取输入,`strtol`函数帮助进行转换:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h> // 引入错误处理
// 十六进制转十进制的辅助函数
long long hex_to_decimal(const char* hex_string) {
long long decimal = 0;
int i = 0;
while (hex_string[i] != '\0') { // 遍历输入的十六进制字符串
char ch = hex_string[i];
if (ch >= '0' && ch <= '9') { // 是数字字符
decimal = decimal * 16 + (ch - '0');
} else if (ch >= 'A' && ch <= 'F') { // 是大写字母
decimal = decimal * 16 + (ch - 'A' + 10);
} else if (ch >= 'a' && ch <= 'f') { // 是小写字母
decimal = decimal * 16 + (ch - 'a' + 10);
} else { // 非法字符,返回错误
perror("Invalid hexadecimal digit");
exit(1);
}
i++;
}
return decimal;
}
int main() {
char hex[100]; // 定义一个足够大的数组来存储输入的十六进制字符串
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
// 检查输入是否为空
if (hex[0] == '\0') {
printf("No input provided.\n");
return 1;
}
long long decimal_num = hex_to_decimal(hex);
printf("The decimal equivalent is: %lld\n", decimal_num);
return 0;
}
```
这个程序会提示用户输入一个十六进制数,然后尝试将其转换成十进制。如果输入包含非十六进制字符,程序会报告错误。
阅读全文