开发者社区> 贺利坚> 正文

《C语言及程序设计》实践参考——电子词典

简介: 返回:贺老师课程教学链接 【项目2-电子词典】做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如图:    提示:文件中的词汇已经排序,故在查
+关注继续查看

返回:贺老师课程教学链接


【项目2-电子词典】
做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如图:
    提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。


[参考解答]
#include<stdio.h>
#include<string.h>
#include<stdlib.h>


char e[8000][20],c[8000][20]; //英文和中文数组,要由文件中读入
int wordsNum=0; //词库中实际的词汇条数
int BinSeareh(int low, int high, char *k);


int main( )
{
    char key[20];      //查询关键词
    //将文件中的数据读入到对象数组中
    FILE *fp;
    fp = fopen("dictionary.txt","r");  //以输入的方式打开文件
    if(fp==NULL)       //测试是否成功打开
    {
        printf("open error!\n");
        exit(1);
    }
    while(!feof(fp))  //读取成功,则重复从文件中读
    {
        fscanf(fp, "%s%s", e[wordsNum], c[wordsNum]);
        ++wordsNum;
    }
    fclose(fp);


    //输入待查关键词并用二分查找法进行查询
    do
    {
        printf("请输入要查的词(0000结束):");
        scanf("%s", key);
        if (strcmp(key,"0000")==0)
            break;
        else
        {
            int low=0,high=wordsNum-1;  //置当前查找区间上、下界的初值
            int index=BinSeareh(low, high, key);
            if (index == -1)
                printf("查无此词!\n\n");
            else
                printf("%s 的中文意思是:%s\n\n", key, c[index]);
        }
    }
    while(1);
    printf("欢迎再次使用!\n\n");
    return 0;
}
//二分查找,结果为所查词在数组中的下标
int BinSeareh(int low, int high, char *k)
{
    int mid;
    while(low<=high)
    {
        mid=(low + high) / 2;
        if(strcmp(e[mid],k)==0)
        {
            return mid; //查找成功返回
        }
        if(strcmp(e[mid],k)>0)
            high=mid-1; //继续在e[low..mid-1]中查找
        else
            low=mid+1; //继续在e[mid+1..high]中查找
    }
    return -1; //当low>high时表示查找区间为空,查找失败
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
笔记:Linux C语言编程基本原理与实践
笔记:Linux C语言编程基本原理与实践
41 0
笔记:Linux C语言编程基本原理与实践
笔记:Linux C语言编程基本原理与实践
71 0
《C语言程序设计与实践(第2版)》——3.3 常量与变量
字符串常量是指用一对双引号括起来的一串字符。双引号只起定界作用,双引号括起的字符串中不能是双引号(")和反斜杠(\),它们有特定的表示方法,这将在转义字符中介绍。例如,"China"、"C program"、"YES&NO"、"33312-2341"等。
1334 0
《C语言程序设计与实践(第2版)》——3.2 数据类型
基本类型也称为标准类型,其中整型表示数据值是一个整数。浮点型表示数据值包含小数,按照有效位数和数值的范围分为单精度型和双精度型。字符型代表数据值是某个字符。基本类型数据是C语言能直接处理的数据。由于受具体机器硬件和软件的限制,每一种数据类型都有它的合法取值范围。
958 0
《C语言程序设计与实践(第2版)》——第3章 基本数据类型和表达式 3.1基本语法单位
在C语言中,关键字有特定的语法含义,用来说明某一固定含义的语法概念。程序员只能使用关键字,而不能给它们赋以新的含义,例如不能作为变量名,也不能用作函数名。表3-1中列出了ANSI C中的32个关键字,主要是C的语句名和数据类型名等。
1422 0
《C语言程序设计与实践(第2版)》——2.8 算法
人们使用计算机,就是要利用计算机来处理各种不同的问题,而要做到这一点,人们就必须事先对各类问题进行分析,确定解决问题的具体方法和步骤,再根据这些步骤,编制一组让计算机执行的指令(即程序),让计算机按人们指定的规则有效地工作。
1728 0
《C语言程序设计与实践(第2版)》——2.7 函数
C语言的程序是由一个个函数构成的,除了有且必须有的main主函数以外,用户也可以自己定义函数。此外,C语言的编译系统还提供了一些库函数。函数为程序的封装提供了一种简便的方法,在其他地方使用函数时不需要考虑它是如何实现的。
1007 0
C语言及算法设计课程实验五:循环结构程序设计
C语言及算法设计课程实验五:循环结构程序设计
16 0
+关注
贺利坚
烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
文章
问答
文章排行榜
最热
最新
相关电子书
更多
为什么要学函数式编程?
立即下载
Java开发手册1.3.0
立即下载
Java开发手册1.2.0
立即下载