#include "stdio.h" #define N 50 long fun(char *s) { int i,t; long sum=0; for(i=0;s[i];i++) { if(s[i]>='0'&&s[i]<='9')//当字符是'0'--'9'时,*-‘0'就行了 t=s[i]-'0'; if(s[i]>='a'&&s[i]<='z') t=s[i]-'a'+10;//当字符是 abcdef 时,*-‘a’+10 就行了 if(s[i]>='A'&&s[i]<='Z') t=s[i]-'A'+10;//当字符是 ABCDEF 时,*-‘A’+10 就行了 sum=sum*16+t; //每次循环一次进位16 } return sum; } int main(void) //本题先定义一个数组来保存输入的数,数采用以字符串的方式输入, { //利用字符串与字符数组相结合的方式 int m; char s[N]; printf("Enter 16 进制的数:"); scanf("%s",s); m=fun(s); printf("%ld",m); }