写一个函数,输人一个十六进制数,输出相应的十进制数
写一个函数,输人一个十六进制数,输出相应的十进制数
题目解析:
转换的过程需要乘的基数为16,其次注意十六进制中的a~f的字母转换,并且无论大小写都要能够转换。
代码示例:
#include<stdio.h>
size_t HextoDec(char s[])
{
size_t i, n;
n = 0;
for (i = 0; s[i] != '\0'; i++)
{
if (s[i] >= '0'&& s[i] <= '9')
n = n * 16 + s[i] - '0';
if (s[i] >= 'a' && s[i] <= 'f')
n = n * 16 + s[i] - 'a' + 10;
if (s[i] >= 'A' && s[i] <= 'F')
n = n * 16 + s[i] - 'A' + 10;
}
return n;
}
int main()
{
size_t result = 0;
char hex[9] = {0};
printf("input a HEX number:");
scanf("%s", hex);
result = HextoDec(hex);
printf("0x%s = %u\n", hex, result);
return 0;
}
运行结果:
关注公众号 牛顿顿的星空 在里面回复 谭浩强答案,获取完整版答案,有问题也可以公众号后台私信我