练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x 或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。

来源:互联网 发布:手机任意显示软件 编辑:程序博客网 时间:2024/06/05 06:38

C语言程序设计(第二版) 练习2-3 个人设计

练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。

代码块

#include <stdio.h>int htoi (char s[]);main(){    char s[] = "0xA2F";    printf("%d\n", hoti(s));    return 0;}int hoti (char s[])                               /*十六进制转换函数*/{    int i, n, num;                                /*定义循环变量,中间变脸,最终转换值*/    num = 0;                                      /*以下两行为变量设置初始值*/    i = 0;    if (s[i] == '0'){                             /*以下四行为判断是否为十六进制数值,以0x或0X开头作为条件*/        ++i;        if (s[i] == 'x' || s[i] == 'X'){            ++i;            for (; s[i] != '\0'; ++i){            /*判断字符串是否结束并循环*/                if (s[i] >= '0' && s[i] <= '9')   /*如果字符为数字,转换为相应值*/                    n = s[i] - '0';                if (s[i] >= 'A' && s[i] <= 'Z')   /*如果字符为大写字母,转换为相应值*/                    n = s[i] - 55;                if (s[i] >= 'a' && s[i] <= 'z')   /*如果字符为小写字母,转换为相应值*/                    n = s[i] - 87;                num = num * 16 + n;               /*循环求值*/            }        }    }    return num;}

如果程序设计有错误或更简洁的方法,欢迎并感谢您指正出示,谢谢!

阅读全文
0 0