描述:从键盘中输入一个十六进制的数值字符串,输出它的十进制数值。
例如:
输入:0xAA
输出:170
输入:0xBC
输出:188
解析:因为这个字符串前两个字符0x,对数字没有意义,因此只需将字符串中在0x后面的字符提出来运算就行。
十六进制转十进制中,0-9数字代表的数值就是0-9,A-Z字母代表的数值代表10-35。
个位的字符转换后乘以16的0次方,十位的字符转换后乘以16的1次方,百位的字符转换后乘以16的2次方,依次这样得出单独的结果。
然后把它们相加在一起等到的就是字符串的十进制数值。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i,s,sum;
char str[100];
gets(str);
s=strlen(str);
sum=0;
for(i=2;i<s;i++)
{
if(str[i]>=48 && str[i]<=57)
sum=sum+(str[i]-48)*pow(16,s-i-1);
else
sum=sum+(str[i]-55)*pow(16,s-i-1);
}
printf("%d\n",sum);
return 0;
}