2020-11-11

 

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值