本文題目要求:C語言實現(xiàn)單詞小幫手,供大家參考,具體內容如下
為新化等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及新化網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都做網(wǎng)站、成都網(wǎng)站設計、新化網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
一、題目分析
實驗內容:單詞小助手,要求完成以下任務:
1.改寫程序為良好程序風格(文檔注釋,函數(shù)注釋,語句注釋)。
2.將單詞測試中的功能完善,可針對做錯的單詞重復記憶。
3.查詢單詞的功能添加英文詞查詢,中文查詢的功能完善(考慮如何顯示同樣中文意義,不同的英文單詞)
提高要求:
可將程序中的不足(如數(shù)據(jù)驗證,排名功能)等根據(jù)自己的能力與理解完成。
實驗目的:
1、明確結構化程序設計的基本結構。
2、通過對問題的分析,設計合理的結構化程序解決問題;
二、關鍵算法構造
三、程序實現(xiàn)
#include#include #include #define MAX_CHAR 20 // 最大字符 #define MAX_NUM 200 // 單詞的最大個數(shù) struct word //單詞的結構體 { char en[MAX_CHAR]; // 英文形式 char ch[MAX_CHAR]; //中文形式 } s[MAX_NUM],r[MAX_NUM]; //單詞數(shù)組 int num; //單詞個數(shù) int num1; //背錯單詞個數(shù) int select=1;//select 為是否退出系統(tǒng)的標記 int d=0,c=0;//定義兩個數(shù),用于計算成績 //幫助 void help() { printf("\n本系統(tǒng)主要實現(xiàn)英語單詞學習的功能。用戶可對詞典文件中的單詞進行預覽,增刪改查。"); printf("\n同時還可進行中英、英中測試。本系統(tǒng)還提供了測試成績的顯示功能。\n"); } //從文件中讀取單詞的信息 void readfile() { FILE *fp; int i=0; fp=fopen("data.txt","r"); if(!fp)//如果沒有data.txt這個文件,則返回打開失敗 { printf("\n打開文件data.txt失敗!"); } while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2)//當數(shù)據(jù)增加一時,數(shù)據(jù)的總數(shù)i增加一 { i++; } num=i; if(0==i) printf("\n文件為空,請選擇詞典維護增加詞條!"); else printf("\n"); fclose(fp);//關閉文件 } //向文件中寫入單詞信息 void writefile() { FILE *fp; int i=0; fp=fopen("data.txt","w"); if(!fp)//如果沒有data。txt這個文件,則返回打開失敗 { printf("\n打開文件data.txt失敗!"); } for(i=0;i i;j--)//運用冒泡排序 if(strcmp(s[j-1].en,s[j].en)>0)//strcmp(s1,s2) 判斷兩個字符串s1和s2是否相同,相同返回true ,不同返回false { strcpy(temp,s[j-1].en); strcpy(s[j-1].en,s[j].en); strcpy(s[j].en,temp); strcpy(temp,s[j-1].ch); strcpy(s[j-1].ch,s[j].ch); strcpy(s[j].ch,temp); } } } //添加單詞信息 void add() { int i=num,j,flag=1; while(flag) { flag=0; printf("\n請輸入單詞的英文形式:"); scanf("%s",s[i].en); for(j=0;j\n (直至輸入0~8的數(shù)字為止)\n"); for(m=0;;m++) { n=0; input=scanf("%d",&item); while((t=getchar())!='\n'&& t!=EOF) n++; if(input==1 && n==0) break; } printf("\n"); readfile(); switch(item) { case 0: maintain();break; case 1: show();break; case 2: zytest();break; case 3: yztest(); break; case 4: list();break; case 5: help();break; case 6: wrongwordfile();zyRetest();break; case 7: wrongwordfile();yzRetest();break; case 8: select =0;break; default: printf("請在0-8之間選擇\n"); } } int main() { while(select) { menu(); system("pause");//暫停 system ("cls");//在每次執(zhí)行完一次命令后刷新屏幕 } system("pause"); return 0; }
四、調試、測試及運行結果
1)單詞預覽
2)添加單詞
3)單詞修改
4)單詞查詢
5)單詞背誦英中和中英
6)成績查詢
7)錯詞復習中英和英中
五、經(jīng)驗總結
1、復習了C語言對于文件的相關操作,如文件的輸入與輸出;并且復習了結構體的相關操作,這次建立了一個結構體的數(shù)組對單詞進行增刪改查;
2、這是我第一次建立一個完整的項目,這次的作業(yè)使我對完整的程序有了新的認識;
3、學習到了strcmp函數(shù)的相關操作;
Ps:strcmp是比較兩個字符串的大小,兩個字符串相同時返回0,第一個字符串大于第二個字符串時返回一個正值,否則返回負值.比較兩個字符串的算法是:逐個比較兩個串中對應的字符,字符大小按照ASCII碼值確定,從左向右比較,如果遇到不同字符,所遇第一對不同字符的大小關系就確定了兩個字符串的大小關系,如果未遇到不同字符而某個字符串首先結束,那么這個字符串是較小的,否則兩個字符串相等。
4、學習到了有關system函數(shù)的 使用,這次作業(yè)中使用了system(“cls”)來對每次使用編號后清空屏幕,對需要顯示的數(shù)據(jù)使用system(“pause”)使其能夠顯示;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。