《C語言及程式設計》實踐參考——電子詞典__C語言

來源:互聯網
上載者:User

返回:賀老師課程教學連結
【項目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時表示尋找區間為空白,尋找失敗}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.