从键盘输入一行任意字符串,调用hexvalue()函数,将其中符合十六进制的数转换为十进制数,并输出转换结果。(C语言函数的应用
时间: 2024-10-16 10:08:29 浏览: 46
在C语言中,你可以通过编写一个自定义函数`hexValue()`来实现这个功能。首先,你需要创建一个函数,它接受一个字符数组作为输入,遍历每个字符,检查是否是十六进制数字(0-9或A-F/a-f)。如果是,你就将其转换为对应的十进制值并累加到总和中。下面是一个简单的实现示例:
```c
#include <stdio.h>
#include <ctype.h>
// 函数定义,将十六进制字符转换成对应的十进制整数
int hexValue(char c) {
if (isxdigit(c)) { // 检查字符是否为十六进制数字
if ('0' <= c && c <= '9') return c - '0'; // 十六进制数字0-9直接减去字符'0'
else if ('a' <= c && c <= 'f') return c - 'a' + 10; // 十六进制字母A-F减去'a'再加上10
else if ('A' <= c && c <= 'F') return c - 'A' + 10; // 同上,处理大写字母
else return -1; // 非法十六进制字符返回错误值
}
return -1;
}
// 主函数获取用户输入并计算十六进制数值
int main() {
char input[100];
printf("请输入一行十六进制字符串:");
fgets(input, sizeof(input), stdin); // 读取一行输入
int decimalSum = 0;
for (int i = 0; input[i] != '\n'; i++) { // 忽略换行符
int digit = hexValue(input[i]);
if (digit >= 0) {
decimalSum *= 16; // 每次进入新的一位,乘以16
decimalSum += digit;
}
}
printf("十六进制字符串转换为十进制数的结果是:%d\n", decimalSum);
return 0;
}
```
阅读全文