6-1 exercise 2-3 (20分)
Write the function htoi(s), which converts a string of hexadecimal digits(including an optional 0x or 0X)into its equialent integer value. The allowable digits are 0 through 9,a through f,and A through F. We make sure the 'int' type is enough
#include <stdio.h>
#define YES 1
#define NO
0 /* htoi:convert hexadecimal string s to integer */
int htoi(char s[]);
int main()
{
// freopen("2.in", "r", stdin);
// freopen("2.out", "w", stdout);
char A[12];
while(scanf("%s", A) != EOF) {
int v = htoi(A); printf("%d\n", v);
}
return 0;
}
/* Your code will be copied here.*/
#define YES 1 //my answer.
#define NO 0
int htoi(char s[])
{
int b, sum,a,i=0;
if(s[i]=='0'){
i++;
if(s[i]=='x'||s[i]=='X')
i++;
}
sum=0;
b=YES;
for(;b==YES;i++){
if(s[i]>='0'&&s[i]<='9')
a=s[i]-'0';
else if(s[i]>='a'&&s[i]<='f')
a=s[i]-'a'+10;
else if(s[i]>='A'&&s[i]<='F')
a=s[i]-'A'+10;
else
b=NO;
if(b==YES)
sum=sum*16+a;
}
return sum;
}