题目描述
电子词典
做一个简单的电子词典 做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。建一个表示词条的类Word,Word类的一个对象可以描述一个词,将文件中的内容读到对象数组中等待查询。由用户输入英文词,显示词性和中文释义。允许连续查词,自行设计退出查词状态的方式。
代码:
/*
Copyright (c) 2016,烟台大学计算机与控制工程学院
All Rights Reserved.
文件名称:电子词典
作 者:胡寅生
完成日期:2017年1月4日
版 本 号;v1.0
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void start(char words);
/*************************************************************
功能描述:主函数
输入参数:words-控制符
返 回 值:0
其他说明:无
*************************************************************/
int main()
{
char words;//控制程序开始的变量以及储存要查单词的变量
printf("按 回车键 开始,按任意键退出....\t");//起始动作
scanf("%c",&words);//输入指令
start(words);
return 0;
}
/*************************************************************
功能描述:找目标单词
输入参数:key-目标单词
num-单词个数
返 回 值:无
其他说明:无
*************************************************************/
void start(char words)
{
FILE *fp=NULL;//定义文件指针
char key[20];
int num=0;//单词的个数
char English[8000][20],Chinese[8000][20];//用来存储单词的数组
if(words=='\n'||words=='\n')
{
fp=fopen("D:\\dictionary.txt","r");//打开文件
while(!feof(fp))//将文件中所有的字符串读完
{
fscanf(fp,"%s%s",English[num],Chinese[num]);//将字符串读入指针
num++;//通过num++将单词依次储存
}
do
{
int low=0,high=num-1,index=-1,mid;//定义查找区间的上下界
printf("请输入你想要查找的单词(以0000结束):");//提示如何结束
scanf("%s",key);//输入要查找的词
if(strcmp(key,"0000")==0)//如果满足条件,就退出
break;//跳出程序
else
{
while(low<=high)//二分查找法
{
mid=(low+high)/2;
if(strcmp(English[mid],key)==0)
{
index=mid;
break;
}
else if(strcmp(English[mid],key)>0)
high=mid-1;
else
low=mid+1;
}
}
if(index==-1)
printf("很遗憾词库中无%s的意思\n",key);
else
printf("%s的中文意思是:%s\n",key,Chinese[index]);
printf("\n");
}
while(1);//利用do-while循环
printf("欢迎您再次使用!\n");
}
else
printf("欢迎您再次使用!\n");
}
运行结果: