您的位置:首页 > 其它

提高第37课时,实践2,电子词典

2015-05-29 20:55 330 查看
/*
*Copyright(c) 2015/5/28 CSDN博客
*All rights reserved.
*文件名称:main.c
*作    者:金叶
*完成日期:2015/5/28
*版本号:V1.0
*问题描述:项目2-电子词典
*做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。
编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如图:
提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NUM 8000
int main()
{
char e[8000][100],c[8000][100];
char key[20];
FILE *fp;
int i;
if ((fp=fopen("dictionary.txt","r"))==NULL){
printf("dictionary file cannot open!");
exit(0);}
else {
for (i=0;i<8000;i++){
fscanf(fp,"%s %s",e[i],c[i]); //读入英文和中文
}
}
fclose(fp);

printf("欢迎使用CSDN电子英汉词典!\n");
do{
printf("请输入要查找的英文单词:");
scanf("%s",key);
if (strcmp(key,"0000")==0)
break;
int low,high,mid,index;;
low=0,high=NUM-1;
while(low<=high)
{
mid=(low+high)/2;
if (strcmp(e[mid],key)==0)
{
index=mid;
break;
}
else if (strcmp(e[mid],key)>0)
high=mid-1;
else low=mid+1;
}
if (low>high)
{
index=-1;
printf("查无此词!\n\n");
}
else
printf("%s 的中文意思是:%s\n\n", key, c[index]);
}
while (1);
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: