#include <stdio.h>#include <stdlib.h>#include <string.h>#define max 10/* 写出一个函数、输入一个十六进制数,输出相应的十进制数*/int main(int argc, char *argv[]) { int intergrity(char s[]); printf("input:\n"); int i=0; char str[max]; char c; int transnum; while((c=getchar())!='\0'&&i<max) //do not write as c=getchar()!='\0', the correct one is (c=getchar())!='\0' { if((c>='0'&&c<='9')||(c>='A'&&c<='F')||(c>='a'&&c<='f')) { str[i++]=c; } else { str[i]='\0';// write str[i]='\0' ,or will be the wrong thing break; //important } } printf("after the transformation:\n"); transnum=integrity(str); printf("%d",transnum); //输出转换后的数字 return 0;}int integrity(char s[]){ int i; int n=0; for(i=0;i<max;++i) { if(s[i]>='0'&&s[i]<='9') { n=n*16+s[i]-'0'; } if(s[i]>='a'&&s[i]<='f') { n=n*16+s[i]-'a'+10; } if(s[i]>='A'&&s[i]<='F') { n=n*16+s[i]-'A'+10; } } return n; }