版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 算法與數(shù)據(jù)結(jié)構(gòu)</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題 目: 文章編輯 </p><p> 2012年 5月 31 日</p><p><b> 目錄</b></p>
2、<p> 1.問題描述及要求1</p><p><b> 1.1問題描述1</b></p><p><b> 1.2基本要求1</b></p><p><b> 2.需求分析1</b></p><p> 2.1輸入數(shù)據(jù)的形式和范圍1</p&
3、gt;<p><b> 2.2輸出形式1</b></p><p> 3.算法思想描述1</p><p><b> 4.概要設(shè)計(jì)1</b></p><p> 4.1統(tǒng)計(jì)字符個數(shù)函數(shù)及算法流程圖1</p><p> 4.2統(tǒng)計(jì)指定字符串個數(shù)函數(shù)及算法流程圖2</p
4、><p> 4.3刪除指定字符串函數(shù)及算法流程圖3</p><p><b> 5.詳細(xì)設(shè)計(jì)4</b></p><p> 5.1文章輸入函數(shù)4</p><p> 5.2文章輸出函數(shù)4</p><p> 5.3統(tǒng)計(jì)字符個數(shù)函數(shù)4</p><p> 5.4統(tǒng)計(jì)指
5、定字符串個數(shù)函數(shù)5</p><p> 5.5刪除指定字符串函數(shù)5</p><p> 5.6源程序清單6</p><p> 6.測試數(shù)據(jù)及分析11</p><p> 6.1文章輸入函數(shù)11</p><p> 6.2文章輸出函數(shù)11</p><p> 6.3統(tǒng)計(jì)字符個數(shù)函數(shù)
6、12</p><p> 6.4統(tǒng)計(jì)指定字符串個數(shù)函數(shù)12</p><p> 6.5刪除指定字符串函數(shù)13</p><p> 7.課程設(shè)計(jì)總結(jié)14</p><p><b> 8.參考資料14</b></p><p><b> 文章編輯</b></p>
7、;<p><b> 1.問題描述及要求</b></p><p><b> 1.1問題描述</b></p><p> 功能:輸入一頁文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個數(shù)。</p><p><b> 1.2基本要求</b></p><p> ?。?)靜態(tài)
8、存儲一頁文章,每行最多不超過80個字符,共N行;</p><p> (2)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);</p><p> ?。?)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);</p><p> (4)刪除某一子串,并將后面的字符前移;</p><p> (5)存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實(shí)現(xiàn)相應(yīng)的功能。
9、</p><p><b> 2.需求分析</b></p><p> 2.1輸入數(shù)據(jù)的形式和范圍</p><p> 可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號。</p><p><b> 2.2輸出形式</b></p><p> ?。?)分行輸出用戶輸入的各行字符
10、;</p><p> (2)分4行輸出"全部字母數(shù)"、"數(shù)字個數(shù)"、"空格個數(shù)"、"文章總字?jǐn)?shù);</p><p> ?。?)輸出刪除某一字符串后的文章;</p><p><b> 3.算法思想描述</b></p><p> 本程序是對輸入的文字進(jìn)
11、行操作,故使用靜態(tài)的字符數(shù)組作為存儲結(jié)構(gòu),定義如下:</p><p> char str[N][80]; // 存儲文章的字符數(shù)組</p><p> 對于文本的輸入,采用頭插法將文本信息存儲到鏈表已申請好的存儲空間中;對于文本內(nèi)容的統(tǒng)計(jì),使用循環(huán)對已存儲的文章進(jìn)行匹配,大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字?jǐn)?shù)直接通過條件比較即可得到;對于文本內(nèi)容的處理,查找部分仍是使用循環(huán)對已存儲的文章
12、進(jìn)行匹配,判斷需要查找的字符或者字符串是否與文章中某部分內(nèi)容相同,如果存在相同的記錄相同的個數(shù)。刪除部分先使用程序的查找功能對文章中需要刪除的字符或者字符串進(jìn)行查找,然后對其進(jìn)行刪除。</p><p><b> 4.概要設(shè)計(jì)</b></p><p> 本程序主要定義了3個函數(shù):void count(),void checkstring(),void outputd
13、elstr()</p><p> 4.1統(tǒng)計(jì)字符個數(shù)函數(shù)及算法流程圖</p><p> 函數(shù):void count()</p><p> 功能:統(tǒng)計(jì)字母、數(shù)字、空格的個數(shù)</p><p><b> 流程圖如下:</b></p><p> 4.2統(tǒng)計(jì)指定字符串個數(shù)函數(shù)及算法流程圖</
14、p><p> 函數(shù):void checkstring()</p><p> 功能:統(tǒng)計(jì)某一個指定的字符串的個數(shù)</p><p><b> 流程圖如下:</b></p><p> 4.3刪除指定字符串函數(shù)及算法流程圖</p><p> 函數(shù):void outputdelstr()</p&
15、gt;<p> 功能:刪除某一個指定的字符串</p><p><b> 流程圖如下:</b></p><p><b> 5.詳細(xì)設(shè)計(jì)</b></p><p><b> 5.1文章輸入函數(shù)</b></p><p> int intput() //文章輸入
16、函數(shù)</p><p><b> { </b></p><p> printf("請輸入第 %d 行文字\n",i+1); </p><p> gets(str[i]); //讀取數(shù)組的內(nèi)容</p><p> if(strlen(str[i])>80)</p><p&
17、gt;<b> {</b></p><p> printf("每行最多輸入80字符,請重新輸入第 %d 行文字\n",i+1); </p><p> /*當(dāng)每行輸入文字大于80字符時(shí)輸出此語句,并且重新輸入文字*/</p><p> gets(str[i]);</p><p><b&g
18、t; }</b></p><p> return strlen(str[i]); //返回?cái)?shù)組的長度</p><p><b> }</b></p><p><b> 5.2文章輸出函數(shù)</b></p><p> void output() //文章輸出函數(shù)</p&g
19、t;<p><b> { </b></p><p> for(i=0;i<N;i++) </p><p><b> { </b></p><p> puts(str[i]); //輸出數(shù)組的內(nèi)容</p><p><b> } </b><
20、;/p><p><b> } </b></p><p> 5.3統(tǒng)計(jì)字符個數(shù)函數(shù)</p><p> void count() //統(tǒng)計(jì)字符個數(shù)的函數(shù) </p><p> { for(j=0;j<len[i];j++) </p><p><b> { <
21、;/b></p><p> if(str[i][j]>='a' && str[i][j]<='z') cnum++; //統(tǒng)計(jì)小寫字母 </p><p> if(str[i][j]>='A' && str[i][j]<='Z') cnum++; //統(tǒng)計(jì)大寫字母
22、 </p><p> if(str[i][j]>='0' && str[i][j]<='9') dnum++; //統(tǒng)計(jì)數(shù)字 </p><p> if(str[i][j]==' ') snum++; //統(tǒng)計(jì)空格</p><p><b> } </b><
23、/p><p><b> } </b></p><p> 5.4統(tǒng)計(jì)指定字符串個數(shù)函數(shù)</p><p> void checkstring() //統(tǒng)計(jì)指定字符串個數(shù)函數(shù)</p><p><b> { </b></p><p> char cstr[20]; &l
24、t;/p><p> char *p1,*p2; </p><p> printf("請輸入需要統(tǒng)計(jì)的字符串: "); </p><p> gets(cstr); </p><p> p2=cstr; </p><p> for(i=0;i<N;i++) </p>
25、<p><b> { </b></p><p> p1=str[i]; </p><p> while(strstr(p1,p2)!=NULL)</p><p> /*strstr()函數(shù)的原型是:extern char *strstr(char *str1, char *str2);功能是找出str2字符串在st
26、r1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。*/</p><p><b> { </b></p><p> strnum++; </p><p> p1=strstr(p1,p2)+1; </p><p><b> } </b>&
27、lt;/p><p><b> } </b></p><p> printf("字符串:%s 在文章中出現(xiàn)的次數(shù)為:%d \n",cstr,strnum); </p><p><b> } </b></p><p> 5.5刪除指定字符串函數(shù)</p>&l
28、t;p> void outputdelstr() //刪除指定字符串函數(shù)</p><p><b> { </b></p><p> char cstr[20]; </p><p> char *p,*p1,*p2; </p><p> int len; </p><p>
29、 printf("請輸入要刪除的字符串: "); </p><p> gets(cstr); </p><p> len=strlen(cstr); </p><p> p2=cstr; </p><p> for(i=0;i<N;i++) </p><p><b
30、> { </b></p><p> p1=str[i]; </p><p> while(strstr(p1,p2)!=NULL) </p><p><b> { </b></p><p> p=p1=strstr(p1,p2); </p&
31、gt;<p> while(*(p+len-1)) </p><p><b> { </b></p><p> *p=*(p+len); </p><p><b> p++; </b></p><p><b> } </b></p>
32、<p><b> } </b></p><p><b> } </b></p><p> printf("刪除字符串:%s 后文章為: \n",cstr); </p><p> output(); //輸出刪除字符串后的文章</p><p&
33、gt;<b> } </b></p><p><b> 5.6源程序清單</b></p><p> #include <stdio.h> </p><p> #include <string.h> </p><p> #include <stdlib.h
34、> </p><p> #define N 3 //文章的行數(shù)</p><p> char str[N][80];//存儲文章的字符數(shù)組 ,為全局變量</p><p> int i,j; </p><p> int len[N]; </p><p> int dnum=0,cnum=0,
35、snum=0,anum=0,strnum=0; //為各變量賦初值 </p><p> void menu(); //菜單顯示函數(shù)</p><p> int intput(); //文章輸入函數(shù) </p><p> void output(); //文章輸出函數(shù)</p><p> void count(); //統(tǒng)計(jì)字符個數(shù)
36、函數(shù)</p><p> void checkstring(); //統(tǒng)計(jì)指定字符串個數(shù)函數(shù)</p><p> void outputdelstr(); //刪除指定字符串函數(shù)</p><p> int main() //主函數(shù)</p><p><b> { </b></p><p>
37、; printf("**************************\n");</p><p> printf("* 本網(wǎng)絡(luò)101 第4組 黃耿宇 *\n");</p><p> printf("**************************\n");</p><p> char key,
38、t; </p><p> for(i=0;i<N;i++) </p><p><b> { </b></p><p> len[i]=intput(); </p><p> anum+=len[i]; </p><p><b> } </b>
39、</p><p> for(i=0;i<N;i++) </p><p><b> { </b></p><p> count();//調(diào)用count()函數(shù) </p><p><b> } </b></p><p> while(1) </p&
40、gt;<p><b> { </b></p><p> printf("**************************\n");</p><p> printf("* 本網(wǎng)絡(luò)101 第4組 黃耿宇 *\n");</p><p> printf("*********
41、*****************\n");</p><p> printf("\n"); </p><p> printf("您輸入的文章為:\n"); </p><p> output(); //調(diào)用output()函數(shù)</p><p> printf("\n"
42、;); </p><p> printf("文章中的字母個數(shù)為:%d \n",cnum);</p><p> printf("數(shù)字個數(shù)為:%d \n",dnum);</p><p> printf("空格個數(shù)為:%d \n",snum);</p><p> printf(&q
43、uot;文章總字?jǐn)?shù)為:%d \n",anum);</p><p> printf("\n"); </p><p> menu(); //調(diào)用menu()函數(shù) </p><p> printf("\n"); </p><p> printf("請輸入操作:");
44、 </p><p> key=getchar(); //接收回車 </p><p> printf("\n"); </p><p> switch(key) </p><p><b> { </b></p><p> case '1':
45、 //當(dāng)key=1時(shí)執(zhí)行此語句調(diào)用checkstring()函數(shù)</p><p><b> { </b></p><p> fflush(stdin);//功能:清空輸入緩沖區(qū),確保不影響后面的數(shù)據(jù)讀取 </p><p> checkstring(); //調(diào)用checkstring()函數(shù)</p><p
46、><b> }break; </b></p><p> case '2': //當(dāng)key=2時(shí)執(zhí)行此語句調(diào)用outputdelstr()函數(shù)</p><p><b> { </b></p><p> fflush(stdin); </p><p>
47、; outputdelstr(); // outputdelstr()函數(shù)</p><p><b> }break; </b></p><p> case '0': exit(0); //當(dāng)key=0時(shí)執(zhí)行此語句退出系統(tǒng)</p><p> default: </p><p><
48、;b> { </b></p><p> printf("此菜單不存在!\n"); </p><p> }break; </p><p><b> } </b></p><p> t=getchar(); //接收回車</p><p>
49、system("pause");/*是一個系統(tǒng)函數(shù),調(diào)用“pause”命令,在命令行上輸出“請按任意鍵繼續(xù)”一行文字,等待用戶按一個鍵,然后返回。*/ </p><p><b> } </b></p><p> system("pause"); </p><p> return 0; <
50、/p><p><b> } </b></p><p> void menu() //菜單顯示函數(shù) </p><p><b> { </b></p><p> printf("**********************\n");</p><p&g
51、t; printf("* 菜 單 *\n");</p><p> printf("**********************\n");</p><p> printf("* 1---統(tǒng)計(jì)字符串 *\n");</p><p> printf("* 2-
52、--刪除字符串 *\n");</p><p> printf("* 0---退出系統(tǒng) *\n");</p><p> printf("**********************\n"); </p><p><b> } </b></p><p&
53、gt; int intput() //文章輸入函數(shù)</p><p><b> { </b></p><p> printf("請輸入第 %d 行文字\n",i+1); </p><p> gets(str[i]); //讀取數(shù)組的內(nèi)容</p><p> if(strlen(str[i])
54、>80)</p><p><b> {</b></p><p> printf("每行最多輸入80字符,請重新輸入第 %d 行文字\n",i+1); </p><p> /*當(dāng)每行輸入文字大于80字符時(shí)輸出此語句,并且重新輸入文字*/</p><p> gets(str[i]);<
55、/p><p><b> }</b></p><p> return strlen(str[i]); //返回?cái)?shù)組的長度</p><p><b> }</b></p><p> void output() //文章輸出函數(shù)</p><p><b> {
56、</b></p><p> for(i=0;i<N;i++) </p><p><b> { </b></p><p> puts(str[i]); //輸出數(shù)組的內(nèi)容</p><p><b> } </b></p><p><b>
57、; } </b></p><p> void count() //統(tǒng)計(jì)字符個數(shù)的函數(shù) </p><p><b> { </b></p><p> for(j=0;j<len[i];j++) </p><p><b> { </b></p>
58、<p> if(str[i][j]>='a' && str[i][j]<='z') cnum++; //統(tǒng)計(jì)小寫字母 </p><p> if(str[i][j]>='A' && str[i][j]<='Z') cnum++; //統(tǒng)計(jì)大寫字母 </p><p
59、> if(str[i][j]>='0' && str[i][j]<='9') dnum++; //統(tǒng)計(jì)數(shù)字 </p><p> if(str[i][j]==' ') snum++; //統(tǒng)計(jì)空格</p><p><b> } </b></p><p>&
60、lt;b> } </b></p><p> void checkstring() //統(tǒng)計(jì)指定字符串個數(shù)函數(shù)</p><p><b> { </b></p><p> char cstr[20]; </p><p> char *p1,*p2; </p><p&g
61、t; printf("請輸入需要統(tǒng)計(jì)的字符串: "); </p><p> gets(cstr); </p><p> p2=cstr; </p><p> for(i=0;i<N;i++) </p><p><b> { </b></p><p>
62、; p1=str[i]; </p><p> while(strstr(p1,p2)!=NULL)//strstr()函數(shù)的原型是:extern char *strstr(char *str1, char *str2);</p><p> //功能是找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。</p><p><
63、;b> { </b></p><p> strnum++; </p><p> p1=strstr(p1,p2)+1; </p><p><b> } </b></p><p><b> } </b></p>
64、<p> printf("字符串:%s 在文章中出現(xiàn)的次數(shù)為:%d \n",cstr,strnum); </p><p><b> } </b></p><p> void outputdelstr() //刪除指定字符串函數(shù)</p><p><b> { </b><
65、/p><p> char cstr[20]; </p><p> char *p,*p1,*p2; </p><p> int len; </p><p> printf("請輸入要刪除的字符串: "); </p><p> gets(cstr); </p><
66、p> len=strlen(cstr); </p><p> p2=cstr; </p><p> for(i=0;i<N;i++) </p><p><b> { </b></p><p> p1=str[i]; </p><p> while(strst
67、r(p1,p2)!=NULL) </p><p><b> { </b></p><p> p=p1=strstr(p1,p2); </p><p> while(*(p+len-1)) </p><p><b> { </b></p>
68、<p> *p=*(p+len); </p><p><b> p++; </b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p>
69、<p> printf("刪除字符串:%s 后文章為: \n",cstr); </p><p> output(); //輸出刪除字符串后的文章</p><p><b> } </b></p><p><b> 6.測試數(shù)據(jù)及分析</b></p>
70、<p><b> 6.1文章輸入函數(shù)</b></p><p><b> 6.2文章輸出函數(shù)</b></p><p> 6.3統(tǒng)計(jì)字符個數(shù)函數(shù)</p><p> 6.4統(tǒng)計(jì)指定字符串個數(shù)函數(shù)</p><p> 6.5刪除指定字符串函數(shù)</p><p><
71、;b> 7.課程設(shè)計(jì)總結(jié)</b></p><p> 為期一周的課程設(shè)計(jì)結(jié)束了,在這一周里我完成了編寫文本編輯程序的任務(wù)。</p><p> 任務(wù)書上要求是對輸入的信息進(jìn)行操作,自己開始是不知道該向什么方向去努力,自己應(yīng)該如何去編寫這個程序,后來通過對照著任務(wù)書上的要求和到網(wǎng)上查找相關(guān)資料,慢慢找到了感覺。所以自己在整個課程設(shè)計(jì)的編寫程序過程中遇到的困難及問題都通過查
72、閱資料、向老師提問得以解決。本次課程設(shè)計(jì)自己最大的體會就是不管寫什么程序,自己首先得對這個問題要分析透徹,要知道自己要干什么,然后才能讓自己干什么。</p><p> 通過本次課程設(shè)計(jì),我學(xué)到了很多:增強(qiáng)了查閱相關(guān)參考資料的能力,獨(dú)立分析解決問題的能力;自己的上機(jī)動手的能力和對課程設(shè)計(jì)的理解,得到很多啟示;課程設(shè)計(jì)為我們提供了一個即動手又動腦、獨(dú)立實(shí)踐的機(jī)會,將課本上的知識理論和實(shí)際有機(jī)的結(jié)合起來,鍛煉了我們的
73、分析解決實(shí)際問題的能力。</p><p> 這次課程設(shè)計(jì)使我我對數(shù)據(jù)邏輯結(jié)構(gòu)的特點(diǎn)和存儲表示方式的有了更深的了解和認(rèn)識,培養(yǎng)了我在具體應(yīng)用中選擇合適的數(shù)據(jù)結(jié)構(gòu)和存儲結(jié)構(gòu)的能力,同時(shí)也使我認(rèn)識到自己在學(xué)習(xí)編程方面還有很多的不足。今后我要多讀一些紡織方面的書籍,不能只拘泥于課本上的知識,并注重理論與實(shí)踐的結(jié)合,多上機(jī)練習(xí)編寫程序,提高自己的實(shí)際動手能力和獨(dú)立思考的能力,不斷充實(shí)自己,更好的掌握編程思想。</p
74、><p><b> 8.參考資料</b></p><p> [1] 陳守孔,《算法與數(shù)據(jù)結(jié)構(gòu).C語言版》,清華大學(xué)出版社,2009年6月</p><p> [2] 徐鳳生,《數(shù)據(jù)結(jié)構(gòu)與算法-C語言版》,機(jī)械工業(yè)出版社,2010年6月</p><p> [3] 廖雷,《C程序設(shè)計(jì)實(shí)踐教程》,電子工業(yè)出版社,2006年7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- 文章編輯(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---文章編輯
- 文章編輯_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 文章編輯_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- c語言(數(shù)據(jù)結(jié)構(gòu))-文章編輯系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—文章編輯設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯集合運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)c語言版課程設(shè)計(jì)
- c語言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-- 數(shù)據(jù)結(jié)構(gòu)—用c語言描述
- 數(shù)據(jù)結(jié)構(gòu)c語言課程設(shè)計(jì)報(bào)告之迷宮
- 迷宮(c語言版)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 高級數(shù)據(jù)結(jié)構(gòu)課程論文---文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----行編輯程序
- c++課程設(shè)計(jì)(文章編輯)
- 簡單行編輯系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
評論
0/150
提交評論