描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在1≤n≤231−1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:0xAA
输出:170
我的思路是通过取输出字符的ASCII值,减去ASCII表中‘0’或‘A’的基础值,对应乘16^n次方
#include <stdio.h>
#include <string.h>
#include<math.h>
int main()
{
int i, b=0;
int len=0;
char str[100];
scanf("%[^\n]\n",str);
len=strlen(str);
for(i=len-1;i>=2;i--)
{
if((str[i]>='A')&&(str[i]<='F'))
{
b+=((str[i]-'A'+10)*pow(16,len-i-1));
}
else if ((str[i]>='0')&&(str[i]<='9'))
{
b+=((str[i]-'0')*pow(16,len-i-1));
}
}
printf("%d\n",b);
return 0;
}