编写一个函数,输入一个十六进制的字符串,输出其对应的十进制整数(函数类型为整型)这是我写的程序,但输入比如20或者2AF5最后结果就是负数,要怎么修改?或者有没有其他解法?大神帮忙#include<stdio.h>#include<string.h>int fun(char*); main(){ char a[81]; printf("请输入十六进制字符串:\n"); gets(a); fun(a); } int fun(char *a){ int i,j,sum=0; for(i=0;a[i]!='\0';i++){ if(a[i]>10) j=a[i]-'A'+10; else j=a[i]; sum=sum*16+j; } printf("对应的十进制数为:%d\n",sum); }
1 回答
慕运维2420015
TA贡献6条经验 获得超3个赞
好好对照ASCII码表,看看字符对应的十进制数再写。字符0~9对应十进制数48~57,而大写字母是从65开始的,小写从97开始,所以你的判断条件不够,例:你输入第一位是字符‘1’;那么‘1’对应49,‘A’对应65,你定义的变量j就变成了-6.
- 1 回答
- 0 关注
- 1455 浏览
添加回答
举报
0/150
提交
取消