數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 文章編輯_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 文章編輯_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 文章編輯_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 文章編輯_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 文章編輯_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、目 錄一、設(shè)計(jì)目的5二、設(shè)計(jì)內(nèi)容5三、設(shè)計(jì)要求5四、主要數(shù)據(jù)結(jié)構(gòu)與算法61、主要數(shù)據(jù)結(jié)構(gòu)61.1主要數(shù)據(jù)結(jié)構(gòu)61.2 程序流程圖62、主要算法設(shè)計(jì)72.1 輸入文本72.2 輸出文本82.3輸出刪除某一字符串后的文章82.4統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)9五、調(diào)試與分析101、菜單主界面102、輸入函數(shù)103、輸出文本114、統(tǒng)計(jì)文字、數(shù)字、空格的個(gè)數(shù)115、統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)116、輸出刪除某一字符串后的文章12六、總結(jié)13七、參考文獻(xiàn)13八、程序清單14課程設(shè)計(jì)(大作業(yè))報(bào)告一、設(shè)計(jì)目的熟練使用 C語言實(shí)現(xiàn)文章編輯。二、設(shè)計(jì)內(nèi)容靜態(tài)存儲(chǔ)一頁文章,統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)

2、。三、設(shè)計(jì)要求1、分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);2、統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);3、刪除某一子串,并將后面的字符前移。4、實(shí)現(xiàn)功能:分行輸出用戶輸入的各行字符;分4行輸出“全部字母數(shù)”、“數(shù)字個(gè)數(shù)”、“空格個(gè)數(shù)”、“文章總字?jǐn)?shù)”輸出刪除某一字符串后的文章。四、主要數(shù)據(jù)結(jié)構(gòu)與算法1、主要數(shù)據(jù)結(jié)構(gòu)1.1主要數(shù)據(jù)結(jié)構(gòu)函 數(shù) 名實(shí) 現(xiàn) 功 能typedef struct DataType aMAXSIZE; int length;Article; 定義串的靜態(tài)存儲(chǔ)分配結(jié)構(gòu)void input(Article *s)輸入文本void ptint(Article *

3、s) 輸出文本void letter_number(Article *s)輸出全部字母個(gè)數(shù)void space_number(Article *s) 輸出全部空格個(gè)數(shù)void digit_number(Article *s) 輸出全部數(shù)字總數(shù)void size_number(Article *s) 輸出文章總字?jǐn)?shù)void dele_print(Article *p,Article *s)輸出刪除某一字符串后的文章void Counter(Article *p,Article *s) 統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù) 表1 主要數(shù)據(jù)結(jié)構(gòu)1.2 程序流程圖 圖1 程序流程圖2、主要算法設(shè)計(jì)2.1

4、輸入文本輸入一段文本,當(dāng)輸入的文本是回車符(“n”)時(shí),將輸入的文本最后一個(gè)字符賦成字符串的結(jié)束符0,然后修改輸入文本的長度。void input(Article *s) /*輸入文本*/int i;s-length=0;for(i=0;iai);s-length+;if(s-ai=n) s-ai=0;s-length-; break;2.2 輸出文本將輸入的文本,如果輸入文本的長度為0,則以錯(cuò)誤提示出現(xiàn)在屏幕上,若長度不為0,則以每行顯示80個(gè)字符的格式輸出在屏幕上。void ptint(Article *s) /*輸出文本*/int i,j=0;if(!s-length) printf(n

5、錯(cuò)誤!);elsefor(i=0;ilength;i+)printf(%c,s-ai);j+;if(j%80=0) printf(n);2.3輸出刪除某一字符串后的文章 此函數(shù)用到了串的簡單模式匹配,即:設(shè)置一個(gè)標(biāo)記succ,當(dāng)正文串s與模式串匹配成功時(shí),標(biāo)記succ=1;當(dāng)正文串s與模式串匹配不成功時(shí),succ=0。最后根據(jù)標(biāo)記的值來判斷時(shí)候找到匹配的子串,最終實(shí)現(xiàn)刪除操作。void dele_print(Article *p,Article *s) /*輸出刪除某一字符串后的文章*/int i,j,succ,flag=1;i=0;while(ilength-p-length+1)j=0;s

6、ucc=1; /*用j掃描模式p*/while(jlength-1) & succ)if(p-aj=s-ai+j) j+;else succ=0;if(j=p-length) flag=0;if(!succ)printf(%c,s-ai);else i=i+p-length-1;i+;printf(%sn,s-a+i);if(flag=1)printf(但找不到要?jiǎng)h除的字符串!);2.4統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)此函數(shù)也用到了串的簡單模式匹配,即:設(shè)置一個(gè)標(biāo)記succ,當(dāng)正文串s與模式串匹配成功時(shí),標(biāo)記succ=1;當(dāng)正文串s與模式串匹配不成功時(shí),succ=0。最后根據(jù)標(biāo)記的值來判斷時(shí)候

7、找到匹配的子串。設(shè)置一個(gè)計(jì)數(shù)標(biāo)記k,當(dāng)匹配成功時(shí),將匹配的結(jié)果記錄保存下來后,最后輸出統(tǒng)計(jì)特殊字符串出現(xiàn)的次數(shù)。void Counter(Article *p,Article *s) /*統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)*/int i,j,succ,k=0;i=0;while(ilength-p-length+1)j=0;succ=1; while(jlength-1) & succ)if(p-aj=s-ai+j) j+;else succ=0;if(succ) k+;i=i+p-length-1;i+;if (k0)printf(n該字符串在文章中出現(xiàn)的次數(shù)為:%d次n,k);五、調(diào)試與分析

8、1、菜單主界面 圖2 主界面2、輸入函數(shù)由于程序的功能的不足,雖然可以輸入中文,但是不能夠統(tǒng)計(jì)中文字符的個(gè)數(shù)。 圖3 輸入文本3、輸出文本在輸入一段文本之后的顯示輸出文本如下圖所示,每行最多輸入80個(gè)字符。 圖4 輸出文本 4、統(tǒng)計(jì)文字、數(shù)字、空格的個(gè)數(shù) 圖5 統(tǒng)計(jì)文字、數(shù)字、空格的個(gè)數(shù)5、統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)圖6 統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)6、輸出刪除某一字符串后的文章 由于程序不夠完善,不能進(jìn)行連續(xù)的刪除操作,只能進(jìn)行一次刪除操作后再返回主菜單,繼續(xù)調(diào)用刪除函數(shù)時(shí),不能夠接著第一次刪除操作后得到的結(jié)果再刪除字符串,運(yùn)行結(jié)果如圖8所示。同時(shí)在輸出文章中沒有出現(xiàn)過的字符串時(shí),

9、由于程序功能的欠缺,程序功能還是會(huì)將原文章打印出來。不能很有效地提示刪除不成功,或者提示重新輸入之類的提示語。運(yùn)行結(jié)果如圖9所示。 圖7 刪除某一字符串后顯示的文章圖8 刪除功能缺點(diǎn)一 圖9 刪除功能缺點(diǎn)二 六、總結(jié)通過五天的課程設(shè)計(jì)的內(nèi)容,我完成了文章編輯題目的設(shè)計(jì)。但是程序還不夠完善,因?yàn)橛行┕δ苓€是不能夠?qū)崿F(xiàn)。例如:在執(zhí)行菜單時(shí),第一次選擇刪除刪除特殊字符串的操作時(shí),特殊字符串被刪除了后,又返回主菜單,繼續(xù)再選擇刪除功能時(shí),第一次被刪除后得到的結(jié)果,繼續(xù)再刪除就不能進(jìn)行了。在設(shè)計(jì)過程中,設(shè)計(jì)刪除函數(shù)時(shí),其中用到串的模式匹配,在匹配時(shí)出現(xiàn)了錯(cuò)誤,導(dǎo)致程序一直不能執(zhí)行下去,通過老師和同學(xué)的幫

10、助下,也一一解決了,同時(shí)也鍛煉了調(diào)試程序的能力。還有在用指針時(shí),沒開辟存儲(chǔ)空間,程序也不能執(zhí)行。但是通過這次的課程設(shè)計(jì),加強(qiáng)了我的動(dòng)手、思考和解決問題的能力。設(shè)計(jì)的結(jié)果固然重要,但是設(shè)計(jì)過程更為重要,在這次的作業(yè)中,我學(xué)到了很多的東西,也積累了關(guān)于做這樣的課程設(shè)計(jì)的一些經(jīng)驗(yàn)。通過這一次的課程設(shè)計(jì),讓我對數(shù)據(jù)結(jié)構(gòu)以及其課程設(shè)計(jì)的知識(shí)也有了更深的理解和認(rèn)識(shí)。所以,我們在理解書本知識(shí)的同時(shí),應(yīng)該盡可能多做一些算法題,提高自己分析問題和解決問題的能力,這也是學(xué)習(xí)這門課程最終的目的。七、參考文獻(xiàn)1王震江,何英,吳紹兵.數(shù)據(jù)結(jié)構(gòu).云南:云南大學(xué)出版社,20082譚浩強(qiáng).C程序設(shè)計(jì)(第四版). 北京:清華大

11、學(xué)出版社,20103王愛民,李杰,羅穎.數(shù)據(jù)結(jié)構(gòu)(C語言描述).北京:清華大學(xué)出版社,2011八、程序清單#include #include #include #include #include #define MAXSIZE 1000typedef char DataType;typedef struct DataType strMAXSIZE;int length;Article;Article *s,*p,*t,*m;void input(Article *s) /*輸入文本*/int i;s-length=0;for(i=0;istri);s-length+;if(s-stri=n)

12、s-stri=0;s-length-; break;void ptint(Article *s) /*輸出文本*/int i,j=0;if(!s-length) printf(n錯(cuò)誤!);elsefor(i=0;ilength;i+)printf(%c,s-stri);j+;if(j%80=0) printf(n);void letter_number(Article *s) /*全部字母個(gè)數(shù)*/int i,j=0;if(!s-length)printf(n錯(cuò)誤!);elsefor(i=0;ilength;i+)if(s-stri=a& s-stristri=A& s-strilength)

13、printf(n錯(cuò)誤!);elsefor(i=0;ilength;i+)if(s-stri= )j+;printf(%d,j);void digit_number(Article *s) /*全部數(shù)字總數(shù)*/int i,j=0;if(!s-length) printf(n錯(cuò)誤!);elsefor(i=0;ilength;i+)if(s-stri=0& s-strilength);void dele_print(Article *p,Article *s) /*輸出刪除某一字符串后的文章*/int i,j,succ,flag=1;i=0;while(ilength-p-length+1)j=0;

14、succ=1; /*用j掃描模式p*/while(jlength-1) & succ)if(p-strj=s-stri+j) j+;else succ=0;if(j=p-length) flag=0;if(!succ)printf(%c,s-stri);else i=i+p-length-1;i+;printf(%sn,s-str+i);if(flag=1)printf(但找不到要?jiǎng)h除的字符串!);void Counter(Article *p,Article *s) /*統(tǒng)計(jì)某個(gè)字符串在文章中出現(xiàn)的次數(shù)*/int i,j,succ,k=0;i=0;while(ilength-p-length

15、+1)j=0;succ=1; while(jlength-1) & succ)if(p-strj=s-stri+j) j+;else succ=0;if(succ) k+;i=i+p-length-1;i+;if (k0)printf(n該字符串在文章中出現(xiàn)的次數(shù)為:%d次n,k);void main()char n;Article *s,*t,*m;system( color 3F);printf(tn); printf(t* 設(shè)計(jì)題目:文章編輯 *n);printf(t*n);printf(t* 昆明學(xué)院 信息技術(shù)學(xué)院 *n);printf(t*n);printf(t* 2011級(jí)計(jì)科2班

16、 楊鑠 4 *n);printf(t*n);printf(tn); system(PAUSE);system(cls);system(color 3f);printf( 菜單列表 n);printf(tn);printf(t*n);printf(t* * *n);printf(t* 0.退出 * 1.輸入一段文字 *n);printf(t* * *n);printf(t*n);printf(t* * *n);printf(t* 2.顯示輸入的文字 * 3.統(tǒng)計(jì)字母、數(shù)字、空格 *n);printf(t* * *n);printf(t*n);printf(t* * *n);printf(t* 4

17、.統(tǒng)計(jì)特殊字符串出現(xiàn)頻率 * 5.刪除某一特殊字符串 *n);printf(t* * *n);printf(t*n);printf(tn);while (n=0)&(n=1)&(n=2)&(n=3)&(n=4)&(n=5)printf(n請選擇你需要操作的步驟(05):);fflush(stdin);scanf(%s,&n);fflush(stdin);switch(n)case 0:exit(0); case 1:s=(Article *)malloc(sizeof(Article);printf(請輸入一段文字:);input(s);break;case 2:printf(n文本錄入完畢!輸出的文本為:n);ptint(s); break;case 3:printf(n全部字母個(gè)數(shù)為:);letter_number(s);printf(n全部空格個(gè)數(shù)為:);space_number(s); printf(n全部數(shù)字個(gè)數(shù)為:);digi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論