C語言實現單詞小助手改進版

2022-10-03 23:06:31 字數 2767 閱讀 4838

一.題目分析

單詞小助手,要求完成以下任務:

1.改寫程式為良好程式風格(文件注釋,函式注釋,語句注釋)。

2.將單詞測試中的功能完善,可針對做錯的單詞重複記憶。

3.查詢單詞的功能新增英文詞查詢,中文查詢的功能完善(考慮如何顯示同樣中文意義,不同的英文單詞)

提高要求:

可將程式中的不足(如資料驗證,排名功能)等根據自己的能力與理解完成。

二.演算法構造(新增函式)

流程圖(1)總流程圖

(2)search()函式流程圖

(3)repeat()函式流程圖

三.程式實現

#include

#include

#include

#define max_char 20 // 最大字元

#define max_num 200 // 單詞的最大個數

struct word

//單詞的結構體

s[max_num]; //單詞陣列

int num; //單詞個數

int select=1;//select 為是否退出系統的標記

int d=0,c=0;//c為答錯的次數,d為答對的次數

//幫助

void help()

//從檔案中讀取單詞的資訊

void readfile()

while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2)

num=i;

if(i==0)

printf("\n檔案為空,請選擇詞典維護增加詞條!");

else

printf("\n");

fclose(fp);//關閉檔案

}//向檔案中寫入單詞

void writefile()

for(i=0;ii;j--)

if(strcmp(s[j-1].en,s[j].en)>0)

}} //定義記憶檔案函式,用來記憶背誦錯誤的單詞,將背誦過程中錯誤的單詞寫入repeat檔案

void readrepeatfile()

while(fscanf(fp,"%s %s",s[i].en,s[i].ch)==2)

num=i;

if(i==0)//沒有錯題

printf("\n沒有錯題");

else

printf("\n");

fclose(fp);

}//新增單詞資訊

void add()

flag=0;

} if(!flag)

printf("\n沒有這個單詞!");

}//單詞預覽

void show()

fclose(fp);//關閉檔案

printf("\n恭喜你,回答正確,加10分!\n\n");d=d+1;

printf("\n繼續測試請選1,返回上一級請選0:");

scanf("%d",&choose);

if(choose==0)

return; }}

//增強錯誤單詞的背誦功能

void repeat()

printf("\n恭喜你,回答正確!\n\n");

printf("\n繼續測試請選1,返回上一級請選0:");

scanf("%d",&choose);

if(choose==0)

return;

}break;

case 2:

while(1)

printf("\n恭喜你,回答正確!\n\n");

printf("\n繼續測試請選1,返回上一級請選0:");

scanf("%d",&choose);

if(choose==0)

return;

}break;

default:

return;

} }}//成績列表

void list()

//詞典維護

void maintain() }}

//使用者介面

void menu()

}int main()

system("pause");

return 0;

}四.經驗歸納

這次的上機實驗很有趣,但是也很高階,老師一開始就給了乙個基本框架了,我只需要往裡面增添,修改一些些就好了。

(1)首先,我把主介面的選擇序號改了一點點,因為以我個人而言,我用不慣從0開始。也在裡面根據我自己的理解,加了些注釋。

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

(3)在add()函式中,我新增了乙個for迴圈,是錄入單詞變得更簡潔了。

(4)我也加入了錯題功能,在測試中,回答錯誤的單詞會被加入在repeat.txt檔案中,然後用隨機數,抽取出來,再次回答,在這裡,我改了一下下計分,在錯題庫的**來重新回答的題目,答對不加分,答錯還是會扣分,所以,還是最好有了沒記住的單詞 就趕快記下它哦。

(5)除錯中發現我在search()中把s[i].en和s[i].ch給弄反了。

本文標題: c語言實現單詞小助手改進版

本文位址:

C語言實現單詞小助手

問題描述 對於任意給定的單詞小助手程式 現有功能可以實現查單詞的增刪改查 中英 英中測試和分數顯示功能 完善其單詞查詢 錯誤單詞重複記憶和排行功能。問題分析 首先附上給出的初始 已經可以實現基本功能 include include include define max char 20 最大字元 de...

單詞小助手(C語言改進)

一 題目分析 單詞小助手,要求完成以下任務 1.改寫程式為良好程式風格 文件注釋,函式注釋,語句注釋 2.將單詞測試中的功能完善,可針對做錯的單詞重複記憶。3.查詢單詞的功能新增英文詞查詢,中文查詢的功能完善 考慮如何顯示同樣中文意義,不同的英文單詞 提高要求 可將程式中的不足 如資料驗證,排名功能...

C語言實現linux網絡卡檢測 改進版

c語言 shell 實現linux網絡卡狀態檢測 和 c語言實現linux網絡卡連線檢測 2文的方法各有缺陷,比如有些系統執行ifconfig需要root許可權,要不就不支援ioctl fd,siocgmiiphy,ifr 這樣的操作。以下給出了c語言實現linux網絡卡連線檢測 的改進版實現與c語...