版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上中北大學(xué)數(shù) 據(jù) 結(jié) 構(gòu)課 程 設(shè) 計(jì) 說(shuō) 明 書(shū) 學(xué)生姓名: 學(xué) 號(hào): 學(xué) 院:專 業(yè): 題 目:串的查找與替換指導(dǎo)教師尹四清 2011年12月30日1.設(shè)計(jì)目的數(shù)據(jù)結(jié)構(gòu)課程主要介紹最常用的數(shù)據(jù)結(jié)構(gòu),闡明各種數(shù)據(jù)結(jié)構(gòu)內(nèi)在的邏輯關(guān)系,討論其在計(jì)算機(jī)中的存儲(chǔ)表示,以及在其上進(jìn)行各種運(yùn)算時(shí)的實(shí)現(xiàn)算法,并對(duì)算法的效率進(jìn)行簡(jiǎn)單的分析和討論。進(jìn)行數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)要達(dá)到以下目的:n 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;n 初步掌握軟件開(kāi)發(fā)過(guò)程的
2、問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;n 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;n 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。2.設(shè)計(jì)面內(nèi)容與要求設(shè)計(jì)內(nèi)容:打開(kāi)一篇英文文章,在該文章中找出所有給定的單詞,然后對(duì)所有給定的單詞替換為另外一個(gè)單詞,再存盤(pán)。設(shè)計(jì)要求:(1) 符合課題要求,實(shí)現(xiàn)相應(yīng)功能;(2) 操作方便易行;(3) 注意程序的實(shí)用性、安全性;3.本設(shè)計(jì)所采用的數(shù)據(jù)結(jié)構(gòu)3.1數(shù)組數(shù)組在編程應(yīng)用時(shí)調(diào)用很方便隨意,但在更改數(shù)組時(shí)比較麻煩必須調(diào)用數(shù)組中的所有元素。char keyWordsSIZE;char
3、 copyWordsSIZE;char strOneMAXLEN; char strTwoMAXLEN; 3.2串的匹配if (keyWords0 = strOnei)if (keyWordsj != strOnecountFlag+)4功能模塊詳細(xì)設(shè)計(jì)4.1 詳細(xì)設(shè)計(jì)思想a)需求分析打開(kāi)一篇英文文章,在該文章中找出所有給定的單詞,然后對(duì)所有給定的單詞替換為另外一個(gè)單詞,再存盤(pán)。b)概要設(shè)計(jì)Ø 程序頭設(shè)計(jì)對(duì)程序作簡(jiǎn)單介紹以及輸出程序制作人的基本信息。main() printf("nnnttt數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)n"); printf("nttt題目:串的查找
4、與替換n"); printf("nttt專業(yè):機(jī)電一體化軟件開(kāi)發(fā)與應(yīng)用n"); printf("nttt學(xué)號(hào):n"); printf("nttt姓名:張勝東");printf("nt程序作用:打開(kāi)一篇英語(yǔ)作文,在該文章中找出所有給定的單詞,然后對(duì)nt所有給定的單詞替換為另一個(gè)單詞再存盤(pán)。"); printf("n*n");Ø 主函數(shù)void main()通過(guò)for循環(huán)對(duì)字符串進(jìn)行匹配,找到匹配的單詞然后將copy的單詞字符放入strTwo數(shù)組中,不匹配的單詞也放入數(shù)組strT
5、wo中完成替換,最后把strTwo中的字符放回文件中完成操作。C)設(shè)計(jì)思想 串的查找與替換要實(shí)現(xiàn)的功能是:打開(kāi)一篇英文文章,在該文章中找出所有給定的單詞,然后對(duì)所有給定的單詞替換為另外一個(gè)單詞,再存盤(pán)。 首先實(shí)現(xiàn)程序比較簡(jiǎn)單的功能,即:輸入要替換的單詞和給定單詞gets(keyWords); gets(copyWords)。然后實(shí)現(xiàn)程序打開(kāi)文件的功能。 最后編寫(xiě)最核心的替換功能,首先用關(guān)鍵字來(lái)匹配要查找的單詞,第一個(gè)單詞匹配上的話再判斷這個(gè)關(guān)鍵字在不在單詞的首字母上,否則不匹配,主要是要實(shí)現(xiàn)替換單詞的功能不替換其他單詞中的字符串。然后匹配第二個(gè)字母,這樣一次類推的判斷。不匹配的單詞直接放入st
6、rTwo數(shù)組中,匹配的單詞先替換然后再放入strTwo數(shù)組中。4.2 核心代碼Ø 打開(kāi)文件if (fp = fopen("filename", "r") =NULL )printf("文件打開(kāi)失敗!n"); exit(0);Ø 查找和替換單詞while (!feof(fp)/* 讀文件 */strOnecountOne+ = fgetc(fp);/*這是從指定穩(wěn)中取得一個(gè)字符 strOnecountOne+ = fgets(fp);這是從指定文章中取得一個(gè)字符串*/countOne-;/* 減去最后一個(gè)文件結(jié)束字符
7、 */for (i=0; i<countOne; i+)if (keyWords0 = strOnei)if (' ' = strOnei-1) | ('n' = strOnei-1) | (0 = i)flag = 1;countFlag = i + 1; for (j=1; keyWordsj!='0' j+) if (keyWordsj != strOnecountFlag+)/* 是否匹配 */ flag = 0;break; if (' ' = strOnecountFlag) | ('n' = s
8、trOnecountFlag) | (EOF = strOnecountFlag)/* 2.檢查單詞后的一個(gè)字符 */if (1 = flag)/* 若匹配,則進(jìn)行拷貝 */ i = countFlag-1;for (j=0; copyWordsj!='0' j+) strTwocountTwo+ = copyWordsj; else/* 另外 */strTwocountTwo+ = strOnei;else/* 另外 */strTwocountTwo+ = strOnei;else/* 另外 */strTwocountTwo+ = strOnei; 4.3調(diào)試分析圖1 程序開(kāi)
9、始的界面圖2 輸入要查找和替換的單詞圖3 輸入要打開(kāi)的文件名5課程設(shè)計(jì)心得及存在問(wèn)題心得:通過(guò)這次做課程設(shè)計(jì),發(fā)現(xiàn)了學(xué)習(xí)中的很多問(wèn)題,平時(shí)學(xué)習(xí)的東西在做起來(lái)時(shí)有很大的困難,獨(dú)立構(gòu)思一個(gè)程序很難,不像平時(shí)看程序一樣簡(jiǎn)單。想出來(lái)程序結(jié)構(gòu)后,就一個(gè)簡(jiǎn)單的打開(kāi)文件就費(fèi)了好大的勁,運(yùn)行幾次都出現(xiàn)了異常,最后找學(xué)長(zhǎng)請(qǐng)教才學(xué)會(huì)使用exit()命令。核心程序就更復(fù)雜了,做了很久都沒(méi)頭緒,最后在一位學(xué)長(zhǎng)的輔助下完成了核心程序。存在問(wèn)題:剛開(kāi)始實(shí)現(xiàn)的功能是先輸入要查找和替換的單詞,再輸入要打開(kāi)的文件,做完程序后想把打開(kāi)文件的程序放到前面,可換位置后就一直出錯(cuò)。5源程序#include <stdio.h>
10、;#include <stdlib.h>#define SIZE 20 /* 查找單詞字符和輸入替換單詞少于20 */#define MAXLEN 10000 /* 文章字符不大于10000 */void main()int i, j;int flag; /* 用于標(biāo)記匹配單詞 */int countFlag; /* 用于檢查匹配計(jì)數(shù) */int countOne = 0; /* 記錄未改文章字符個(gè)數(shù) */int countTwo = 0; /* 記錄改后文章字符個(gè)數(shù) */ char keyWordsSIZE; /* 查找單詞 */char copyWordsSIZE;/* 替換單
11、詞 */char strOneMAXLEN; /* 將未改文章的所有字符儲(chǔ)存在里面 */char strTwoMAXLEN; /* 將改后文章的所有字符儲(chǔ)存在里面 */char filename20; /*輸入的文件名的字符個(gè)數(shù)*/ printf("nnnttt數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)n"); printf("nttt題目:串的查找與替換n"); printf("nttt專業(yè):機(jī)電一體化軟件開(kāi)發(fā)與應(yīng)用n"); printf("nttt學(xué)號(hào):n"); printf("nttt姓名:張勝東"); print
12、f("nt程序作用:打開(kāi)一篇英語(yǔ)作文,在該文章中找出所有給定的單詞,然后對(duì)nt所有給定的單詞替換為另一個(gè)單詞再存盤(pán)。"); printf("n*n");FILE *fp;printf("請(qǐng)輸入要查找的單詞: ");gets(keyWords);printf("請(qǐng)輸入要替換的單詞: ");gets(copyWords);printf("請(qǐng)輸入要打開(kāi)的文件名:");scanf("%s",filename);if (fp = fopen(filename, "r"
13、;) =NULL )/* 讀文件,前邊的就是輸入的文件名,后邊是指只讀read */printf("文件打開(kāi)失敗!n"); exit(0);while (!feof(fp)/* 讀文件 */strOnecountOne+ = fgetc(fp);/*這是從指定穩(wěn)中取得一個(gè)字符 strOnecountOne+ = fgets(fp);這是從指定文章中取得一個(gè)字符串*/countOne-;/* 減去最后一個(gè)文件結(jié)束字符 */for (i=0; i<countOne; i+)if (keyWords0 = strOnei)/* 判斷查找單詞第一個(gè)字符是否匹配 */if (&
14、#39; ' = strOnei-1) | ('n' = strOnei-1) | (0 = i)/* 1.檢查單詞前的一個(gè)字符 */flag = 1;countFlag = i + 1; for (j=1; keyWordsj!='0' j+) if (keyWordsj != strOnecountFlag+)/* 是否匹配 */ flag = 0;break; if (' ' = strOnecountFlag) | ('n' = strOnecountFlag) | (EOF = strOnecountFlag)/* 2.檢查單詞后的一個(gè)字符 */if (1 = flag)/* 若匹配,則進(jìn)行拷貝 */ i = countFlag-1;for (j=0; copyWordsj!='0' j+) strTwocountTwo+ = copyWordsj; else/* 另外 */strTwocountTwo+ = strOnei;else/* 另外 */strTwocountTwo+ = strOnei;else/*
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)智能安防巡檢機(jī)器人行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球胃電刺激裝置行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)可調(diào)鎖骨矯正器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2024年軍隊(duì)文職人員招聘考試題庫(kù)
- 二零二五年度碳酸鈣礦石行業(yè)發(fā)展趨勢(shì)分析合同3篇
- 二零二五年度學(xué)長(zhǎng)的親子閱讀推廣合作合同2篇
- 2025年度太陽(yáng)能光伏鋼化玻璃采購(gòu)合同2篇
- 淮安2025年江蘇淮安漣水縣公安局警務(wù)輔助人員招聘87人(一)筆試歷年參考題庫(kù)附帶答案詳解
- 2025版雙方合作合同保證書(shū)(網(wǎng)絡(luò)安全與數(shù)據(jù)保護(hù)合作版)3篇
- 2025年湘教新版九年級(jí)歷史下冊(cè)月考試卷含答案
- 醫(yī)保政策與健康管理培訓(xùn)計(jì)劃
- 無(wú)人化農(nóng)場(chǎng)項(xiàng)目可行性研究報(bào)告
- 《如何存款最合算》課件
- 社區(qū)團(tuán)支部工作計(jì)劃
- 拖欠工程款上訪信范文
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語(yǔ)試題(原卷版)
- 學(xué)生春節(jié)安全教育
- 《wifi協(xié)議文庫(kù)》課件
- 《好東西》:女作者電影的話語(yǔ)建構(gòu)與烏托邦想象
- 教培行業(yè)研究系列(七):出國(guó)考培的再研究供需變化的新趨勢(shì)
- GB/T 44895-2024市場(chǎng)和社會(huì)調(diào)查調(diào)查問(wèn)卷編制指南
評(píng)論
0/150
提交評(píng)論