P216 16.写一个函数,输入一个16进制数,输出相应的10进制数
#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {
void convert(char s[]);//转换函数
char str[20];//字符数组接收16进制数
printf("请输入一个16进制数:");
gets(str);//获取字符串
convert(str);
return 0;
}
void convert(char s[]) {
int n = strlen(s);//获取字符数组长度
int i = 0, sum = 0;
for (i = n - 1; i >= 0; i--) {//从数组最后一个元素开始计算
if (s[i] >= '0' && s[i] <= '9') {
sum += (s[i] - '0') * pow(16, n - 1 - i);//字符'0'-'9'减去字符'0'等于整数0-9
}
else if (s[i] >= 'A' && s[i] <= 'F') {
sum += (10 + s[i] - 'A') * pow(16, n - 1 - i);//16进制的A-Z转换为10进制后计算
}
else if (s[i] >= 'a' && s[i] <= 'f') {
sum += (10 + s[i] - 'a') * pow(16, n - 1 - i);
}
}
printf("相应的10进制数为:");
printf("%d\n", sum);
}
运行结果: