用c语言编程:.写一个自定义函数,将输入的十六进制数转换成十进制数并输出
时间: 2024-03-14 16:43:50 浏览: 152
好的,以下是用C语言编写的函数,实现将输入的十六进制数转换成十进制数的功能:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int hexToDec(char hex[]) {
int len = strlen(hex);
int base = 1, dec = 0;
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - 48) * base;
base *= 16;
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 87) * base;
base *= 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 55) * base;
base *= 16;
}
}
return dec;
}
int main() {
char hex[20];
printf("请输入一个十六进制数: ");
scanf("%s", hex);
printf("转换为十进制数为: %d\n", hexToDec(hex));
return 0;
}
```
函数`hexToDec()`通过遍历输入的十六进制数的每一位,并根据其所处的位置和对应的权值,计算出对应的十进制数。在函数中,我们先使用`strlen()`函数获取输入十六进制数的长度,然后使用一个循环从最后一位开始遍历,逐个计算出对应的十进制值。具体实现时,我们根据十六进制数每一位的字符进行分类讨论,分别计算出对应的十进制值,并累加到`dec`变量中。
在主函数`main()`中,我们首先通过`scanf()`函数获取用户输入的十六进制数,然后调用`hexToDec()`函数将其转换为十进制数,并输出结果。
希望这个函数能够解决你的问题。
阅读全文