1. 程式人生 > >C語言單詞小助手

C語言單詞小助手

1.改寫程式為良好程式風格(文件註釋,函式註釋,語句註釋)。
2.將單詞測試中的功能完善,可針對做錯的單詞重複記憶。
3.查詢單詞的功能新增英文詞查詢,中文查詢的功能完善(考慮如何顯示同樣中文意義,不同的英文單詞)
提高要求:
可將程式中的不足(如資料驗證,排名功能)等根據自己的能力與理解完成。

1.首先我對原本整個程式碼的格式進行了調整,使程式碼看起來更加的舒服一些

2.先將第三點要求放到第二點來陳述吧.原本的程式碼只能進行中輸入中文查詢單詞,對此我添加了輸入英文查詢單詞的,這和原本的中文查詢單詞的程式碼基本一致,只需修改幾個變數,用一個switch語句給你選擇兩種查詢方式即可.

一個相同的中文意思,會有多個不同的英文單詞,原來的程式碼進行遍歷之後就break了迴圈,自然只能查詢到一個英文單詞,我做的是遍歷整個陣列,同時用一個下標index = -1 進行標記,同時列印該單詞的中英文,下標index的值改為當前陣列的下標i ,繼續遍歷列印,同時標記,遍歷完整個陣列就可以列印多個擁有相同中文解釋的不同的英文單詞. 而index的作用就是,如果遍歷完整個陣列index仍等於-1,那麼就說明沒有查到該單詞,可以進行查詢為空的判斷.具體程式碼如下.

void search()
{
    int i = 0, choose = 0, flag = 1;
    int index = -1; //檢索到該單詞的中文或者英文的下標
    int option = 0;
    char ch[MAX_CHAR];   //中文形式
    char en[MAX_CHAR];
    while(1){
        printf("請輸入1.以中文查詢單詞2.以英文查詢單詞0.退出");
        scanf("%d", &option);//可選中英文查詢
        switch(option)
        {
        case 1: 
            while(1)
            {
                printf("\n請輸入你要查詢的單詞中文形式:");    
                scanf("%s", ch);
                for(i=0; i<num; i++)//遍歷找到所有該中文對應的單詞
                    if(strcmp(s[i].ch, ch) == 0 && index == -1)  //輸出該單詞的中英文形式
                    {    
                        printf("\n英文形式       中文形式        ");
                        printf("\n   %-12s%12s", s[i].en, s[i].ch);    
                        index = i;
                    }else if(strcmp(s[i].ch, ch) == 0)
                    {
                        printf("\n   %-12s%12s", s[i].en, s[i].ch);
                        index = i;
                    }
                    if(index == -1)        //如果沒找到該單詞,下標仍為初始值-1
                    {
                        flag = 0;         //讓flag = 0; 表示沒有該單詞
                    }
                    if(!flag)               
                        printf("\n沒有這個單詞!");
                    index = -1;          //將index 和flag的值重新初始化為原來的值
                    flag = 1;
                    printf("\n繼續查詢請選1,返回上一級請選0:");     //選擇是否繼續查詢
                    scanf("%d", &choose);
                    if(choose == 0) 
                        break;
            }
            break;
        case 2:                         //查詢該英文形式對應的單詞,方法如上
            while(1)
            {
                printf("\n請輸入你要查詢的單詞英文形式:");    
                scanf("%s", en);
                for(i=0; i<num; i++)//先找到該英文形式對應的序號
                    if(strcmp(s[i].en, en) == 0)
                    {    
                        printf("\n英文形式       中文形式        ");
                        printf("\n   %-12s%12s", s[i].en, s[i].ch);    
                        index = i;
                    }
                    if(index == -1)
                    {
                        flag = 0;
                    }
                    if(!flag)     
                        printf("\n沒有這個單詞!");
                    index = -1;
                    flag = 1;
                    printf("\n繼續查詢請選1,返回上一級請選0:");
                    scanf("%d", &choose);
                    if(choose == 0) 
                        break;
            }
        default:
            return;
        }
    }

   
}

3.做錯單詞的重複記憶,以及成績的排名.資料驗證的優化我是同時處理的,由於有中-英, 英-中兩種測試方式,兩種測試方式的功能新增,其實是一致的,於是做錯單詞的重複記憶,以及成績的排名,資料驗證的優化我是隻在中文意思寫出英文單詞的檢測中進行新增,雲本的程式碼一個隨機單詞的測試,需要不斷輸入單詞,無法跳出,直到你輸入單詞正確為止,對此我進行了修改,當你輸錯三次的時候,你可以繼續該單詞的測試,也可以選擇重新隨機一個單詞進行測試,於此同時,輸錯三次的單詞會錄入到錯題庫陣列中,並且可以寫出到wrong.txt的一個錯題庫中,在主選單裡添加了一項可以回顧錯題的功能,將做錯的單詞進行重複記憶,

這些錯題庫中單詞的中文和英文都是直接給出的,當然也可以設計成測試模式,給英文,寫中文,或者給中文寫英文,與原始碼中的功能模組中的程式碼是相似的.

關於成績的排名:原來的程式碼是輸入一次錯誤扣10分,輸入一次正確加10分.無限累加,給一個總分,我的理解是,會有多個人進行單詞測試,而在每次測試結束的時候,進行一個名字+成績的一個錄入, 存完會對成績的陣列進行從高到低的排序,排行榜的人數最大為10人,最低分會進行覆蓋.

相關推薦

C語言單詞助手

1.改寫程式為良好程式風格(文件註釋,函式註釋,語句註釋)。 2.將單詞測試中的功能完善,可針對做錯的單詞重複記憶。 3.查詢單詞的功能新增英文詞查詢,中文查詢的功能完善(考慮如何顯示同樣中文意義,不同的英文單詞) 提高要求: 可將程式中的不足(如資料驗證,排名功能)等根據自

C語言:英文單詞助手

                                                               英文單詞小助手 題目需求分析:        英文單詞小助手是幫助學生背誦單詞的軟體,使用者可以選擇背誦的詞庫,並可以編輯自己的詞庫,還應有詞語預

C語言——關機程式

C語言實現簡單的關機小程式,立即關機和定時關機 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<windows.h> int main() { p

C語言有趣程式

問題:  烏龜想要環遊旅行,剛開始第一秒走了1米,隨著體力和毅力的減退第二秒走了二分之一米,第三秒走了三分之一米…問:什麼時候走10米,一小時能走多少米。 #include<stdio.h> int main() { int t; double s,S; for(t

C語言單詞的翻轉問題

最近一直在做PTA的程式設計題,發現這些小程式還是蠻有意思的。關於單詞的翻轉:在英文句子中,翻轉句子而英文單詞的順序不變,各單詞以空字元隔開。 基本的思路是:首先翻轉整個句子,然後翻轉單詞。 個人感覺這個方法理解不難(也是從別的大佬那借鑑的)[link]https://blog.cs

c語言操作符歸納

1.算數操作符      +  -   *   /   % / 操作符的兩個運算元必須都為整數,執行整數除法.如果有浮點數就執行浮點數除法.  

C語言程式設計遊戲——貪吃蛇,覺得不錯請關注點贊加轉發!

C/C++企業實戰級課程資源(素材+原始碼+視訊)、編譯大禮包免費分享,需要的加學習群892643663。 #define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h>

c語言程式遊戲——飛機遊戲(一)

        下面來介紹一個簡單的遊戲,其中用到的c語言知識屬於基礎內容,所以特別容易上手                                             ~~~~~~~飛機遊戲~~~~~~~~~ 首先按照常理我們知道,肯定要在介面上繪製出一個飛

c語言程式遊戲——飛機遊戲(二)

                                   在接下來,我們需要對飛機新增一些屬性:                                               1.利用鍵盤控制飛機的移動                      

c語言程式遊戲——飛機遊戲(三)

                                      接下來,我們需要在進行以下操作:                                                 1.在程式裡面新增敵機                      

C語言掃雷遊戲

遊戲大致流程 標頭檔案:game.h #ifndef _GAME_H_ #define _GAME_H_ #include<stdio.h> #include<stdlib.h> #include<windows.h> #incl

C語言程式設計知識三

關於函式指標: 函式指標的宣告方法為: 函式型別 (標誌符指標變數名) (形參列表); 注1:“函式型別”說明函式的返回型別,“(標誌符指標變數名 )”中的括號不能省,若省略整體則成為一個函式說明,說明了一個返回的資料型別是指標的函式,後面的“形參列表”表示指標變數指向的函式所帶的引

C語言程式設計知識二

1.巨集函式的使用: 在這裡只是簡單介紹一下它最常用的用法。在程式設計過程中,巨集定義可以幫助我們防止出錯,提高程式碼的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者程式碼段,這些功能既可以寫成函式,也可以封裝成為巨集定義。例如想要進行強制型別轉換 #define T

C語言程式設計知識一

入職以後,對於以前不怎麼接觸或者忘記不怎麼能回憶起來的部分程式設計知識,我做了一些筆記,想把他們記錄在這裡,以便能夠給萬一遇到同樣問題的人一點點的參考。或許在大牛眼裡,我這些都是基礎,但是在我這個新人眼裡,還是需要慢慢積累呀!以後慢慢不斷更新…… 1.關於變數初始化以及指標初始化,變數沒有初

c語言堆的實現-優先佇列

一、背景 libevent 中有定時事件的管理,使用者可以把超時的定時事件插入到 管理器中,當時間到了之後觸發使用者的回撥函式處理; 查看了原始碼發現,定時器的資料結構其實是由最小堆來實現的。 二、相

C語言

#include <stdio.h> #define heap_step 128 typedef struct _heap_t {     void** data;

C語言學習問題總結!!!

字串轉整型 #include <stdlib.h> ... char cs[] = "123"; int num = atoi(cs); 分隔字串 #include&l

C語言程式設計測試。輸出1-100內的所有素數。

#include<stdio.h> //輸出100之內的所有素數 int main() {     int i;     int j;     int flag = 1;     for(i = 2;i <= 100;i++)     {        

C語言---單詞檢查

已知有一個正確單詞索引表(儲存在當前目錄下的檔案index.txt中,且全為小寫字母,按照字典序由小到大排列,每個單詞獨佔一行),編寫程式利用該單詞表對某一英文文章(儲存在當前目錄下的另一個檔案in.txt中)進行單詞正確性檢查,若該英文文章中出現的單詞(只有連

C語言每日練(二)——開燈問題

例:開燈問題 有n盞燈,編號為1~n。第1個人把所有燈開啟,第2個人按下所有編號為2的倍數的開關(這些燈將被關掉),第3個人按下所有編號為3的倍數的開關(其中關掉的燈將被開啟,開著的燈將被關閉),依次類推。一共有k個人,問最後有哪些燈開著?輸入:n和k,輸出開著的等的編號。