#include <stdio.h>
#include <string.h>
#define N 8000
struct vocabulary
{
char english[20];
char chinese[20];
};
int search(char *,struct vocabulary *);
int main()
{
FILE *fp;
struct vocabulary voc[8000];
char get_word[20];
int i;
fp=fopen("dictionary.txt","r");
if(fp==NULL)
{
return -1;
}
for(i=0;i<N;++i)
{
fscanf(fp,"%s\t%s",voc[i].english,voc[i].chinese);
}
while(1)
{
printf("请输入要查的单词(0000结束):");
scanf("%s",get_word);
if(strcmp("0000",get_word)==0)
break;
if(i=search(get_word,voc))
{
printf("“%s”的中文意思是:%s\n",get_word,voc[i].chinese);
}
else
printf("查无此词\n");
}
return 0;
}
int search(char *get_word,struct vocabulary *voc)
{
int low=0,high=N-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(voc[mid].english,get_word)==0)
return mid;
else if(strcmp(voc[mid].english,get_word)>0)
high=mid-1;
else
low=mid+1;
}
return 0;
}
因为时间不是很多了,所以我没有对题目进行扩展。。假期有时间的话再说吧。。。
运行结果: