版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、文件檢索1需求分析1. 1建立文本文件建立文本文件的實(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 、單詞計(jì)數(shù)3 、 單詞定位4 、退出程序(3)選
2、擇14執(zhí)行相應(yīng)的操作,其他字符為非法2.概要設(shè)計(jì)2.流程圖2. 1建立文本文件定義一個(gè)串變量,定義文本文件,輸入文件名,打開該文件,循環(huán)讀入文本行,寫入文本文件, 關(guān)閉文件。教育資料定義一個(gè)串變量建立文本文件的思路過程2. 2給定單詞的計(jì)數(shù)逐行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加 1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的 次數(shù)。給定單詞計(jì)數(shù)的過程2. 3檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置逐行掃描文本文件。掃描一個(gè)單詞,單詞數(shù)加1,匹配一個(gè),計(jì)數(shù)器加1,輸出該單詞數(shù),行數(shù)到底以此,行數(shù)加1,單詞數(shù)清零,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù),行號(hào),第幾個(gè)單詞。掃描第L行 第N個(gè)單詞If
3、N<=X檢索單詞的出現(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;elsereturn -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("請(qǐng)輸入一行文本:");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:");
6、yn=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;else i+; 單詞計(jì)數(shù)器加1k=j+T.length; 繼續(xù)下一字串的檢索 printf("n 單詞s在文本文件 $中共出現(xiàn) 次坨&
8、quot;,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(
9、fp) /fread(&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+)print
10、f("%4d", wzm+1);printf("n");int main()void CreatTextFlie(), SubStrInd();int xz;doprintf(" printf(" printf(" printf(" printf(" printf(" printf(" printf(" printf("*n");*文本文件的檢索、字符串的統(tǒng)計(jì)及定位*坨");*n");1.建立文本文件*n");2.單詞字符串的
11、計(jì)數(shù)*n");3.單詞字符串的定位*n");4.退出程序*n");I*n");4)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ù)1-
12、建立文本文D:TUTCwbwj. e jie!= 回4.3檢索某單詞的行號(hào),出現(xiàn)次數(shù),以及位置12 3 4帔本文件的檢索、字符串的統(tǒng)計(jì)及定位*i計(jì)定T.snn nFp/匚三匚一一本舞序XX子程門詞詞出建單卷序FWW*由a我本文件的檢索、字符串的統(tǒng)計(jì)及定位» D:TUTCwbwj-exe41f 計(jì)定 曲的 UTXfaKFPF tu自 本至序 2X5立詞詞出日中 童貴4選 2.3.* * 請(qǐng)磁人擘建立的文件去力口油壹董g行受本:莪而一起加油加油加油,潔束迪人藝? y 0M n: 9譚 j 牛I ,h1晟=*11晨)墓1*:«注*企*七*:«堇蛇 文僉科的檢索、字符串的
13、統(tǒng)計(jì)及定位一*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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新能源高壓清洗車項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 2025年太陽能電池背膜項(xiàng)目申請(qǐng)報(bào)告模范
- 2024-2025學(xué)年梧州市蝶山區(qū)數(shù)學(xué)三年級(jí)第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2024-2025學(xué)年渭南市潼關(guān)縣數(shù)學(xué)三上期末調(diào)研試題含解析
- 慶祝2021年教師節(jié)活動(dòng)總結(jié)5篇
- 2025年商旅服務(wù)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 教師課題申請(qǐng)書怎么寫7篇
- 中學(xué)教師2022年度考核個(gè)人總結(jié)(7篇)
- 2025年淡水養(yǎng)殖產(chǎn)品種苗項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 2025年教育云項(xiàng)目申請(qǐng)報(bào)告模范
- 體育大單元教學(xué)計(jì)劃(18課時(shí))
- 2024軟件維護(hù)合同范本
- 期末測評(píng)-2024-2025學(xué)年統(tǒng)編版語文三年級(jí)上冊(cè)
- 云南省師范大學(xué)附屬中學(xué)2025屆高二生物第一學(xué)期期末聯(lián)考試題含解析
- 人教部編版初中八年級(jí)生物上冊(cè)知識(shí)梳理
- 陜西省西安市未央?yún)^(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期末科學(xué)試題
- 四年級(jí)上冊(cè)音樂教案 第七單元 送別蘇少版
- 九年級(jí)物理下冊(cè) 第十五章 電功和電熱 二 電功率教案 (新版)蘇科版
- 小學(xué)體育教案《50米快速跑(途中跑)》
- 八年級(jí)物理上冊(cè) 第六章 第1節(jié) 質(zhì)量教案 (新版)新人教版
- 中職2024-2025學(xué)年高一上學(xué)期期末語文試題06(解析版)
評(píng)論
0/150
提交評(píng)論