The C Programming Language 练习题2-3
2017-09-30 21:43
381 查看
题目
编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
题目分析
判断分成几部分:
1.0x和0X的前缀判断
2.0~9部分
3.a~f部分
4.A~F部分
计算方法:
如十六进制数0xabcd,则转换方法就是10*16^3+11*16^2+12*16^1+13*16^0=40960+2816+192+13=43981。
所以公式就是:
a*16^n+b*16^(n-1)+……+x*16^2+y*16^1+z*16^0
代码实现
结果
输入:0x1234abcdef
输出:
发现到第9位数值就不对,怀疑是不是算不了这么大的数,但没解决得了~~以后想到办法再说。
编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
题目分析
判断分成几部分:
1.0x和0X的前缀判断
2.0~9部分
3.a~f部分
4.A~F部分
计算方法:
如十六进制数0xabcd,则转换方法就是10*16^3+11*16^2+12*16^1+13*16^0=40960+2816+192+13=43981。
所以公式就是:
a*16^n+b*16^(n-1)+……+x*16^2+y*16^1+z*16^0
代码实现
#include <stdio.h> #define MAXLINE 1000 #define HEXNUM 16 long int htostest(char s[]); int main() { int i; char c, hexnumber[MAXLINE]; i = 0; while ((c = getchar()) != '\n') { hexnumber[i] = c; i++; } hexnumber[i] = '\0'; printf("%d\n", htostest(hexnumber)); } long int htostest(char s[]) { int j; long int n; n = 0; j = 2; while ( s[j] != '\0') { if (s[j] >= '0' && s[j] <='9') n = HEXNUM * n + (s[j] - '0'); else if (s[j] >= 'a' && s[j] <= 'f') n = HEXNUM * n + (s[j] - 'a' + 10); else if (s[j] >= 'A' && s[j] <= 'F') n = HEXNUM * n + (s[j] - 'A' + 10); printf("%d\t%d\n", j, n); j++; } return n; }
结果
输入:0x1234abcdef
输出:
2 1 3 18 4 291 5 4660 6 74570 7 1193131 8 19090108 9 305441741 10 592100574 11 883674607 883674607
发现到第9位数值就不对,怀疑是不是算不了这么大的数,但没解决得了~~以后想到办法再说。
相关文章推荐
- <<The C Programming Language>>学习之路-练习题参考答案 1-11
- The C Programming Language 练习题4-2
- <<The C Programming Language>>学习之路-练习题参考答案 1-4
- The C Programming Language 练习题3-6
- The C Programming Language 练习题1-23
- <<The C Programming Language>>学习之路-练习题参考答案 1-1
- The C Programming Language 练习题2-7
- The C Programming Language 练习题3-4
- <<The C Programming Language>>学习之路-练习题参考答案 1-2
- The C Programming Language 练习题4-1
- <<The C Programming Language>>学习之路-练习题参考答案 1-5
- <<The C Programming Language>>学习之路-练习题参考答案 1-8
- The C Programming Language 练习题1-24
- <<The C Programming Language>>学习之路-练习题参考答案 1-9
- The C Programming Language 练习题4-6
- The C Programming Language 练习题2-8
- The C Programming Language 练习题1-21
- The C Programming Language 练习题2-2
- The C Programming Language 练习题2-6
- The C Programming Language 练习题3-1