程序设计实训报告-电子词典
发布时间
阅读量:
阅读量
/*
功能描述:
电子词典:
做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如图:
提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
7. 输入参数:
first表示词典中第一个单词,即:int first=0;
last表示词典中最后一个单词,即:int last=num-1;
num表示单词个数,即:num++;
english和chinese分别表示英文单词和中文单词,即:english[8000][20],chinese[8000][20];
13. 返 回 值:0
其他说明:无
*/
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void open();
int find();
char english[8000][20],chinese[8000][20];
char key[20];
int num=0;
int main()
{
int n;
open();
do
{
printf("请输入你要查找的单词(0000结束):");
n=find();
if(n==0)
break;
else
{
if(n==-1)
{
printf("对不起,没有查找到%s的意思\n",key);
printf("\n");
}
else
{
printf("%s的中文意思是:%s\n",key,chinese[n]);
printf("\n");
}
}
}
while(1);
printf("欢迎您再次使用!\n");
return 0;
}
void open()
{
FILE *fp;
fp=fopen("dictionary.txt","r");
if(fp==NULL)
{
printf("词典打开失败\n");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%s%s",english[num],chinese[num]);
num++;
}
fclose(fp);
}
int find()
{
int first=0,last=num-1,index=-1,mid;
scanf("%s",key);
if(strcmp(key,"0000")==0)
return 0;
else
{
while(first<=last)
{
mid=(first+last)/2;
if(strcmp(english[mid],key)==0)
{
index=mid;
break;
}
else if(strcmp(english[mid],key)>0)
last=mid-1;
else
first=mid+1;
}
}
return index;
}
全部评论 (0)
还没有任何评论哟~
