课程设计3 电子词典

来源:互联网 发布:python数据挖掘常用包 编辑:程序博客网 时间:2024/06/01 22:49
Copyright (c) 2016 烟台大学计算机与控制工程学院All rights reserved.文件名称:test.cpp作者:何定钦完成日期:2016年1月3日题目描述:       做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,    词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,    分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,    直到输入“0000”结束。    提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。输入:    查询单词输出:    单词意思分析:#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 8000char e[N][20],c[N][20];   /*两个全局字符型变量,分别为存储英语单词的数组以及中文意思的数组*/void search();/*功能:1.打开文件2读入文件中的数据3.调用函数*/int main(){    int i;  /*循环次数*/    FILE *fin;          /* 输入文件 */    fin=fopen("dictionary.txt","r");     /* 打开输入文件读 */    if(!fin) /* 文件打开失败 */    {        fprintf(stderr,"error open file!\n");   /* 输出错误信息到标准错误设备 */        exit(-1);   /* 强制退出,并返回错误码 */    }    else    {        for(i=0; i<N; i++)            fscanf(fin,"%s%s",e[i],c[i]); /*将文件中的数据读入*/        search();  /*调用函数*/        fclose(fin);  /*关闭文件*/    }    return 0;}/*功能:二分法查单词的意思*/void search(){    int low,high,mid;  /*分别表示为e数组中下限,上限以及中间位置*/    int r;  /*scanf的返回值*/    char s[20]; /*使用者输入的单词*/    printf("请输入你要查询的单词(0000结束):\n");    while((r=scanf("%s",s))!=EOF)    {        if(strcmp(s,"0000")==0) /*输入的字符串为0000则结束查询*/            break;        else        {            low=0;            high=N-1;            mid=0;            while(low<=high)            {                mid=(low+high)/2;                 if(strcmp(e[mid],s)==0) /*判断输入的字符串是否与文件中的相同*/                {                    printf("%s 的中文意思是: %s\n",s,c[mid]);                    break;                }                else if(strcmp(e[mid],s)>0)  /*若输入的字符串小于此时文件中的字符串,则在e[low...mid-1]中寻找,否则在e[mid+1...high]中寻找*/                    high=mid-1;                else                    low=mid+1;                }            if(low>high)   /*没有找到该字符串*/                printf("没有此单词的意思!\n");        }        printf("请输入你要查询的单词(0000结束):\n");    }    return;}


结果:

知识点总结:

        文件的打开方式,以及文件数据的读入方式,还有二分法的学习。

心得体会:

        卡在怎样打开文件,并怎样读文件当中的数据,以及使用二分法查询单词的时候,如果没有找到该单词,不知道结束查询的方式是什么。

 

0 0