#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int convert(char a[]);
char a[100];
int m;
printf("输入一个十六进制数:\n");
gets(a);
m=convert(a);
printf("对应的十进制数为:%d\n",m);
printf("\n");
system("pause");
return 0;
}
int convert(char a[]){
int i,m,t;
m=0;
for(i=0;i<strlen(a);i++){
if((a[i]<='9'&&a[i]>='0' ||a[i]<='f'&&a[i]>='a' || a[i]<='F'&&a[i]>='A')){
if(a[i]<='9'&&a[i]>='0')
t=a[i]-'0'; //将对应的字符转换为数字 '3'-'0'=3
else if(a[i]<='f'&&a[i]>='a')
t=a[i]-'a'+10; /* 求出a[i]对应的字符与字符'a'的差值再加10
如:c与a差2,所以t=2+10=12*/
else
t=a[i]-'A'+10; //同上
m=m*16+t ;
}
else {
printf("输入数值有误\n");
break;
}
}
return m;
}
运行结果为