思路:我们可以知道数组遍历是从左到右的,而加权重转化是从右向左的所以两者的大小要反过来
i 和 strlen(数组名) - i - 1
//6、写一函数,输入一个十六进制数,输出对应的十进制数。
#include <stdio.h>
#include <string.h>
#include <math.h>
void sw();//一个十六进制数,输出对应的十进制数。
main()
{
sw();
}
void sw()
{
int num = 0;
int i;
int j = 0;
char sum[80];
printf("请输入一个十六位数");
gets(sum);
for(i = 0;sum[i] != '\0';i ++)
{
if(sum[i] == 'A')
{
num = num + 10 * pow(16,strlen(sum) - i - 1);
}
else
if(sum[i] == 'B')
{
num = num + 11 * pow(16,strlen(sum) - i - 1);
}
else if(sum[i] == 'C')
{
num = num + 12 * pow(16,strlen(sum) - i - 1);
}
else if(sum[i] == 'D')
{
num = num + 13 * pow(16,strlen(sum) - i - 1);
}
else if(sum[i] == 'E')
{
num = num + 14 * pow(16,strlen(sum) - i - 1);
}
else if(sum[i] == 'F')
{
num = num + 15 * pow(16,strlen(sum) - 1 - i);
}
else
{
num = num + (sum[i] - '0') * pow(16,strlen(sum) - 1 - i);
// printf("%d\n",num);
}
}
printf("%d\n",num);
}