數(shù)據(jù)結(jié)構(gòu)文本編輯器_第1頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第2頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第3頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第4頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告一.需求分析1. 題目及要求名稱:簡單的文本編輯器內(nèi)容:輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行。要求:(1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù);(2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一字符或者子串,并將后面的字符前移。(4)插入某一字符或者子串。(5)查找某一字符或者子串。存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應(yīng)的功能;輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點符號。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出”全部字母數(shù)&q

2、uot;、"數(shù)字個數(shù)”、"空格個數(shù)”、”文章總字數(shù)”(3)輸出刪除某一字符串后的文章。通過題目及其要求可知,本程序應(yīng)實現(xiàn)以下功能:(1)文章內(nèi)容的輸入:包括字母、標(biāo)點符號、數(shù)字等;(2)文章內(nèi)容的統(tǒng)計:包括文章中大寫字母、小寫字母、數(shù)字、標(biāo)點符號、空格以及文章所有字數(shù)的個數(shù)的統(tǒng)計;(3)文章內(nèi)容的處理:包括對文章內(nèi)容的查找、刪除以及對指定位置進行插入操作,其中在查找的過程中統(tǒng)計出該字符或字符串在文章中出現(xiàn)的次數(shù);2 問題分析本程序是對一段英文文章的內(nèi)容進行處理,存儲方式采用鏈式存儲, 沒有文件操作,故本程序?qū)ζ湮谋緝?nèi)容的所有操作都是在鏈表中進行的。對于文本的輸入,采用頭插法

3、將文本信息存儲到鏈表已申請好的存儲空間中,在此部分設(shè)計中最大的問題在于輸入文章過程中輸入的字符數(shù)大于 80時如何換行;對于文本內(nèi)容的統(tǒng)計,使用循環(huán)對已存儲的文章進行匹配, 大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字數(shù)直接通過比較即可得到,標(biāo)點符號通過ASCn比較即可得到;對于文本內(nèi)容的處理, 查找部分仍是使用循環(huán)對已存儲的文章進行匹配,判斷需要查找的字符或者字符串是否與文章中某部分內(nèi)容相同,如果存在相同的記錄相同的個數(shù)及位置并輸出個數(shù)及位置。 刪除部分先使用程序的查找功能對文章中需要刪除的字符或者字 符串進行查找,然后對其進行刪除。插入部分為通過輸入的插入位置(行、列)將字符或者 字符串插入到文章制

4、定位置。概要設(shè)計數(shù)據(jù)結(jié)構(gòu)選擇:本程序是對輸入的文字進行操作,故使用的數(shù)據(jù)結(jié)構(gòu)為單鏈表操作。根據(jù)第一部分的問題分析有該鏈表操作有3部分:PreTempNext另有全局變量*head,作為文章的頭指針。故創(chuàng)建了以下結(jié)構(gòu)體:typedef struct _list char data80;記錄一行字符int len gth;/記錄一行字符長度structist *next; / 后繼指針structist *pre;/ 前趨指針int row;記錄整篇文章的行數(shù)Lin kList;在文章內(nèi)容創(chuàng)建部分中使用線性表的鏈式存儲,并使用全局變量對文本的各種信息進行存儲;文章的內(nèi)容統(tǒng)計、刪除、查找、插入都采用

5、鏈表操作完成。本程序為將菜單功能完美化,使用了大量的do while語句。概要設(shè)計:程序框架:*歡迎使用簡單的文本編輯器*主菜單*'k'k'k'k'k'k'k'k1、輸入文本內(nèi)容'k'k'k'k2、顯示當(dāng)前文本內(nèi)容'k'k'k'k3、文本內(nèi)容統(tǒng)計菜單'k'k'k'k4、文本內(nèi)容處理菜單'k'k'k'k5、關(guān)于'k'k'k'k6、退岀本系統(tǒng)*'k'k'

6、k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k*注:第一次使用本系統(tǒng)時請選擇1號功能 *'k'k'k'k文本內(nèi)容的顯示函輸入,數(shù),CreatWord()PrintWo,將文本內(nèi)rd(),將容輸入到已當(dāng)前文申請的存儲本中內(nèi)空間中容顯示岀來文章內(nèi)容統(tǒng)計文章內(nèi)容處理菜單,菜單,Bmenu(),這部分為一CountWord(),子菜單,使用了包括以菜單形式顯Sear

7、chWord()、示給用戶,對DeleteWord()、文章的內(nèi)容進InsertWord()三個函行各種方式的數(shù),對文章內(nèi)容進行統(tǒng)計處理退出系統(tǒng)圖1簡單的文本編輯器主框架兩個子菜單:如選擇上圖中功能 3,則有:圖2簡單的文本編輯器-文本內(nèi)容統(tǒng)計菜單如選擇功能4,則有:* *'k'k'k'k文章內(nèi)容處理菜單*使用子函數(shù)SearchWord(),對存儲在鏈表中的文本進行*1、查找文章中的字符或者字符串*2、刪除文章中的字符或者字符串*3、向文章中插入字符或者字符串*4、顯示當(dāng)前文章內(nèi)容*5、返回主菜單*6、直接退岀系統(tǒng)*判斷'k'k'k

8、9;k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k使用子函數(shù)使用子函數(shù)使用函數(shù)返回到主菜結(jié)束整個程DeleteWord(),對存儲在鏈表lnsertWord(),對存儲在鏈表PrintWord()將當(dāng)前文本單繼續(xù)其他菜單中文本進行字中的文本進行信息顯示出字符或者字符符或者字符串字符或者字符串查找的刪除串的插入圖3簡單的文本編輯器-文本內(nèi)容處理菜單根據(jù)以上各圖,本程序共設(shè)計了11個函數(shù)。1、Headwo

9、rd。 標(biāo)題函數(shù),即一個輸出標(biāo)題,永遠出現(xiàn)在程序的最頂端。2、 CreatWord()文本輸入函數(shù),實現(xiàn)上圖1菜單功能1,對文本的內(nèi)容進行輸入;3、 PrintWord()當(dāng)前文本內(nèi)容輸出函數(shù),實現(xiàn)上圖1菜單功能2以及圖3中功能4,將當(dāng)前存儲在鏈表中的文本內(nèi)容輸出;5、4、 CountWord()文章內(nèi)容統(tǒng)計函數(shù),實現(xiàn)上圖1菜單功能3,對存儲在鏈表中文本內(nèi)容進行統(tǒng)計,包括對文本內(nèi)容中的大寫字母、小寫字母、數(shù)字、標(biāo)點符號、空格以及文章所有字數(shù)的個數(shù)的統(tǒng)計;圖 2是對其完整描述;5、 SearchWord()文章內(nèi)容查找函數(shù),實現(xiàn)上圖3菜單功能1中查找部分;6、 DeleteWord()文章內(nèi)容刪

10、除函數(shù),實現(xiàn)上圖3菜單功能2中刪除部分;7、 InsertWord()文章內(nèi)容插入函數(shù),實現(xiàn)上圖3菜單功能3中插入部分;& Bmenu()第二子菜單函數(shù),實現(xiàn)上圖1菜單功能4,圖3是此函數(shù)實現(xiàn)的結(jié)果,它將6、7各子函數(shù)集合在此函數(shù)中;9、AboutWord() 顯示作者信息的函數(shù),實現(xiàn)上圖1菜單功能5。10、menu()主菜單函數(shù),其結(jié)果為圖1所顯示部分,將1、2、3、4、8、9等函數(shù)集合。11、main ()主函數(shù)各函數(shù)關(guān)系用流程圖形式繪制如下:圖4各函數(shù)之間的關(guān)系詳細設(shè)計1、定義單鏈表結(jié)點類型typedef structist 行表結(jié)構(gòu)char data80;記錄一行字符int l

11、en gth;/記錄一行字符長度structist *next; / 后繼指針structist *pre;/ 前趨指針int row;記錄整篇文章的行數(shù)Lin kList;2、全局變量的定義int NUM,C,N; /定義全局變量,Num用來記錄行號,C用來記錄子串在主串中出現(xiàn)的總次數(shù)LinkList *head; /定義全局變量*head,文章首行頭指針3、各子函數(shù)的偽碼A)CreatWord ()文本內(nèi)容輸入函數(shù)具體創(chuàng)建過程如下:a、 定義 LinkList 指針變量 *temp:LinkList *temp;b、 定義文本輸入變量ch,記錄文本行數(shù)變量j,記錄每行字符數(shù)變量i;c、申請

12、動態(tài)存儲空間:head->n ext=(Li nkList *)malloc(sizeof(Li nkList);d、 首行頭指針的前驅(qū)指針為空:head->pre=NULL;首行指針:temp=head->n ext;首行指針的前驅(qū)指針也為空:temp->pre=NULL;定義沒輸入字符時文章長度為0:temp->le ngth=O;初始化為字符串結(jié)束標(biāo)志,防止出現(xiàn)亂碼:for(i=0;i<80;i+)temp->datai='0'e、利用循環(huán)進行文本輸入for(j=0;j<LINK_INIT_SIZE;j+)控制一頁 for(

13、i=0;i<80;i+) / 控制一行ch=getchar(); /接收輸入字符temp->datai=ch; / 給 temp 指向的行賦值temp->length+;行中字符長度加 1if(ch='#')NUM=j; break; II文章結(jié)束時,Num來記錄整個文章的行數(shù)在字符輸入的過程中,如果在單行輸入的字符超過了80個字符,則需要以下操作:輸入字符數(shù)大于80,重新分配空間建立下一行temp->n ext=(L in kList *)malloc(sizeof(Li nkList);給 temp 的前驅(qū)指針賦值:temp->next->

14、;pre=temp;temp 指向當(dāng)前行:temp=temp->n ext;將下一行初始化為字符串結(jié)束標(biāo)志,防止出現(xiàn)亂碼:for(i=0;i<80;i+)temp->datai='0'記錄整個文章的行數(shù):temp->row=NUM+1;返回指向最后一行指針:return temp;文本輸入部分到此結(jié)束。B)、PrintWord ()當(dāng)前文本輸出函數(shù)本子函數(shù)功能為將當(dāng)前存儲在鏈表中的文本信息輸出在屏幕上,具體偽碼算法如下:a、定義文本行數(shù)變量j,每行字符數(shù)i: int i,j;b、定義指針變量:LinkList *p;c、將指針p指向鏈表表頭:p=head

15、->next;d、 利用循環(huán)輸出鏈表中信息:for(j=0;j<=NU M&&p!=NULL;j+)=for(i=0;(i<80) &&(p->datai)!=#;i+)=pri ntf("%c",p->datai);p=p->n ext; 文本輸出函數(shù)到此結(jié)束。C )、CountWord()文本內(nèi)容統(tǒng)計函數(shù)本子函數(shù)是對文本中內(nèi)容進行統(tǒng)計。具體偽碼算法如下:a、定義指針變量 temp:L in kList *temp;b、 定義記錄文本行數(shù)變量j,每行字符數(shù)i;c、 定義記錄文本大寫字母數(shù)、小寫字母數(shù)、空格

16、數(shù)、數(shù)字數(shù)、標(biāo)點數(shù)和總字數(shù)的變量:int WORD=0,word=0,space=0,num=0,p un ct=0,sum=0;d、將指針temp指向鏈表表頭 :temp=head->next;e、利用循環(huán)對鏈表中信息進行匹配判斷,將大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字數(shù)、標(biāo)點數(shù)和總字數(shù)統(tǒng)計出來:for(j=0;j<=NUM;j+)for(i=0;(i<80)&&(temp->datai)!=#;i+)ch=temp->datai;if(ch>='A') &&(ch<='Z')WORD+

17、;else if(ch>='a') &&(ch<='z')word+;else if(ch>='0') &&(ch<='9')num+;else if(ch=' ')space+;else if(ch=33|ch=34|ch=39|ch=44|ch=46|ch=58|ch=59|ch=63)pun ct+;sum=WORD+word+num;f、本程序?qū)y(tǒng)計項目設(shè)計了菜單提供給用戶選擇。菜單的編寫使用do while語句進行循環(huán)操作,此部分不再多談。D)Sea

18、rchWord()文本內(nèi)容查找函數(shù)本子函數(shù)是對文本內(nèi)容進行查找并且對查找的內(nèi)容進行統(tǒng)計其出現(xiàn)的次數(shù)。具體偽碼算法如下:a、 定義一個數(shù)組,用來記錄需要查找的字符內(nèi)容:char Data20;b、 定義定義文本行數(shù)變量j,每行字符數(shù)i,記錄字符出現(xiàn)的次數(shù)變量:int i,j,m=0.,sum=0;c、 對形參中定義的指針變量進行操作,使其指向鏈表表頭:temp=head-> next;d、 使用VC+中的拷貝函數(shù),將形參中strl的值賦給 Data: strcpy(Data,str1);e、利用循環(huán)進行查找操作,核心算法為:if(temp->dataj)=Datak)k+;將輸入的查

19、找字符與鏈表中信息比較,找到第一個相同的字符else if(Datak!='O')j=j-k; k=0; / /從主串第j-k個位置重新查找if(Datak='0')sum+;此字符出現(xiàn)的次數(shù)加1j=j-k+1; j記錄下該字符串出現(xiàn)的位置printf("tt 第 %d 次出現(xiàn)在第 %d 行第 %d 列 n",l,i+1,j+1); l+;k=0;con ti nu e; temp=temp->next; / 指向下一行對文本內(nèi)容查找的部分完成。E )、DeleteWord()文本內(nèi)容刪除函數(shù)此子函數(shù)是對文本內(nèi)容進行刪除。具體偽碼算法如

20、下:f、 定義一個數(shù)組用來存儲需要刪除的字符或者字符串:char Data20;g、定義指針變量:LinkList *temp , *term ;h、 定義整形變量用來控制行數(shù)、字符數(shù):int i,j,k,m,y, num;i、 使用VC+中拷貝函數(shù)講形參中需要刪除的字符或字符串賦值給已定義的數(shù)組: strcpy(Data,str2);j、 使用循環(huán)進行刪除操作: 其核心算法為:for(i=0;i<=NUM;i+) for(j=0;j<80;j+) if(temp->dataj)=Datak) k+;else if(Datak!='0') j=j-k;k=0;

21、if(Datak='0')num=j; break; if(nu m<80) break;首先是使用循環(huán)查找到需要刪除字符或者字符串的字符數(shù)以及字符或者字符串的位 置,以便于刪除;for(;i<=NUM;i+) for(;j<80;j+) if(j+1<k) term->data80-k+ num=temp->dataj+1; /刪除的字符串不在最后一行,將下一行的字符(由temp指向)前移到前行else temp->dataj-k+1=temp->dataj+1; /當(dāng)要刪除的字符串在最后一 行只要將最后一行的字符前移term=

22、temp; temp=temp->n ext;j=0;/在使用循環(huán),從查找到的字符或者字符串開始進行刪除,在一行刪除完畢之后,轉(zhuǎn)至下一行進行刪除。刪除部分到次完成。F )、lnsertWord()文本內(nèi)容插入函數(shù)此函數(shù)為向文本中插入字符或者字符串。具體偽碼如下:a、 定義需要插入的字符或者字符串的輸入數(shù)組:char Data20;b、 定義需要插入的字符或者字符串的插入的行和列:int h,l;c、進行輸入操作,將上述兩個部分進行輸入d、 定義一個整形變量,確定插入的具體位置:int i=(h-1)*80+l;e、定義一指針變量:LinkList *a;f、 對輸入的字符進行插入操作,具

23、體核心算法如下:int n=strle n( Data);int m ;int insertRow=i/80+1;確定插入位置的行數(shù)int row=temp->row;將全局變量記錄的行數(shù)賦值給rowint j;if(insertRow=row)/判斷插入位置是否在最后一行for(m=temp->le ngth-1;m>=(i%80)&&n> 0;m-)temp->datam+n=temp->datam;將最后一行插入位置后面的所有字符向后移n位for(m=(i%80),j=0;m< n+(i%80);m+,j+)temp->da

24、tam=Dataj;/將要插入的字符或者字符串賦值到要插入的位置else/如果插入的位置不再最后一行 int r=0;for(i nt p=in sertRow; p<row;p+)if(p = in sertRow) r=0;else r=n;for(m=temp->le ngth-1-r;m>=0&&n> 0;m-)temp->datam+n=temp->datam; 將最后一行整體后移n 位a= temp; /p指向前一行temp = temp->pre;/temp 指向前一位temp->le ngth = 80;for(m

25、 = temp->le ngth-n,j=O ;m<temp->le ngth;m+,j+) a->dataj=temp->datam; /將前一行后n個字符移到下一行的前n個字符位置for(m=temp->le ngth-n-1;m>=(i%80);m-)temp->datam+n=temp->datam;插入行位置后的字符后移n位for(m=(i%80),j=0;m<(i%80)+n; m+,j+)temp->datam =Dataj;/將要插入的字符賦值到插入的位置return temp;E) 、Bmenu ()文本內(nèi)容處

26、理菜單本函數(shù)為文本內(nèi)容處理菜單,即使用循環(huán)語句對文本內(nèi)容處理部分的子函數(shù)集中在 此函數(shù)中。F) 、HeadWord()、AboutWord()輸出信息函數(shù)這兩個子函數(shù)為本人自己另加的輸出程序信息的函數(shù);Headword ()是將一標(biāo)題輸出在DOS節(jié)面的最上端;AboutWord ()是顯示作者信息;G)、menu () main ()主菜單函數(shù)以及主函數(shù);本人將主菜單單獨創(chuàng)建為一個子函數(shù),方便觀看。仍然是很簡單的循環(huán)語句實現(xiàn)。主函數(shù)為:void mai n()head=(Li nkList *)malloc(sizeof(Li nkList);Lin kList *temp;men u(tem

27、p);先為head申請存儲空間,然后創(chuàng)建指針變量temp,然后直接在主菜單函數(shù)中進行其他操作。四調(diào)試分析1、上機調(diào)試過程中遇到的問題及解決方法:a) 由于本程序的操作大部分都為經(jīng)常使用的查找、刪除、插入,基本的算法及代碼都 可以通過查找資料得到,故沒有出現(xiàn)多大的問題。錯誤主要是在于刪除及插入等子 函數(shù)中復(fù)雜操作過程中出現(xiàn)的小問題。b) 刪除及插入過程中需要在子函數(shù)中定義一個數(shù)組變量,用來存儲輸入的信息,然后用來與鏈表中的信息進行比較以達到刪除或者插入。另為達到將輸入的信息賦值給子函數(shù)中定義的數(shù)組,特使用了C+中的strcpy ()函數(shù)。c) 為了將程序界面更加的完美,做了3個菜單,還寫了一個子

28、函數(shù)專門將標(biāo)題顯示在程序最上端。清屏函數(shù)使用system (“ cls ”)。2、時間,空間性能分析:本算法的空間復(fù)雜度很低,只需要文本的行數(shù)(N 1) *80+L (最后一行字符數(shù))的數(shù)組存放結(jié)果,因此空間復(fù)雜度為O(N)。但是本算法的時間復(fù)雜度比較高,由于輸出函數(shù)、查找函數(shù)算法時間復(fù)雜度均為O(N),但是刪除函數(shù)、插入函數(shù)算法的時間復(fù)雜度較高。但是,我暫時還問想到時間復(fù)雜度更小的算法,因此在這里我無法對該算法進行優(yōu)化。3、經(jīng)驗和體會:得到文本編輯器這一課程設(shè)計題目時,自己還比較害怕是制作向windows系統(tǒng)中記事本一樣的程序??戳巳蝿?wù)書之后自己有了些欣慰,任務(wù)書上要求是對輸入的信息進行操作

29、, 這是我們經(jīng)常練習(xí)的內(nèi)容,雖然是比平時練習(xí)的更為難,更有深度,但自己畢竟知道該向什么方向去努力,自己應(yīng)該如何去編寫這個程序。所以自己在整個課程設(shè)計過程中還是比較輕松的,編寫過程中遇到的困難及問題都通過查閱資料、向老師提問得以解決。這都是基于對課題有一個明確的了解,清楚向什么方向去寫。 所以本次課程設(shè)計自己最大的體會就是不管寫什么程序,自己首先得對這個問題要分析透徹,要知道自己要干什么,然后才能讓自己干什么。五測試結(jié)果測試文章Real beauty comes from learning, growing, and loving in the ways of life. That is the

30、 Art o f Life. You can lear n slowly, and sometimes pain fully, by just wait ing for life to happe n to y ou. Or you can choose to accelerate your growth and inten ti on ally devour life and all it off ers. You are the artist that paints your future with the brush of today.運行程序后:C z XDocuMcnt s and

31、Set t ingsVAdMi-iii st r at orDebugf5 !&J賽.cxcme x x汰迎侵用簡單的文本演輯器主菜單KXUlLEKSCXXXXKKXXmeKXKSCXJitKXKJiCKXHnMKKaCKXtXKKXliOCXXMHKaCJOCXWrMrWK返回后回到主菜單,然后選擇3號功能進入文本內(nèi)容統(tǒng)計菜單有If U H It4.迸入文章丙容矗盤篥番 氣胃擊文本編輯器BT Hi M; MiW+f-W*注匸第一次運行本程序時請選擇1號功能-wXM KXN M: XXM>W: :K:KX K KMKMXHM XM:M;:M WE:KKK WlOf N M:NNO

32、CMiMiWEMK*XKHHM:江X 請選擇:1Mi U K W圖5程序主菜單按照注先選擇1號功能有:c-a "Ci Dci>irmiKnt' jt nxiiil Ste-"t ± i_:n£ H*ArlAi o i xi: :r nt* nriRKc=-"*歡迎使埔簡單的文本編輯器*三 M; y *;» *«; 打 WM; f M; W; ;穿 M; a* M; f 肝始刨建文本,請贛入文章(輸入H號結(jié)束1 =pd! 1y tcnfri亡呂 £h己m lea.jp*n. in,ndin«j

33、 ln> 1 ht-o£ 1 IFe . Tlva.t zL士 tlief 口尸11 u P LdiF k _ Vuu c-Etrii! letdLiri! s luviljj/, <iridL Bsonte t IniH-s p-dL Inf ullp i> jub: I: uci lit: in g fat* I if *!:» jro u = Oir j/mi 匚眾 im clinnsc? f:o ackzkpcjib * iy-rig vidt li 鼻<! i rt-hrtri t i nnJ%l I57 rlmucinii*li.F e

34、anefl oil it oFFeis .You <ii*e t Jiff art is. it "tliatr paint; rou F til; lire with t he bruh of tzodat/1, ft圖6文本輸入輸入完文字后退回到主菜單,然后選擇2號功能有:° % C : XDocumchlI 3 axid Sett ingsXAdMJLJUiist rat- exc:KKM X WW WHMiX KXXiK XWlff W WKU M:XKa< XiMmilff f W K Mi X X X X X iM X >1 W X W W M

35、: M; X*歡迎使用簡單的文本編輯器M M M M M M K MMMK M M M M M M IN M M MM M M M M M M IN M MM M M M M M M M MKSCKX眉前文章的內(nèi)容是;Re a. 1 Jbu iKiJit </ 匚口 ncs ff-oimi he A vt dF Life »Vau e-art lif e to you. Or vou> c-anlearn ing-, grif owing-, and lo v iog in theof Ilf c . Tlia.t: JLn tleai*n s law and somet

36、: ±mes pa inf ul Ly, just vja.it: ±n<| 書 dp chuuse to <»<ce lei'titc youfii* yr-ow1;h and imiittsnt ionally dicvoiJir1 丄i£e and eill it: of f h i*s . ¥ou. are tha ai*t ist that; pa ints #ou Fu.i&oi*e w±t;h the bi*u&h of todaiy.檢叵車鍵繼續(xù)圖7當(dāng)前文本輸出g *C: lD

37、ocu>ent s and Sett ingsAd*inist rat or桌面 Debug簡單的文本編輯器.exe刈KKiCiitKKiCiC數(shù)數(shù)數(shù) 個>> 的的數(shù)的數(shù) 母母仆號r數(shù)M.紳 壬于的龍宀工秦系 寫寫宀吉譬主本 大不數(shù)標(biāo)空所回出 口口 口口口 口返退12345678耳耳耳ME耳耳If ME耳耳耳ME耳耳H ME耳耳耳ME耳耳H ME耳耳耳ME請選擇需統(tǒng)計項§:圖8文章內(nèi)容統(tǒng)計菜單選擇1-6號功能有:g *C: Docu>ent s and Sett ingsAd>inist rat or桌面Debug簡單的文本編輯器.exe歡迎使用簡單的文

38、本編輯器NKHJCNKHJCNKHJCNNHJCNNHJCNNHJCNNHM:耳 NHM:耳 NKM:耳 NKM:耳 NKNJtNKNJtNKN按回車鍵繼續(xù)文章中標(biāo)點符號的個數(shù):朗圖9統(tǒng)計各功能顯示結(jié)果 如果選擇7回到主菜單,選擇 8直接退出程序。回到主菜單后選擇 4號功能有:*C : XDocuMcnt: s and Set± ingsVAdMini r el± or面IDubu苔簡單的文琲7編輯器住:x>c圖10文章內(nèi)容處理菜單按回三鍵繼續(xù)選擇1后有:c* C: DocuMents and Sett ingsAdMinist rat or桌商1)話11£

39、簡單的文本編輯exe歡迎使用簡單的文本茱輯器請松您鈔查找的字符或字符串 1次岀現(xiàn)在顎1行第苗列 2次岀現(xiàn)在寫2扒剖列 M嵐岀現(xiàn)在第痔耒汕列 4次出現(xiàn)在第命希列字符串慝共岀現(xiàn)次數(shù)為:4圖11文本查找結(jié)果選擇2后有:口 Mc* *C: Docu>ent s and Sett ingsAd»irtist rat or桌面 Debug簡單的文本編輯器“ ehec* C: Docu>ents and Sett i ngsAd>i nj.st rat or桌jftADebu輕簡單的 文本編exec* C: Docu>ents and Sett ingsAd>inis

40、trat or桌面Debug簡單的文車編輯器-ehe請?zhí)靡乙迦氲淖址套址簂earning,MHM:耳 HMM:耳 HMM:耳 NKM:耳 NKNXNKN 耳 NKNXNKN 耳 NKHXNKHXNKHJCNKHJCNNHM:MHM:耳 HMM:耳 HMM:耳 NKM:耳 NKNXNKN 耳 NKNXNKN 耳 NKHXNKHXNKHJCNKHJCNNHM:當(dāng)前文章的內(nèi)容是,Real beauty comes fpon ,growing,and louing in the ways of life.That is Phat is o f Life .Vou can learn slowl

41、y,and sometimes painf Lilly,by just waiting foi'Ping for happen to you.Or you can choose to accelerate your growth and intent ionPtent ionu oup life and all it offers.Vou are the artist that paints your future wPuture ub rush today.請輸兀要插入的行請輸兀要插入的列汐4當(dāng)前文章的內(nèi)僭是:Heal beauty cones f ren learn ingrjs

42、growing,.and loy log in theof life .ThC is Phat is of Life.You cao learn slowlyand sometimes painfull,by just uaiting forP ling for happen to ya<1.Or you can choose to acce lerate your gfrowth and intent iomP tentiopwour life and all it offers-Vou are the artist that paints your future wP ture ob

43、rush today.按回車鍵繼續(xù) * * * * * 歡迎使用簡單的文本編輯器耳 >oo<耳耳>oc選擇3后有:歡迎使用簡單的文本編輯器“歡迎使用簡單的文本編輯器If圖13文章插入結(jié)果 全部結(jié)束后按5回主菜單,按6直接退出程序?;刂鞑藛魏筮x擇 5有:圖12文章刪除結(jié)果:當(dāng)前文草的內(nèi)容是;Real beauty comes from ,growing,and louing in the ways of life.That is Phat is o f Life .Vou can learn sloulj-and sometimes painfullyby just waiti

44、ng f or*+ing f or happen to yoli.Op you can choose to accelerate yolip growth and intention*+tentionu our life and all it offers -Vou are the artist that paints youi* future wWture wb rush todaij.按叵車鍵繼續(xù)歡迎使用簡草的文本編輯器心、*C: XDocuBent s andSettingsAd>inist rator桌面Debug簡單的文本編輯器.eze*l-HJHLJffiL礙F 注 m *r

45、J-i -Plt= 32其X其手F歐迎便用1司車旳義巫錮辛耳盎*LJffiLK> 4HL請輸入您需要刪除的字符或字符串t learn inc* ""C: Dncuaent s and Settin£sAd»inistrator桌畫'Debu%'簡單的文本編輯誥.exe圖14關(guān)于界面回主菜單選擇6后退出本程序。六程序完整代碼#i nclude"stdio.h"#i nclude"malloc.h"#i nclude"stri ng.h"#in clude"iostr

46、eam.h"#i nclude"stdlib.h"#i nclude"con io.h"#defi ne Lin k_Size 100 int NUM,C,N;typedef struct listchar data80; int len gth; struct list *n ext; struct list *pre; int row; Lin kList;Lin kList *head;void HeadWord()/ system("cls");*n")prin tf("tt*n") p

47、rin tf("tt*歡迎使用簡單的文本編輯器prin tf("tt*n")Lin kList *CreatWord()Lin kList *temp;char ch;int i,j;head->n ext=(L in kList *)malloc(sizeof(Li nkList); head->pre=NULL;temp=head->n ext;temp->pre=NULL;temp->le ngth=O;for(i=0;i<80;i+)temp_>datai='O::n");printf(”開始創(chuàng)建

48、文本,請輸入文章(輸入 #號結(jié)束)for(j=0;j<Li nk_Size;j+)for(i=0;i<80;i+) ch=getchar(); temp->datai=ch; temp->le ngth+; if(ch='#')NUM=j;break;if(ch='#')temp->le ngth=i;temp->n ext=NULL;break;temp->n ext=(L in kList *)malloc(sizeof(Li nkList);temp->n ext->pre=temp;temp=temp

49、->n ext;for(i=0;i<80;i+)temp->datai='0'temp->row=NUM+1; system("cls"); return temp; void Prin tWord()int i,j;Lin kList *p;p=head->n ext; system("cls");Headword。;printf("n當(dāng)前文章的內(nèi)容是:”); for(j=0;j<=NU M&&p!=NULL;j+)for(i=0;(i<80)&&(p-

50、>datai)!=#;i+)prin tf("%c",p->datai);p=p->n ext;void Coun tWord()Lin kList *temp;char ch;int i,j,t;int WORD=0,word=0,space=0,num=0,p un ct=0,sum=0; temp=head->n ext;for(j=0;j<=NUM;j+)for(i=0;(i<80)&&(temp->datai)!=#;i+) ch=temp->datai; if(ch>='A')

51、 &&(ch<='Z')WORD+;else if(ch>='a') &&(ch<='z') word+;else if(ch>='0') &&(ch<='9')nu m+;else if(ch='')space+;else if(ch=33|ch=34|ch=39|ch=44|ch=46|ch=58|ch=59|ch=63)pun ct+;sum=WORD+word+num; while(1) prin tf("

52、;n");Headword。;prin tf("tt* n")prin tf("tt*文章內(nèi)容統(tǒng)計菜單*n")prin tf("tt* n")prin tf("tt*1、文章中大寫字母的個數(shù)*n")prin tf("tt*2、文章中小寫字母的個數(shù)*n")prin tf("tt*3、文早中數(shù)字的個數(shù)*n")prin tf("tt*4、文章中標(biāo)點符號的個數(shù)*n")prin tf("tt*5、文章中空格的個數(shù)*n")prin tf(

53、"tt*6、文早中所有字數(shù)prin tf("tt*7、退出返回主菜單*n")prin tf("tt*8、直接退出本系統(tǒng)*n")prin tf("tt* n")printf("tt請選擇需統(tǒng)計項目:”);scan f("%d", &t);switch(t)case 1:system("cls");HeadWord();printf("ntt文章中大寫字母的個數(shù):dn",WORD);printf("按回車鍵繼續(xù)");getchar(

54、);getchar();system("cls");break;case 2:system("cls");HeadWord();printf("ntt文早中小與字母的個數(shù):dn",word);printf("按回車鍵繼續(xù)");getchar();getchar();system("cls");break;case 3:system("cls");Headword。;printf("ntt 文章中數(shù)字的個數(shù):dn",num); printf(”按回車鍵繼續(xù)");getchar();getchar();system("cls");break;case 4:system("cls");He

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論