课程实践——第三个题——电子词典

来源:互联网 发布:php简历项目经验 编辑:程序博客网 时间:2024/06/05 19:45
/*Copyright (c) 2016, 烟台大学计算机学院 All rights reserved.文件名称:first.cpp作    者:颜丙齐完成日期:2017年 1 月 6 日版 本 号:v1.0题目描述 电子词典输入 想要查找的词输出  词的释义样例输入 love样例输出这是英译汉电子词典!!!制作人:颜丙齐指导老师:贺利坚老师结束程序请输入:0000请输入您要查找的单词:love您要找的单词的注释为:v.爱,喜欢;n.爱情请输入您要查找的单词:0000*/#include <stdio.h>#include <stdlib.h>#include<string.h>struct Word{    char English[20];    char translate[50];};//用结构体代表一个单词,描述单词的拼写和注释。void view();int  find_word(char *,struct Word *,int );//二分查找函数,有三个参数,第一参数为要查找的单词,第二个参数为查找单词的词典,第三个参数为词典的长度int open_file(struct Word *);//打开文件int   find_one_word(struct Word *dictionary,int k);//可以完成查找一个单词的所有功能int main(){    int k;    int r;    view();    struct Word dictionary[10000];    k=open_file(dictionary);    do    {      r=find_one_word(dictionary,k);    }    while(r>=0);    return 0;}/*************************************************************功能描述:输出程序的说明输入参数:无返 回 值:无其他说明:输出几句话,解释该程序*************************************************************/void view(){    printf("这是英译汉电子词典!!!\n");    printf("制作人:颜丙齐\n");    printf("指导老师:贺利坚老师\n");    printf("结束程序请输入:0000\n");}/*************************************************************功能描述:完整的进行查找一个单词输入参数:dictionary-结构体数组的首地址           k-结构体的长度返 回 值:m-用来判断是否结束程序其他说明:无*************************************************************/int   find_one_word(struct Word *dictionary,int k){    printf("请输入您要查找的单词:");    char n[20];    scanf("%s",n);    int r;//用来接受函数的返回值;    int m;    r=find_word(n,dictionary,k);    int t;    t=(n[0]==48)+(n[1]==48)+(n[2]==48)+(n[3]==48);    if(t==4)    {        m=-1;    }    else    {        if(r<0)        {            printf("对不起,没有查到这个词!!!\n");        }        else        {            printf("您要找的单词的注释为:%s\n",dictionary[r].translate);        }        m=1;    }    return m;}/*************************************************************功能描述:打开文件,并读入文件数据输入参数:dictionary-保存文件的结构体返 回 值:k-结构体数组的长度其他说明:无*************************************************************/int open_file(struct Word *dictionary){    FILE *fp1;    if((fp1=fopen("dictionary.txt","r"))==NULL)    {        printf("不能打开文件!!!\n");        exit(1);    }    int k=0;//计算单词的个数    while(!feof(fp1))    {        fscanf(fp1,"%s%s",dictionary[k].English,dictionary[k].translate);        ++k;    }    fclose(fp1);    return k;}/*************************************************************功能描述:查找一个单词返回他所在数组的下标输入参数:dictionary-保存文件的结构体           k-结构体数组的长度返 回 值:index-表明是否查到单词其他说明:无*************************************************************/int  find_word(char *n,struct Word *dictionary,int k){    int index=-1;    int first=0,finall=k-1,middle;    while(first<=finall)    {        middle=(first+finall)/2;        if(strcmp(n,dictionary[middle].English)==0)        {            index=middle;            break;        }        else if(strcmp(n,dictionary[middle].English)<0)            finall=middle-1;        else            first=middle+1;    }    return index;}
学习心得:以前感觉自己学的还可以,可是一到用的时候就发现了,其实还差的远,应该保持一颗平常心,好好做该做的事。

0 0
原创粉丝点击