完整的代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
void func(char a[]);
int main(){
char str[1000];
while(gets(str)){
func(str);
}
return 0;
}
void func(char a[]){
int len=strlen(a);
int sum=0;
int t=0;
int index=0;
for(int i=len-1;i>=2;i--){
if(a[i]>='0'&&a[i]<='9'){
t=a[i]-'0';
}
if(a[i]>='a'&&a[i]<='f'){
t=a[i]-'a'+10;
}
if(a[i]>='A'&&a[i]<='F'){
t=a[i]-'A'+10;
}
sum=sum+t*pow(16,index);
index++;
}
printf("%d\n",sum);
}
难点:
1.char类型与int类型的转换,一定要弄清楚它们之间是如何转换的,到底需不需要使用强制类型的转换。
2.<math.h>库函数pow()的使用原理。
解题思路:
输入的字符串的形式是十六进制的形式0XAA,0X12。不需要考虑0X字符,因此只需要考虑其后面的字符。从右往左字符逐渐增大。求出每一位的字符的实际大小,把它们全加起来就得到了总数的大小。