程序设计实训报告--电子词典

本文介绍了如何设计一个简单的电子词典程序,该程序从dictionary.txt文件中读取近8000个英汉对照词汇,并使用Word类来存储每个词条。用户可以输入英文单词查询词性和中文解释,系统支持连续查询并自定义退出方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



题目描述

电子词典

做一个简单的电子词典   做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。建一个表示词条的类WordWord类的一个对象可以描述一个词,将文件中的内容读到对象数组中等待查询。由用户输入英文词,显示词性和中文释义。允许连续查词,自行设计退出查词状态的方式。

代码:

/*
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");
}


运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值