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]);
}

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