题意:查询的题目,这道题目学习了bsearch()函数,二分查找。 代码: #include<iostream> using namespace std; struct zidian { char find[15]; char in[15]; }; zidian s[100020]; int cmp(const void *a,const void *b)//字典数排序 { return strcmp( ((zidian *)a)->find,((zidian *)b)->find); } int main() { int i=0,j=0,k; char aa[100]; zidian *output=NULL; while (gets (aa) && strlen(aa)) { for(j=0;aa[j] !=' ';j++) s[i].in[j] = aa[j]; s[i].in[j]=0; j++; for(k=0;aa[j];j++,k++) s[i].find[k]=aa[j]; s[i].find[k]=0; i++ ; } qsort(s,i,sizeof(s[0]),cmp); zidian input; while(scanf("%s",&input.find)!=EOF) { output=(zidian *)bsearch(&input,s,i,sizeof(zidian),cmp);//二分查询 if(output) printf("%s/n",output->in); else printf("eh/n"); output=NULL; } return 0; }