串的查找和替換數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第1頁(yè)
串的查找和替換數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第2頁(yè)
串的查找和替換數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第3頁(yè)
串的查找和替換數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第4頁(yè)
串的查找和替換數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上長(zhǎng)沙理工大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 黃博 學(xué) 院 計(jì)算機(jī)與通信工程 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) 計(jì)算機(jī)0903班 學(xué) 號(hào) 1 學(xué)生姓名 黃博 指導(dǎo)教師 陳倩詒 課程成績(jī) 完成日期 2011年7月3日課程設(shè)計(jì)成績(jī)?cè)u(píng)定學(xué) 院 城南學(xué)院 專 業(yè) 計(jì)算機(jī)科技與技術(shù) 班 級(jí) 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 號(hào) 1 學(xué)生姓名 黃 博 指導(dǎo)教師 陳倩詒 完成日期 2011年7月3日 指導(dǎo)教師對(duì)學(xué)生在課程設(shè)計(jì)中的評(píng)價(jià)評(píng)分項(xiàng)目?jī)?yōu)良中及格不及格課程設(shè)計(jì)中的創(chuàng)造性成果學(xué)生掌握課程內(nèi)容的程度課程設(shè)計(jì)完成情況課程設(shè)計(jì)動(dòng)手能力文字表達(dá)學(xué)習(xí)態(tài)度規(guī)范要求課程設(shè)計(jì)論文的質(zhì)量指導(dǎo)教師對(duì)課程設(shè)計(jì)的評(píng)定意見綜合成

2、績(jī) 指導(dǎo)教師簽字 2011年7月10日課程設(shè)計(jì)任務(wù)書城南學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) 課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)時(shí)間20102011學(xué)年第2學(xué)期1820周學(xué)生姓名黃博指導(dǎo)老師陳倩詒題 目串的查找和替換主要內(nèi)容:?jiǎn)栴}描述:打開一篇英文文章,在該文章中找出所有給定的單詞,然后對(duì)所有給定的單詞替換為另外一個(gè)單詞,再存盤要求:(1)通過實(shí)際項(xiàng)目的分析、設(shè)計(jì)、編碼、測(cè)試等工作,掌握用C語(yǔ)言來(lái)開發(fā)和維護(hù)軟件。(2)按要求編寫課程設(shè)計(jì)報(bào)告書,能正確編寫分析、設(shè)計(jì)、編碼、測(cè)試等技術(shù)文檔和用戶使用手冊(cè)。應(yīng)當(dāng)提交的文件:(1)課程設(shè)計(jì)學(xué)年論文。(2)課程設(shè)計(jì)附件(主要是源程序)。用C+語(yǔ)言解決串的查找和替換問題學(xué)生姓

3、名:黃博 指導(dǎo)老師:陳倩詒摘 要 本課程設(shè)計(jì)主要解決的在一篇英語(yǔ)文章中,在文章中找出所指定的單詞,然后對(duì)所指定的單詞進(jìn)行替換,替換為另一個(gè)單詞,再存盤的課程設(shè)計(jì)。先建立一個(gè)文件,然后從文件中讀取字符串保存到數(shù)組中。從鍵盤輸入被替換的單詞,然后刪除這個(gè)單詞。從鍵盤中輸入替換的單詞,把它插入到被刪除的單詞的位置。然后把該字符串再寫入到文件中。程序通過調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。關(guān)鍵詞 程序設(shè)計(jì);C+;替換;字符串目 錄1. 引言··············&

4、#183;········································12. 課程設(shè)計(jì)目的和要求·······

5、································2 2.1 課程設(shè)計(jì)目的················

6、·······························22.2 課程設(shè)計(jì)要求·················&

7、#183;·····························23. 課程設(shè)計(jì)分析··················

8、83;··························33.1課程設(shè)計(jì)思路······················

9、;··························33.2課程設(shè)計(jì)要求函數(shù)分析·····················

10、83;··················33.3課程設(shè)計(jì)主要流程·····························

11、83;··············44. 課程設(shè)計(jì)調(diào)試··································

12、;·············65. 課程設(shè)計(jì)總結(jié)···································&

13、#183;···········9 參考文獻(xiàn)·····································&

14、#183;·················10附錄·······························

15、83;····························11專心-專注-專業(yè)1 引 言 數(shù)據(jù)結(jié)構(gòu)是一門理論性強(qiáng),思維抽象,難度較大的一門課程。是基礎(chǔ)課專業(yè)課之間的橋梁。該課程的先行課時(shí)計(jì)算機(jī)基礎(chǔ),程序設(shè)計(jì)語(yǔ)言、離散數(shù)學(xué)等,后續(xù)課程有操作系統(tǒng)、編譯原理、數(shù)據(jù)庫(kù)原理、軟件工程等。通過本門課程的學(xué)習(xí),我們應(yīng)該透徹的理解

16、各種數(shù)據(jù)的特點(diǎn),學(xué)會(huì)數(shù)據(jù)的組織方法和實(shí)現(xiàn)方法,并進(jìn)一步培養(yǎng)良好的程序設(shè)計(jì)能力和解決實(shí)際問題的能力,而且該課程的研究方法對(duì)我們學(xué)生在校和離校后學(xué)習(xí)和工作有著重要的影響。1 數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)與技術(shù)的一門核心專業(yè)基礎(chǔ)課程,在該專業(yè)課程中有著承上啟下的作用,學(xué)習(xí)好數(shù)據(jù)結(jié)構(gòu)對(duì)于提高理論認(rèn)知水平和實(shí)踐操作能力有重要的作用,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的最終目的是為了獲得解決求解問題的能力。對(duì)于現(xiàn)實(shí)世界的問題,應(yīng)該從中抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,該數(shù)學(xué)模型在計(jì)算機(jī)的用數(shù)構(gòu)表示出來(lái),然后在設(shè)計(jì)一個(gè)求數(shù)學(xué)模型的的算法,再進(jìn)行編程調(diào)試,最后獲得問題的解答。 數(shù)據(jù)課程設(shè)計(jì)著眼培養(yǎng)我們實(shí)踐能力,加強(qiáng)編程能力的培養(yǎng)。 第1頁(yè)2 課程

17、設(shè)計(jì)目的和要求2.1 課程設(shè)計(jì)目的 通過課程設(shè)計(jì)的題目練習(xí),強(qiáng)化對(duì)所學(xué)知識(shí)的掌握及對(duì)問題分析和任務(wù)定義的理解,對(duì)題目做了相應(yīng)的邏輯分析和數(shù)據(jù)結(jié)構(gòu)的選擇通過對(duì)任務(wù)的分析,為操作對(duì)象定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu),一過程化程序設(shè)計(jì)的思想原則劃分各個(gè)模塊,定義數(shù)據(jù)的抽象數(shù)據(jù)類型。分模塊對(duì)題目進(jìn)行設(shè)計(jì),強(qiáng)化對(duì)C+語(yǔ)言的掌握和對(duì)數(shù)據(jù)結(jié)構(gòu)選擇及掌握。通過程序的編譯掌握對(duì)程序的調(diào)試及思想,并且學(xué)習(xí)一些編程的技巧。養(yǎng)成良好的編程習(xí)慣。2以及讓學(xué)生對(duì)書本的上的知識(shí)進(jìn)行實(shí)踐。算法和數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)綜合的專業(yè)基礎(chǔ)課。它不僅是計(jì)算機(jī)學(xué)科的核心課程,而且成為其他理工專業(yè)的熱門選修課。它又是操作系統(tǒng)、編譯原理、數(shù)據(jù)庫(kù)原

18、理、算法分析、人工智能、圖像處理等專業(yè)課程的前導(dǎo)課。具有承上啟下的作用。數(shù)據(jù)結(jié)構(gòu)的研究不僅設(shè)計(jì)到計(jì)算機(jī)硬件的研究方面,而且與計(jì)算機(jī)軟件研究有著密切的關(guān)系。計(jì)算機(jī)科學(xué)各領(lǐng)域都要用到數(shù)據(jù)構(gòu),該課程的目的就是介紹一些常用的數(shù)據(jù)結(jié)構(gòu),闡明數(shù)據(jù)結(jié)構(gòu)的內(nèi)在邏輯關(guān)系,討論它們計(jì)算機(jī)內(nèi)的儲(chǔ)存表示,并結(jié)合各種典型它們?cè)谶M(jìn)行各種運(yùn)算時(shí)的動(dòng)態(tài)性質(zhì)和實(shí)際的執(zhí)行算法。2.2 課程設(shè)計(jì)要求1.問題分析和任務(wù)的定義對(duì)問題的描述應(yīng)避免具體的算法和涉及的數(shù)據(jù)結(jié)構(gòu),它是對(duì)要完成的任務(wù)明確的回答,強(qiáng)調(diào)是做什么,而不是怎么做。2.詳細(xì)的設(shè)計(jì)及編碼算法的描述與代碼的編寫。3.上機(jī)調(diào)試源程序的輸入及代碼的調(diào)試。 第2頁(yè)3 課程設(shè)計(jì)分析3

19、.1 課程設(shè)計(jì)思路先建立一個(gè)文件,然后從文件中讀取字符串保存到數(shù)組中。從鍵盤輸入被替換的單詞,然后刪除這個(gè)單詞。從鍵盤中輸入替換的單詞,把它插入到被刪除的單詞的位置。然后把該字符串再寫入到文件中。計(jì)算機(jī)上的非數(shù)值處理的對(duì)象基本上上字符串?dāng)?shù)據(jù),字符串一般簡(jiǎn)稱為串。串(string)是由零個(gè)或多個(gè)字符組成的有限序列,一般記為s=a1a2an(n大于零)。通常稱字符在序列中的序號(hào)為該字符在串中的位置,子串在主串中的位置則以子串的第一個(gè)字符在主串中的位置來(lái)表示。當(dāng)兩個(gè)串的每個(gè)字符都相等時(shí)(串值相等),稱這兩個(gè)串是相等的。3在子串的查找定位過程中,分別利用計(jì)數(shù)指針j和k指示被替換串和替換串中當(dāng)前正待比較

20、的字符位置。所用算法的基本思想是:首先利用指針i來(lái)完成被替換串和替換串在文本中的遍歷,從被替換串和替換串的第一個(gè)字符起進(jìn)行比較,若相等則繼續(xù)逐個(gè)比較后續(xù)字符;否則完成一次比較,指針i遞增進(jìn)行下一次的比較。以此類推,直至匹配成功4。3.2 課程設(shè)計(jì)主要函數(shù)分析本設(shè)計(jì)所采用的數(shù)據(jù)結(jié)構(gòu)char String65535;/長(zhǎng)度要大于輸入文本文件的長(zhǎng)度!char findString50;/輸入的要查找的字符char replaceString50; /輸入的替換后的string.程序中各部分功能函數(shù):void InitStr()/*從文件初始化數(shù)組*/;void InputReplaceChar()/

21、*輸入要替換的字符串*/;int FindString()/*查找第一個(gè)出現(xiàn)要查找字符的下標(biāo)*/;void FindStrings()/*查看文章中共有多少個(gè)要查找的字符*/;void Insert(char source,int index,char target)/*從指定的下標(biāo)開始插入target數(shù)組第3頁(yè)中的元素*/;void Replace()/*將String中要替換的內(nèi)容替換掉*/;void Save()/*保存修改后的文章信息*/;void Menu()/*程序主菜單*/。3.3 課程設(shè)計(jì)主要流程首先利用標(biāo)準(zhǔn)庫(kù)函數(shù)fopen()打開一個(gè)文件,然后從文件中讀取字符串保存到數(shù)組中,

22、完成文件的讀入。其次,根據(jù)鍵盤輸入的選擇命令(數(shù)字14)程序調(diào)用不同功能模塊來(lái)完成相應(yīng)的操作。 5程序中用戶選擇命令(數(shù)字14)設(shè)置:“1”:文本文件顯示;“2”:子串查找;“3”:子串替換;“4”:退出整個(gè)程序。程序設(shè)計(jì)流程圖如圖3.1所示: 圖3.1 設(shè)計(jì)流程圖第4頁(yè)程序運(yùn)行后顯示主菜單,提示用戶根據(jù)需要選擇不同的命令操作。程序根據(jù)鍵盤輸入的選擇命令(數(shù)字14)調(diào)用不同功能模塊來(lái)完成相應(yīng)的操作。如果用戶輸入的命令是“1”,主函數(shù)調(diào)用InitStr()函數(shù)從文件進(jìn)行初始化數(shù)組,利用標(biāo)準(zhǔn)輸入函數(shù)將該數(shù)組輸出到標(biāo)準(zhǔn)輸出上;如果用戶輸入的命令是“2”,主函數(shù)調(diào)用FindStrings()函數(shù)查找匹

23、配的字符串并連同匹配的字符串個(gè)數(shù)一并輸出到標(biāo)準(zhǔn)輸出上;如果用戶輸入的命令是“3”,主函數(shù)調(diào)用Replace()函數(shù),將String中要替換的內(nèi)容替換掉;如果用戶輸入的命令是“4”,程序自動(dòng)退出。 第5頁(yè)4課程設(shè)計(jì)調(diào)試程序的開發(fā)與調(diào)試均在Microsoft Visual C+環(huán)境下進(jìn)行。首先程序運(yùn)行后顯示程序的主菜單,主菜單命令選擇設(shè)置“1”:文本文件顯示;“2”:子串查找;“3”:子串替換;“4”:退出整個(gè)程序。程序根據(jù)用戶輸入的命令(數(shù)字14)進(jìn)行相應(yīng)的操作 輸入命令一后程序的運(yùn)行結(jié)果:顯示文本文件的內(nèi)容。如圖4.1 圖4.1程序命令一的運(yùn)行結(jié)果輸入命令二后程序的運(yùn)行結(jié)果:選擇命令二,進(jìn)行字

24、符串的查找測(cè)試。從圖4.3中可以看到查找后的結(jié)果。圖中顯示出查找到的字符串getchar的數(shù)量為3個(gè),并顯示查找成功等信息。如 圖4.2 圖4.3第6頁(yè) 圖4.2程序命令二 字符串查找 圖4.3程序命令二 字符串查找再次輸入命令三后程序的運(yùn)行結(jié)果:選擇命令三,進(jìn)行字符串的替換測(cè)試。從圖4.4中可以看到替換后的結(jié)果。圖中顯示出被替換的字符串getchar和替換后的字符串charget,并顯示替換成功等信息 第7頁(yè) 圖4.4程序命令三 字符串替換 圖4.5程序命令三 字符串替換再次輸入命令一查看命令三是否真正替換成功:從圖4.5中可以看到替換后的結(jié)果,鼠標(biāo)箭頭所指的方向看以看到原先文本文件(對(duì)比前

25、面的程序測(cè)試圖)中最后一行(當(dāng)然,先前是查找到三個(gè),這里只以最后一行容易觀察到的來(lái)進(jìn)行說明)的getchar()已經(jīng)被替換成了charget(),說明程序替換成功,并將替換后的文本文件進(jìn)行了保存。第8頁(yè)5課程設(shè)計(jì)總結(jié)課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí) ,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié)。數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)的基本算法,經(jīng)過這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)對(duì)于實(shí)際應(yīng)用數(shù)據(jù)結(jié)構(gòu)有很大幫助,尤其是對(duì)于串的學(xué)習(xí)上。在數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí)及其課程設(shè)計(jì)中要感謝陳老師的悉心教導(dǎo),為我細(xì)心的指出錯(cuò)誤。第9頁(yè)參考文獻(xiàn)1譚浩強(qiáng).C+程序設(shè)計(jì).北京:清華大學(xué)出版社.20042王曉東.計(jì)算機(jī)算法與分析.北京:

26、電子工業(yè)出版社.20063徐孝凱. C+語(yǔ)言基礎(chǔ)教程. 北京:清華大學(xué)出版社.200249.Esakov J, Weiss T. Data Structures:An Advanced Approach Using C.Prentice-Hall,Inc.,1989年5 晉良潁.數(shù)據(jù)結(jié)構(gòu).人民郵電出版社.2002第10頁(yè)附錄:源程序:#include<stdio.h>#include<stdlib.h>#include<string.h>FILE* fp;char String65535;/長(zhǎng)度要大于輸入文本文件的長(zhǎng)度!char findString50;/

27、輸入的要查找的字符char replaceString50; /輸入的替換后的string void InitStr()/*從文件初始化數(shù)組*/int i=0;fp=fopen("test.txt","r");/打開文件,文件在當(dāng)前目錄下 r-read onlywhile(!feof(fp)Stringi=fgetc(fp);/int fgetc( FILE *stream );i+;/Read a character from a stream.String-i='0'/添加結(jié)束標(biāo)志 fclose(fp);void InputRepla

28、ceChar() /*輸入要替換的字符串*/printf("輸入被替換的字符串:");scanf("%s",findString);printf("輸入要替換的字符串:");scanf("%s",replaceString);int FindString()/*查找第一個(gè)出現(xiàn)要查找字符的下標(biāo)*/int i,j,k;for(i=0;i<strlen(String);i+) j=i;k=0;while(Stringj=findStringk) && (findStringk!='0'

29、;) && (Stringj!='0') /當(dāng)前比較的兩個(gè)字符相等,并且主/模式串都為結(jié)束,繼續(xù)下一個(gè)的比較第11 頁(yè)j+;k+;if(findStringk='0') return i;/返回的是最后的匹配位置return -1;void FindStrings()/*查看文章中共有多少個(gè)要查找的字符*/int i,j,k,all=0;printf("輸入要查找的字符串:");scanf("%s",findString);for(i=0; i < strlen(String); i+)j=i;k=0

30、;while(Stringj=findStringk) && (findStringk!='0') && (Stringj!='0')/當(dāng)前比較的兩個(gè)字符相等,并且主/模式串都為結(jié)束,繼續(xù)下一個(gè)的比較j+;k+;if(findStringk='0')all+;/記錄匹配的字符串的個(gè)數(shù) printf("查找成功!n"); printf("共查找到 %d 個(gè) %s",all,findString);printf("n按任意鍵返回.n");void Insert

31、(char source,int index,char target)/*從指定的下標(biāo)開始插入target數(shù)組中的元素*/Insert(String,pos,replaceString);int i,j,k,m;j=strlen(target);/計(jì)算串target的長(zhǎng)度,存入jk=strlen(source);sourcej+k='0'/ string 串以'0'結(jié)束i=j+k-1;/減1后為實(shí)際長(zhǎng)度m=k-1;while(m >= index)/index 為 pos,pos是找到的位置sourcei=sourcem;i-;m-; 第12頁(yè)i=inde

32、x; /index 為 pos,pos是找到的位置m=0;while(m<j)sourcei=targetm;i+;m+;void Replace()/*將String中要替換的內(nèi)容替換掉*/int pos,b=0;InputReplaceChar();dopos=FindString();/FindString()-return i;返回的是最后的匹配位置b=pos;/FindString()未找到時(shí)返回的是-1,故判斷b=-1if(b=-1) printf("查找內(nèi)容不存在!n");return;else while(Stringb+strlen(findString)!='0')Stringb=Stringb+strlen(findString); b+;Stringb='0'/字符串添加結(jié)束符Ins

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論