C语言写一个函数,输入一个16进制数,输出相应的10进制数 点击复制后,将打开C知道体验页
时间: 2023-05-29 15:06:00 浏览: 104
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int hex_to_dec(const char *hex);
int main()
{
char hex[20];
printf("请输入一个16进制数:");
scanf("%s", hex);
int dec = hex_to_dec(hex);
printf("对应的10进制数为:%d\n", dec);
return 0;
}
int hex_to_dec(const char *hex)
{
int dec = 0;
int len = strlen(hex);
for (int i = 0; i < len; i++) {
char c = toupper(hex[i]);
int digit = (c >= '0' && c <= '9') ? (c - '0') : (c - 'A' + 10);
dec = dec * 16 + digit;
}
return dec;
}
```
该函数的实现思路如下:
1. 遍历输入的16进制数的每个字符;
2. 对于每个字符,将其转换为对应的10进制数;
3. 将所有10进制数相加,得到最终的10进制数。
需要注意的是,由于输入的16进制数可能包含小写字母,而大写字母与小写字母的ASCII码不同,因此在转换前需要将输入的字符转为大写字母。另外,当输入的字符为数字时,需要将其转换为对应的整数,而当输入的字符为字母时,需要将其转换为对应的10进制数(比如A对应10,B对应11,以此类推)。