版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p><b> ?。〝?shù)據(jù)結(jié)構(gòu))</b></p><p> 二○一一年一月二十日</p><p> 課程設(shè)計(jì)任務(wù)書及成績(jī)?cè)u(píng)定</p><p> Ⅰ、題目的目的和要求: </p><p><b> 1、設(shè)計(jì)目的</b>
2、</p><p> 鞏固和加深對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,通過(guò)上機(jī)實(shí)驗(yàn)、調(diào)試程序,加深對(duì)課本知識(shí)的理解,最終使學(xué)生能夠熟練應(yīng)用數(shù)據(jù)結(jié)構(gòu)的知識(shí)寫程序。</p><p> ?。?)通過(guò)本課程的學(xué)習(xí),能熟練掌握幾種基本數(shù)據(jù)結(jié)構(gòu)的基本操作。</p><p> ?。?)能針對(duì)給定題目,選擇相應(yīng)的數(shù)據(jù)結(jié)構(gòu),分析并設(shè)計(jì)算法,進(jìn)而給出問題的正確求解過(guò)程并編寫代碼實(shí)現(xiàn)。</p>
3、<p> 2、設(shè)計(jì)題目要求: </p><p> 功能:輸入一頁(yè)文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。</p><p> 靜態(tài)存儲(chǔ)一頁(yè)文章,每行最多不超過(guò)80個(gè)字符,共N行;要求(1)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。</p><p>
4、; 存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能;</p><p> 輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。</p><p> 輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、</p><p> "空格個(gè)數(shù)"、&quo
5、t;文章總字?jǐn)?shù)"(3)輸出刪除某一字符串后的文章</p><p> ?、颉⒃O(shè)計(jì)進(jìn)度及完成情況</p><p> ?、蟆⒅饕獏⒖嘉墨I(xiàn)及資料</p><p> [1] 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)清華大學(xué)出版社 1999</p><p> [2] 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版)清華大學(xué)出版社 1999</p><
6、;p> [3] 譚浩強(qiáng) C語(yǔ)言程序設(shè)計(jì) 清華大學(xué)出版社</p><p> [4] 與所用編程環(huán)境相配套的C語(yǔ)言或C++相關(guān)的資料</p><p><b> ?、?、成績(jī)?cè)u(píng)定:</b></p><p> 設(shè)計(jì)成績(jī): (教師填寫)</p><p> 指導(dǎo)老師:
7、 (簽字)</p><p> 二○一一 年 一 月 二 十一 日</p><p><b> 目 錄</b></p><p> 第一章 概述……………………………………………………………… 1</p><p> 第二章 系統(tǒng)分析………………………………………………………… 2</p&
8、gt;<p> 第三章 概要設(shè)計(jì)………………………………………………………… 3</p><p> 第四章 詳細(xì)設(shè)計(jì)………………………………………………………… 5</p><p> 第五章 運(yùn)行與測(cè)試…………………………………………………… 14</p><p> 第六章 總結(jié)與心得…………………………………………………… 18</p&
9、gt;<p> 參考文獻(xiàn)……………………………………………………………… 19</p><p><b> 概述</b></p><p> 課程設(shè)計(jì)是實(shí)踐性教學(xué)中的一個(gè)重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個(gè)方面,是一門獨(dú)立于課程之外的特殊課程。課程設(shè)計(jì)是讓同學(xué)們對(duì)所學(xué)的課程更全面的學(xué)習(xí)和應(yīng)用,理解和掌握課程的相關(guān)知識(shí)?!稊?shù)據(jù)結(jié)構(gòu)》是一
10、門重要的專業(yè)基礎(chǔ)課,是計(jì)算機(jī)理論和應(yīng)用的核心基礎(chǔ)課程。</p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面,加深對(duì)課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。</p><p> 在這次的課程設(shè)計(jì)中我選擇的題目是文章編輯。文章編輯主要包括文章進(jìn)行修改,刪除,統(tǒng)
11、計(jì)文章字?jǐn)?shù)信息等操作,但是人工的文章編輯操作起來(lái)效率相對(duì)來(lái)說(shuō)很低,也比較容易出錯(cuò)。但是借助計(jì)算機(jī)系統(tǒng)來(lái)進(jìn)行文章編輯后,效率可以得到很大提升,也能降低出錯(cuò)率,可以使文章編輯更方便、更高效。</p><p><b> 第二章 系統(tǒng)分析</b></p><p> 文章編輯的基本功能包括:統(tǒng)計(jì)文章中的字?jǐn)?shù)信息;查詢某一個(gè)詞在文章中出現(xiàn)的次數(shù);刪除文章中出現(xiàn)的某一個(gè)詞。要實(shí)
12、現(xiàn)上述功能,需要建立基于順序儲(chǔ)存結(jié)構(gòu)的線性表,來(lái)存儲(chǔ)文章的內(nèi)容。</p><p> 演示程序是以用戶與計(jì)算機(jī)的對(duì)話方式執(zhí)行,這需要一個(gè)模塊來(lái)完成使用者與計(jì)算機(jī)語(yǔ)言是轉(zhuǎn)化,這一模塊是直接寫在主程序里面的。</p><p> 程序執(zhí)行時(shí)的命令:本程序?yàn)榱耸褂脮r(shí)的方便,采用菜單式的方式來(lái)完成程序的演示,幾乎不用輸入什么特殊的命令,只需按提示輸入選擇即可。</p><p&g
13、t; 4. 測(cè)試數(shù)據(jù):分別對(duì)不同功能測(cè)試幾組不同的數(shù)據(jù)。具體內(nèi)容見運(yùn)行測(cè)試。</p><p><b> 5. 程序流程圖:</b></p><p><b> 第三章 概要設(shè)計(jì)</b></p><p><b> 本章主要介紹</b></p><p> 1、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)
14、 </p><p> 實(shí)驗(yàn)主要采用基于順序儲(chǔ)存結(jié)構(gòu)的線性表,用一維數(shù)組表示。</p><p><b> 2、算法的設(shè)計(jì)</b></p><p> void count(char str[])</p><p> 統(tǒng)計(jì)文章全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章字符總數(shù),并輸出到屏幕上。</p><p
15、> void strcount(char str[], char temp[])</p><p> 統(tǒng)計(jì)字符串temp[]在文章中出現(xiàn)的次數(shù)。</p><p> void strdelete(char str[],char temp[])</p><p> 刪除文章中的字符串temp[]。</p><p> int KMP(i
16、nt k,char str[],char temp[])</p><p> 查找模式串在主串中第k個(gè)字符后的第一個(gè)位置,若模式串不在主串中,返回-1。</p><p> 3、抽象數(shù)據(jù)類型的 設(shè)計(jì)</p><p> ADT Article{</p><p> 數(shù)據(jù)對(duì)象:D = { ai|ai∈ElemSet,i=1,2,…,n,n≥0
17、}</p><p> 數(shù)據(jù)關(guān)系:R1 = { <ai-1,ai>|ai-1,ai∈D,i=2,…,n }</p><p><b> 基本操作:</b></p><p> init( &Arti )</p><p> 操作結(jié)果:構(gòu)造一篇空文章</p><p> inpu
18、t(&Arti)</p><p> 初始條件:文章Arti已存在</p><p><b> 操作結(jié)果:輸入文章</b></p><p> continue_input(&Arti)</p><p> 初始條件:文章Arti已存在</p><p> 操作結(jié)果:繼續(xù)輸入文章&
19、lt;/p><p> del(&Arti , pos, k)</p><p> 初始條件:文章Arti已存在</p><p> 操作結(jié)果:刪除文章中pos位置后的k個(gè)字符</p><p> count(&Arti) </p><p> 初始條件:文章Arti已存在</p><p
20、> 操作結(jié)果:統(tǒng)計(jì)文章全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章字符總數(shù)</p><p> strcount(&Arti ,temp)</p><p> 初始條件:文章Arti已存在</p><p> 操作結(jié)果:統(tǒng)計(jì)模式串在主串中出現(xiàn)的次數(shù)</p><p> strdelete(&Arti temp,t)</p
21、><p> 初始條件:文章Arti已存在</p><p> 操作結(jié)果:在主串中刪除第t個(gè)模式串相應(yīng)字符,若t為0,則全刪除</p><p> empty(&Arti)</p><p> 初始條件:文章Arti已存在</p><p> 操作結(jié)果:判斷文章是否為空</p><p>
22、lengh(&Arti)</p><p> 初始條件:文章Arti已存在</p><p><b> 操作結(jié)果:文章長(zhǎng)度</b></p><p> clear(&Arti)</p><p> 初始條件:文章Arti已存在</p><p><b> 操作結(jié)果:清空
23、文章</b></p><p> output(&Arti)</p><p> 初始條件:文章Arti已存在</p><p><b> 操作結(jié)果:輸出文章</b></p><p> } ADT Article</p><p><b> 第四章 詳細(xì)設(shè)計(jì)<
24、/b></p><p> 抽象數(shù)據(jù)類型對(duì)應(yīng)的類定義。</p><p> class Article //文章</p><p><b> {</b></p><p><b> private:</b></p><p> char str[1000];</
25、p><p><b> public:</b></p><p><b> Article()</b></p><p> {str[0]='\0';}</p><p> void input(); //輸入文章</p><p> void conti
26、nue_input(); //繼續(xù)輸入文章</p><p> void del(int pos,int k); //刪除文章中pos位置后的k個(gè)字符</p><p> void count();//統(tǒng)計(jì)文章全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章字符總數(shù)</p><p> int strcount(char temp[]);//統(tǒng)計(jì)模式串在主串中出現(xiàn)的次數(shù)&l
27、t;/p><p> int strdelete(char temp[],int t);//在主串中刪除第t個(gè)模式串相應(yīng)字符,若t為0,則全刪除</p><p> bool empty(); //判斷文章是否為空</p><p> int lengh()//文章長(zhǎng)度</p><p> {return strlen(str);}<
28、;/p><p> void clear() //清空文章</p><p> {str[0]='\0';}</p><p> void output() //輸出文章</p><p> {printf("%s\n",str);}</p><p><b> }
29、;</b></p><p> Article arti;</p><p> 成員函數(shù)及其他子函數(shù)。</p><p><b> //輸入新文章</b></p><p> void Article::input()</p><p><b> {</b><
30、;/p><p><b> int i=0;</b></p><p><b> char c;</b></p><p> printf("請(qǐng)輸入文章,以'#'結(jié)束:\n");</p><p> getchar();</p><p><
31、;b> while(1)</b></p><p><b> {</b></p><p> c=getchar();</p><p> if(c=='#')</p><p><b> break;</b></p><p><b&
32、gt; str[i]=c;</b></p><p><b> i++;</b></p><p><b> }</b></p><p><b> if(i==0)</b></p><p> printf("您沒有輸入文章!\n");<
33、;/p><p><b> else</b></p><p><b> {</b></p><p> str[i]='\0';</p><p> printf("文章輸入成功!\n");</p><p><b> }</
34、b></p><p><b> }</b></p><p><b> //繼續(xù)輸入文章</b></p><p> void Article::continue_input()</p><p><b> {</b></p><p><b
35、> int i,j;</b></p><p><b> char c;</b></p><p> i=strlen(str);</p><p><b> j=i;</b></p><p><b> if(i==0)</b></p>&l
36、t;p> printf("提示:原文章為空!請(qǐng)輸入文章,以'#'結(jié)束:\n");</p><p><b> else</b></p><p> printf("請(qǐng)繼續(xù)輸入文章,以'#'結(jié)束:\n");</p><p> getchar();</p>
37、<p><b> while(1)</b></p><p><b> {</b></p><p> c=getchar();</p><p> if(c=='#')</p><p><b> break;</b></p>&
38、lt;p><b> str[i]=c;</b></p><p><b> i++;</b></p><p><b> }</b></p><p><b> if(i==j)</b></p><p> printf("您沒有繼續(xù)輸入
39、文章!\n");</p><p><b> else</b></p><p><b> {</b></p><p> str[i]='\0';</p><p> printf("文章輸入成功!\n");</p><p>&
40、lt;b> }</b></p><p><b> }</b></p><p> //刪除pos位置之后的k個(gè)字符</p><p> void Article::del(int pos,int k)</p><p><b> {</b></p><p&g
41、t;<b> int i;</b></p><p> for(i=pos+k-1;str[i]!='\0';i++)</p><p><b> {</b></p><p> str[i-k]=str[i];</p><p><b> }</b><
42、/p><p> str[i-k]='\0';</p><p><b> }</b></p><p> //統(tǒng)計(jì)文章全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章字符總數(shù)</p><p> void Article::count()</p><p><b> {</b&g
43、t;</p><p> int letter=0,number=0,blank=0,all=0;</p><p><b> int i=0;</b></p><p> while(str[i]!='\0')</p><p><b> {</b></p><
44、p> if(isalpha(str[i]))</p><p><b> letter++;</b></p><p> else if(isdigit(str[i]))</p><p><b> number++;</b></p><p> else if(str[i]=='
45、')</p><p><b> blank++;</b></p><p> if(str[i]!='\n')</p><p><b> all++;</b></p><p><b> i++;</b></p><p>&l
46、t;b> }</b></p><p> printf("文章字符統(tǒng)計(jì)信息如下:\n");</p><p> printf("字母?jìng)€(gè)數(shù):%d\n",letter);</p><p> printf("數(shù)字個(gè)數(shù):%d\n",number);</p><p>
47、printf("空格個(gè)數(shù):%d\n",blank);</p><p> printf("字符總數(shù):%d\n",all);</p><p><b> }</b></p><p> //取得模式串的next值</p><p> void get_next(char temp[]
48、,int next[])</p><p><b> {</b></p><p> int i=0,j=-1;</p><p> int len=strlen(temp);</p><p> next[0]=-1;</p><p> while(i<len)</p>&
49、lt;p><b> {</b></p><p> while(j>-1||temp[i]==temp[j])</p><p> j=next[j];</p><p><b> i++;</b></p><p><b> j++;</b></p>
50、<p> if(temp[i]==temp[j])</p><p> next[i]=next[j];</p><p><b> else</b></p><p> next[i]=j;</p><p><b> }</b></p><p><b
51、> }</b></p><p> //KMP算法,返回模式串在主串中第k個(gè)字符后的第一個(gè)位置,若模式串不在主串中,返回-1</p><p> int KMP(int k,char str[],char temp[])</p><p><b> {</b></p><p> int pos=-1
52、;//模式串在主串中的位置</p><p><b> int i,j;</b></p><p> int len1,len2;//主串與模式串的長(zhǎng)度</p><p> int next[81];//KMP算法中模式串的next值</p><p> len1=strlen(str);</p><
53、p> len2=strlen(temp);</p><p> get_next(temp,next);</p><p><b> i=k;j=0;</b></p><p> while(i<len1)</p><p><b> {</b></p><p>
54、; while(j>-1&&str[i]!=temp[j])</p><p> j=next[j];</p><p><b> i++;</b></p><p><b> j++;</b></p><p> if(j>=len2)</p><
55、p><b> {</b></p><p> pos=i-j+1;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> ret
56、urn pos;</p><p><b> }</b></p><p> //統(tǒng)計(jì)模式串在主串中出現(xiàn)的次數(shù)</p><p> int Article::strcount(char temp[])</p><p><b> {</b></p><p> int num
57、=0,len=strlen(temp);</p><p> int pos=0;</p><p><b> while(1)</b></p><p><b> {</b></p><p> pos=KMP(pos,str,temp);</p><p> if(pos
58、>=0)</p><p><b> num++;</b></p><p><b> else</b></p><p><b> break;</b></p><p><b> }</b></p><p> retur
59、n num;</p><p><b> }</b></p><p> //在主串中刪除第t個(gè)模式串相應(yīng)字符,若t為0,則全刪除</p><p> int Article::strdelete(char temp[],int t)</p><p><b> {</b></p>&
60、lt;p> int num=0,len=strlen(temp);</p><p> int pos=0;</p><p><b> while(1)</b></p><p><b> {</b></p><p> pos=KMP(pos,str,temp);</p>
61、<p> if(pos>=0)</p><p><b> {</b></p><p><b> num++;</b></p><p><b> if(t==0)</b></p><p> arti.del(pos,len);</p>&l
62、t;p> else if(num==t)</p><p> arti.del(pos,len);</p><p><b> }</b></p><p><b> else</b></p><p><b> break;</b></p><p&
63、gt;<b> }</b></p><p> return num;</p><p><b> }</b></p><p> //判斷文章是否為空</p><p> bool Article::empty()</p><p><b> {</b&g
64、t;</p><p> if(str[0]=='\0')</p><p> return true;</p><p><b> else</b></p><p> return false;</p><p><b> }</b></p>
65、<p><b> //顯示菜單</b></p><p> void order()</p><p><b> {</b></p><p> printf("\n →[菜單]←\n");</p><p
66、> printf(" 1、輸入新文章 || 6、統(tǒng)計(jì)字符串出現(xiàn)次數(shù)\n");</p><p> printf(" 2、繼續(xù)輸入文章 || 7、刪除字符串\n");</p><p> printf("
67、 3、清空當(dāng)前文章 || 8、查看菜單\n");</p><p> printf(" 4、輸出當(dāng)前文章 || 9、查看學(xué)生信息\n");</p><p> printf(" 5、統(tǒng)計(jì)文章字符信息 ||
68、 0、退出\n\n");</p><p><b> }</b></p><p><b> //輸入模式串</b></p><p> void input_temp(char temp[],int t)</p><p><b> {</b><
69、;/p><p><b> int i=0;</b></p><p><b> char c;</b></p><p><b> if(t==0)</b></p><p> printf("請(qǐng)輸入要查詢的字符串,以'#'結(jié)束:\n");&l
70、t;/p><p><b> else</b></p><p> printf("請(qǐng)輸入要?jiǎng)h除的字符串,以'#'結(jié)束:\n");</p><p> getchar();</p><p><b> while(1)</b></p><p>
71、<b> {</b></p><p> c=getchar();</p><p> if(c=='#')</p><p><b> break;</b></p><p> temp[i]=c;</p><p><b> i++;</
72、b></p><p><b> }</b></p><p><b> if(i==0)</b></p><p> printf("您沒有輸入字符串!\n");</p><p><b> else</b></p><p>
73、<b> {</b></p><p> temp[i]='\0';</p><p> printf("字符串輸入成功!\n");</p><p><b> }</b></p><p><b> }</b></p>&l
74、t;p><b> 主函數(shù)。</b></p><p> int main()</p><p><b> {</b></p><p><b> int num;</b></p><p> char com[81]="\0";//命令</p&
75、gt;<p> char temp[81]="\0";//模式串</p><p> printf(" -====文章編輯====-\n\n");</p><p><b> order();</b></p><p><b&g
76、t; while(1)</b></p><p><b> {</b></p><p> printf("\n請(qǐng)輸入命令編號(hào):");</p><p> scanf("%s",com);</p><p> if(strcmp(com,"1")=
77、=0)</p><p><b> {</b></p><p> arti.input();</p><p><b> }</b></p><p> else if(strcmp(com,"2")==0)</p><p><b> {&l
78、t;/b></p><p> arti.continue_input();</p><p><b> }</b></p><p> else if(strcmp(com,"3")==0)</p><p><b> {</b></p><p>
79、 if(arti.empty())</p><p> printf("您還未輸入文章或文章內(nèi)容已為空,請(qǐng)先輸入文章!\n");</p><p><b> else</b></p><p><b> {</b></p><p> arti.clear();</p&g
80、t;<p> printf("文章清除成功!\n");</p><p><b> }</b></p><p><b> }</b></p><p> else if(strcmp(com,"4")==0)</p><p><b>
81、; {</b></p><p> if(arti.empty())</p><p> printf("您還未輸入文章或文章內(nèi)容已為空,請(qǐng)先輸入文章!\n");</p><p><b> else</b></p><p> arti.output();</p><
82、;p><b> }</b></p><p> else if(strcmp(com,"5")==0)</p><p><b> {</b></p><p> if(arti.empty())</p><p> printf("您還未輸入文章或文章內(nèi)容已為
83、空,請(qǐng)先輸入文章\n");</p><p><b> else</b></p><p> arti.count();</p><p><b> }</b></p><p> else if(strcmp(com,"6")==0)</p><p
84、><b> {</b></p><p> if(arti.empty())</p><p> printf("您還未輸入文章或文章內(nèi)容已為空,請(qǐng)先輸入文章\n");</p><p><b> else</b></p><p><b> {</b&g
85、t;</p><p> input_temp(temp,0);</p><p> if(strlen(temp)>0)</p><p><b> {</b></p><p> printf("該字符串在文章中共出現(xiàn)了%d次!\n",arti.strcount(temp));</p&
86、gt;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> else if(strcmp(com,"7")==0)</p><p><b> {</
87、b></p><p> if(arti.empty())</p><p> printf("您還未輸入文章或文章內(nèi)容已為空,請(qǐng)先輸入文章\n");</p><p><b> else</b></p><p><b> {</b></p><p&g
88、t; input_temp(temp,1);</p><p> if(strlen(temp)>0)</p><p><b> {</b></p><p> num=arti.strcount(temp);</p><p> if(num==0)</p><p> printf(
89、"該字符串在文章中沒有出現(xiàn)!\n");</p><p> else if(num==1)</p><p><b> {</b></p><p> arti.strdelete(temp,0);</p><p> printf("該字符串在文章中共出現(xiàn)了1次!已成功刪除!\n"
90、;);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> int t;</b></p><p> printf("該
91、字符串在文章中共出現(xiàn)了%d次!若要?jiǎng)h除單一字符串,請(qǐng)輸入字符串序號(hào)1-%d,若要全部刪去,請(qǐng)輸入0 : ",num,num);</p><p><b> while(1)</b></p><p><b> {</b></p><p> scanf("%d",&t);</p
92、><p> if(t<0||t>num)</p><p> printf("您輸入的編號(hào)超出范圍!請(qǐng)重新輸入:");</p><p><b> else</b></p><p><b> {</b></p><p> arti.strde
93、lete(temp,t);</p><p> printf("刪除成功!\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p>&
94、lt;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> else if(strcmp(com,"8")==0)</p>
95、<p><b> {</b></p><p><b> order();</b></p><p><b> }</b></p><p> else if(strcmp(com,"9")==0)</p><p><b> {&
96、lt;/b></p><p> printf("\n");</p><p> printf("姓 名:許山蒙\n");</p><p> printf("班 級(jí):計(jì)科0901班\n");</p><p> printf("學(xué) 號(hào):091105
97、1002\n");</p><p> printf("課 程:《數(shù)據(jù)結(jié)構(gòu)》\n");</p><p> printf("指導(dǎo)教師:張先偉\n\n");</p><p><b> }</b></p><p> else if(strcmp(com,"
98、0")==0)</p><p><b> {</b></p><p> printf("\n確認(rèn)退出y/n:? ");</p><p> scanf("%s",com);</p><p> if (strcmp(com,"y")==0)&l
99、t;/p><p><b> {</b></p><p> printf("\n感謝使用,再見!\n\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b>
100、 }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("\n命令輸入錯(cuò)誤,請(qǐng)重新輸入,或者輸入8查看菜單。\n");</p><p><b> }</b><
101、/p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 第五章 運(yùn)行與測(cè)試</b></p><p> 在調(diào)試程序的過(guò)程中遇到的問
102、題及解決辦法:</p><p> 開始的時(shí)候當(dāng)有異常輸入時(shí)便無(wú)法執(zhí)行程序?,F(xiàn)加入異常處理環(huán)節(jié),可以判斷輸入數(shù)據(jù)是否合法,這一問題得到解決。</p><p> 測(cè)試數(shù)據(jù)及測(cè)試結(jié)果:</p><p> ?。?)程序開始運(yùn)行界面,如下圖:</p><p> ?。?)輸入下面的測(cè)試文章:</p><p> Yesterd
103、ay is history, </p><p> tomorrow is mystery, </p><p> but today is a gift, </p><p> that is why it is called Present.</p><p> 3.141592653589793238462643388279502<
104、;/p><p><b> 然后以“#”結(jié)束。</b></p><p> 若輸入成功,系統(tǒng)會(huì)給予提示。如下圖:</p><p> ?。?)統(tǒng)計(jì)文章字符信息,如下圖:</p><p> ?。?)查詢字符串“is”在文章中出現(xiàn)的次數(shù),如下圖:</p><p> (5)刪除字符串“is”,并輸出刪除“i
105、s”后的文章,如下圖:</p><p> ?。?)當(dāng)命令輸入錯(cuò)誤時(shí)會(huì)有提示,輸入“8”可以查看菜單如下圖:</p><p> ?。?)退出,如下圖:</p><p><b> 第六章 總結(jié)與心得</b></p><p> 本程序相對(duì)來(lái)說(shuō)很簡(jiǎn)單,思路和算法都比較清晰,難度也不算大,只有KMP算法交較復(fù)雜一下。不過(guò)程序還
106、有一些不足之處:本程序只能對(duì)即時(shí)輸入的文章進(jìn)行編輯,而不能對(duì)存儲(chǔ)在磁盤里的文章進(jìn)行編輯,如果能從文件輸入數(shù)據(jù),就可以打開磁盤文件,對(duì)其進(jìn)行編輯,這還有待改進(jìn)。</p><p> 通過(guò)做課程設(shè)計(jì)我再一次熟悉了線性表的基本知識(shí)和操作,特別是仔細(xì)研究了一下KMP算法,對(duì)KMP算法的原理和過(guò)程有了更深的理解。這次的課程設(shè)計(jì)收獲了很多,也感謝各位老師的指導(dǎo)。</p><p><b>
107、參考文獻(xiàn):</b></p><p> [1] 嚴(yán)蔚敏、吳偉民主編 《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版) 清華大學(xué)出版社 2002</p><p> [2] 殷人昆等著 《數(shù)據(jù)結(jié)構(gòu)》(C++版) 清華大學(xué)出版社 2001</p><p> [3] 金遠(yuǎn)平著 《數(shù)據(jù)結(jié)構(gòu)》(C++描述) 清華大
108、學(xué)出版社 2005 </p><p> [4] 許卓群等著 《數(shù)據(jù)結(jié)構(gòu)與算法》 高等教育出版社 2004</p><p> [5] Frank M.Carrano 等著 《數(shù)據(jù)結(jié)構(gòu)與C++高級(jí)教程》清華大學(xué)出版社 2004</p><p> [6] 嚴(yán)蔚敏、吳偉民 《數(shù)據(jù)結(jié)構(gòu)習(xí)題集》(C語(yǔ)言版)清華大學(xué)出版社
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—文章編輯設(shè)計(jì)報(bào)告
- 文章編輯(數(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ì)--文章編輯系統(tǒng)
- c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---文章編輯
- c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯集合運(yùn)算
- 高級(jí)數(shù)據(jù)結(jié)構(gòu)課程論文---文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----行編輯程序
- 文章編輯課程設(shè)計(jì)報(bào)告
- 簡(jiǎn)單行編輯系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論