c项目3

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void menu();
void open();
int seach();
void show(int);
char english[8000][20],chinese[8000][20];//用来存储单词的数组
char key[20];//保存要查单词的变量
int num=0;//单词的数目
int main()
{
    char c;//控制程序开始的变量
    int n;
    menu();
    scanf("%c",&c);
    if(c=='y'||c=='Y')
    {
        open();
        do
        {
            n=seach();
            if(n==-2)
                break;
            else
                show(n);
        }
        while(1);
        printf("欢迎您再次使用!\n");
    }
    else
        printf("欢迎您再次使用!\n");
    return 0;
}
/*************************************************************
功能描述:显示友好界面
输入参数:无
返 回 值:无
其他说明:无
/************************************************************/
void menu()
{
    printf("请把字典文件放在指定的D:\\路径下,以确保程序能够顺利运行\n");
    printf("准备好后按Y键开始程序,按任意键退出\t");
}
/*************************************************************
功能描述:打开文件并将数据读入数组
输入参数:无
返 回 值:无
其他说明:无
/************************************************************/
void open()
{
    FILE *fp;//定义文件指针
    fp=fopen("D:\\dictionary.txt","r");
    if(fp==NULL)
    {
        printf("打开失败!请确认字典文件是否在D:\\路径下\n");
        exit(0);
    }
    while(!feof(fp))
    {
        fscanf(fp,"%s %s",english[num],chinese[num]);
        num++;
    }
    fclose(fp);
}
/*************************************************************
功能描述:利用二分法查找目标单词
输入参数:key-要查找的单词
返 回 值:index-控制查找结果的变量
其他说明:无
/************************************************************/
int seach()
{
    int low=0,high=num-1,index=-1,mid;//定义查找区间的上下界
    printf("请输入你要查找的单词(0000结束)\n");
    scanf("%s",key);
    if(strcmp(key,"0000")==0)
        return -2;
    else
    {
        while(low<=high)
        {
            mid=(low+high);
            if(strcmp(english[mid],key)==0)
            {
                index=mid;
                break;
            }
            else if(strcmp(english[mid],key)>0)
                high=mid-1;
            else
                low=mid+1;
        }
    }
    return index;
}
/*************************************************************
功能描述:输出查找结果
输入参数:无
返 回 值:无
其他说明:无
/************************************************************/
void show(int index)
{
    if(index==-1)
        printf("对不起,没有查找到%s的意思\n",key);
    else
        printf("%s的中文意思是:%s\n",key,chinese[index]);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章