C语言编程:编写一个函数,输入一个十六进制正整数,输出相应的十进制正整数 输入格式:输入一个十六进制正整数(不区分大小写) 输出格式:输出一个十进制正整数 输入样例:F 输出样例:15
时间: 2025-06-09 20:01:14 浏览: 25
在C语言中,你可以创建一个名为`hex_to_decimal`的函数,接受一个字符数组作为输入,因为十六进制数字可以用ASCII码表示。下面是一个简单的实现:
```c
#include <stdio.h>
#include <string.h>
// 函数定义,将十六进制字符串转换成十进制整数
int hex_to_decimal(char hex[]) {
int decimal = 0;
int len = strlen(hex);
bool isNegative = false; // 检查是否以负号开头,C标准库没有提供直接处理负号的功能
if (hex[0] == '-') { // 如果第一个字符是 '-'
isNegative = true;
len--;
}
for (int i = 0; i < len; i++) {
char digit;
if ('A' <= hex[i] && hex[i] <= 'F') { // 大写的十六进制
digit = hex[i] - 'A' + 10;
} else if ('a' <= hex[i] && hex[i] <= 'f') { // 小写的十六进制
digit = hex[i] - 'a' + 10;
} else { // 非法字符
printf("Invalid input! Non-hexadecimal digit found.\n");
return -1;
}
decimal = decimal * 16 + digit; // 乘以16是因为每四位十六进制对应一位十进制
}
if (isNegative) {
decimal = -decimal;
}
return decimal;
}
int main() {
char hex[] = "F";
int result = hex_to_decimal(hex);
if (result != -1) {
printf("十进制正整数: %d\n", result);
}
return 0;
}
```
这个程序首先检查输入是否以负号开始,然后遍历每个十六进制字符,将其转换为对应的十进制数值,并累加到结果上。最后,如果输入是负数,它会将结果取反。
阅读全文
相关推荐


















