电子词典

来源:互联网 发布:程序员开发软件 编辑:程序博客网 时间:2024/05/03 04:42

问题及代码:

烟台大学计算机与控制工程学院

作者:毕春超

完成日期:2017年1月4日

题目描述

输入一个单词,输出中文意思

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char e[8000][20],c[8000][20];
int number=0; 
int h(int low, int high, char *k);
int main( )
{
    char key[20];    
   
    FILE *fp;
    fp = fopen("word.txt","r");  
    if(fp==NULL)    
    {
        printf("打开失败!\n");
        exit(0);
    }
    while(!feof(fp)) 
    {
        fscanf(fp, "%s%s", e[number], c[number]);
        number++;
    }
    fclose(fp);

    printf("欢迎使用电子词典!\n");
    do
    {
        printf("请输入要查的词(0000结束):");
        scanf("%s", key);
        if (strcmp(key,"0000")==0)
            break;
        else
        {
            int low=0,high=number-1; 
            int index=h(low, high, key);
            if (index == -1)
                printf("查无此词!请确认拼写是否正确!\n");
            else
                printf("%s 的中文意思是:%s\n", key, c[index]);
        }
    }
    while(1);
    printf("欢迎再次使用!\n");
    return 0;
}
int h(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; 
        else
            low=mid+1;
    return -1; 
}

运算结果


0 0