猿问

C语言进制转换

 编写一个函数,输入一个十六进制的字符串,输出其对应的十进制整数(函数类型为整型

这是我写的程序,但输入比如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);

 }


慕仰5061498
浏览 1456回答 1
1回答

慕运维2420015

好好对照ASCII码表,看看字符对应的十进制数再写。字符0~9对应十进制数48~57,而大写字母是从65开始的,小写从97开始,所以你的判断条件不够,例:你输入第一位是字符‘1’;那么‘1’对应49,‘A’对应65,你定义的变量j就变成了-6.
随时随地看视频慕课网APP
我要回答