




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選文檔文件檢索1需求分析11 建立文本文件 建立文本文件的實(shí)現(xiàn)思路 (1) 定義一個(gè)串變量 (2) 定義文本文件 (3) 輸入文件名,打開該文件 (4) 循環(huán)讀入文本行,寫入文本文件,其過程如下: While(不是文件輸入結(jié)束) 讀入一文本行至串變量; 串變量寫入文件; 輸入是否結(jié)束輸入標(biāo)志; (5) 關(guān)閉文件 1.2給定單詞的計(jì)數(shù) 該功能需要用到前一節(jié)中設(shè)計(jì)的模式匹配算法,逐行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù)。 1.3 檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置 1.4 主控菜單程序的結(jié)構(gòu) (1) 頭文件包含 (2) 菜單選擇包括: 1、 建立
2、文件 2、 單詞計(jì)數(shù) 3、 單詞定位 4、 退出程序 (3)選擇14執(zhí)行相應(yīng)的操作,其他字符為非法1 共0條評(píng)論.2概要設(shè)計(jì)2.流程圖21建立文本文件定義一個(gè)串變量 ,定義文本文件, 輸入文件名,打開該文件 , 循環(huán)讀入文本行,寫入文本文件, 關(guān)閉文件 。建立文本文件的思路過程22給定單詞的計(jì)數(shù)逐行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù)。 給定單詞計(jì)數(shù)的過程23檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置 逐行掃描文本文件。掃描一個(gè)單詞,單詞數(shù)加1,匹配一個(gè),計(jì)數(shù)器加1,輸出該單詞數(shù),行數(shù)到底以此,行數(shù)加1,單詞數(shù)清零,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的
3、次數(shù),行號(hào),第幾個(gè)單詞。檢索單詞的出現(xiàn)在文本文件中的行號(hào),次數(shù)以及位置3詳細(xì)設(shè)計(jì)主代碼#include<stdio.h>#include<string.h>#define MaxStrSize 256 /根據(jù)用戶需要自己定義大小typedef structchar chMaxStrSize; /ch是一個(gè)可容納256個(gè)字符的字符數(shù)組int length;SString; /定義順序串類型int PartPosition(SString s1, SString s2, int k)int i, j;i=k-1; /掃描s1的下標(biāo),因?yàn)閏中數(shù)組下標(biāo)是從0開始,串中序號(hào)相差1
4、j=0; /掃描s2的開始下標(biāo)while (i<s1.length&&j<s2.length)if(s1.chi=s2.chj)i+;j+; /繼續(xù)使下標(biāo)移向下一個(gè)字符位置elsei=i-j+1;j=0;if(j>=s2.length)return i-s2.length;else return -1; /表示s1中不存在s2,返回-1 /表示s1中不存在s2,返回其起始位置 /函數(shù)結(jié)束void CreatTextFile()SString S;char fname10, yn;FILE *fp;printf("輸入要建立的文件名: ");
5、scanf("%s", fname);fp=fopen(fname,"w");yn='n' /輸入結(jié)束標(biāo)志初值while(yn='n'|yn='N')printf("請輸入一行文本:");gets(S.ch);gets(S.ch);S.length=strlen(S.ch);fwrite(&S, S.length, 1, fp);fprintf(fp,"%c", 10); /是輸入換行printf("結(jié)束輸入嗎?y or n: ");yn=
6、getchar();fclose(fp); /關(guān)閉文件printf("建立文件結(jié)束!");void SubStrCount()FILE *fp;SString S,T; /定義兩個(gè)串變量char fname10;int i=0,j,k;printf("輸入文本文件名: ");scanf("%s", fname);fp=fopen(fname ,"r");printf("輸入要統(tǒng)計(jì)技術(shù)的單詞:");scanf("%s", T.ch);T.length=strlen(T.ch);
7、while(!feof(fp)/掃描整個(gè)文件文本/fread(&S.ch,1,sizeof(S),fp); /讀入一行文本memset(S.ch,'0', 256);fgets(S.ch,100,fp);S.length=strlen(S.ch);k=0; /初始化開始檢索位置while(k<S.length-1) /檢索整個(gè)主串Sj=PartPosition(S,T,k);if(j<0)break;elsei+; /單詞計(jì)數(shù)器加1k=j+T.length; /繼續(xù)下一字串的檢索printf("n單詞%s在文本文件%s中共出現(xiàn)%d次n",
8、 T.ch, fname,i); /統(tǒng)計(jì)單詞出現(xiàn)個(gè)數(shù)void SubStrInd()FILE *fp;SString S,T; /定義兩個(gè)串變量char fname10;int i,j,k,l,m;int wz20;printf("輸入文本文件名:");scanf("%s", fname);fp=fopen(fname,"r");printf("輸入要檢索的單詞:");scanf("%s", T.ch);T.length=strlen(T.ch);l=0; while(!feof(fp)/fre
9、ad(&S, sizeof(S), 1, fp);/讀入一行文本memset(S.ch,'0', 256);fgets(S.ch,256,fp);S.length=strlen(S.ch);l+;k=0;i=0;while(k<S.length-1)j=PartPosition(S,T,k);if(j<0)break;elsei+;wzi=j;k=j+T.length;if(i>0)printf("行號(hào):%d , 次數(shù):%d, 位置分別為:",l, i);for(m=1;m<=i;m+) printf("%4d&qu
10、ot;, wzm+1); printf("n");int main()void CreatTextFlie(), SubStrInd();int xz;doprintf("*n");printf("*文本文件的檢索、字符串的統(tǒng)計(jì)及定位*n");printf("*n");printf("* 1.建立文本文件 *n");printf("* 2.單詞字符串的計(jì)數(shù) *n");printf("* 3.單詞字符串的定位 *n");printf("* 4.退出
11、程序 *n");printf("*n");printf(" 請選擇(14) n");scanf("%d", &xz);switch(xz)case 1:CreatTextFile(); break;case 2:SubStrCount(); break;case 3:SubStrInd(); break;case 4:return 0;default: printf("選擇錯(cuò)誤,重新選n");while(1);4調(diào)試分析4.1未輸入文件前的頁面4.2輸入文本文件,計(jì)數(shù)單詞出現(xiàn)的次數(shù) 4.3檢索某單
12、詞的行號(hào),出現(xiàn)次數(shù),以及位置5課程總結(jié)經(jīng)過一周的奮斗,這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)終于做完了。通過這次設(shè)計(jì)我們也著實(shí)又感受了一次編程的樂趣,從中也學(xué)到了不少知識(shí)。感受最深的一點(diǎn)是:以前用編程,只是注重如何編寫函數(shù)能夠完成所需要的功能,似乎沒有明確的戰(zhàn)術(shù),只是憑單純的意識(shí)和簡單的語句來堆砌出一段程序。現(xiàn)在編程感覺完全不同了。在編寫一個(gè)程序之前,先對(duì)這個(gè)課程設(shè)計(jì)進(jìn)行了一下分析,將每個(gè)要求都花了一下算法流程圖,使得自己的思路更加的清晰了 。 然后進(jìn)行編程,不斷的在電腦上調(diào)試程序,終于完成了此次的課程設(shè)計(jì)。另外,我還體會(huì)到深刻理解數(shù)據(jù)結(jié)構(gòu)的重要性。只有真正理解這樣定義數(shù)據(jù)類型的好處,才能用好這樣一種數(shù)據(jù)結(jié)構(gòu)。了解典型數(shù)據(jù)結(jié)構(gòu)的性質(zhì)是非常有用的,它往往是編寫程序的關(guān)鍵。通過這次課程設(shè)計(jì)逐漸提高了自己的程序設(shè)計(jì)和調(diào)試能力,我以前對(duì)算法一直很害怕,總是看不明白究竟這程序中間的過程是怎么進(jìn)行的。在這次實(shí)驗(yàn)中我終于克服了這一障礙,一遍遍在心中自己默默
溫馨提示
- 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民航機(jī)場行李搬運(yùn)與安全監(jiān)管協(xié)議
- 寵物銷售服務(wù)合同模板
- 監(jiān)控室接線員培訓(xùn)
- 樂博樂博培訓(xùn)
- 簡單急救知識(shí)培訓(xùn)
- AIDS合并結(jié)核的護(hù)理
- 幼兒園灶房食品安全培訓(xùn)
- 腫瘤免疫治療機(jī)制與應(yīng)用
- 撓骨中段骨折課件
- 文化創(chuàng)意產(chǎn)業(yè)園區(qū)創(chuàng)意產(chǎn)業(yè)園區(qū)發(fā)展規(guī)劃與實(shí)施路徑研究報(bào)告
- 新護(hù)士五年規(guī)范化培訓(xùn)手冊
- 《小學(xué)趣味語文》PPT課件(優(yōu)秀)
- 醫(yī)學(xué)免疫學(xué)和病原生物學(xué)理論知識(shí)考核試題及答案
- 勝保養(yǎng)操作手冊江鈴馭
- 疫苗及其制備技術(shù)課件
- 阿里巴巴公司價(jià)值觀實(shí)施細(xì)則
- 安全防范系統(tǒng)設(shè)計(jì)方案
- 人教版PEP初中八年級(jí)下冊英語全冊課件
- 《人衛(wèi)版第九版內(nèi)科學(xué)心力衰竭》課件PPT
- 中國監(jiān)察制度史
- 竣工驗(yàn)收證書(模板)
評(píng)論
0/150
提交評(píng)論