


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)據(jù)結構課程設計報告一. 需求分析1. 題目及要求名稱:簡單的文本編輯器內容:輸入一頁文字,程序可以統(tǒng)計岀文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過個字符,共N行。要求:(1)分別統(tǒng)計岀其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù);(2) 統(tǒng)計某一字符串在文章中岀現(xiàn)的次數(shù),并輸岀該次數(shù);(3) 刪除某一字符或者子串,并將后面的字符前移。(4) 插入某一字符或者子串。(5) 查找某一字符或者子串。存儲結構使用線性表,分別用幾個子函數(shù)實現(xiàn)相應的功能;輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標點符號。輸岀形式:(1) 分行輸岀用戶輸入的各行字符;(2) 分4行輸岀“全部
2、字母數(shù)"、“數(shù)字個數(shù)“、"空格個數(shù)“、"文章總字數(shù)“(3) 輸岀刪除某一字符串后的文章。通過題目及其要求可知,本程序應實現(xiàn)以下功能:(1) 文章內容的輸入:包括字母、標點符號、數(shù)字等;(2) 文章內容的統(tǒng)計:包括文章中大寫字母、小寫字母、數(shù)字、標點符號、空格以及文章所有字數(shù)的個數(shù)的統(tǒng)計;(3) 文章內容的處理:包括對文章內容的查找、刪除以及對指定位置進行插入操作,其中在查找的過程中統(tǒng)計岀該字符或字符串在文章中岀現(xiàn)的次數(shù);2 問題分析本程序是對一段英文文章的內容進行處理,存儲方式采用鏈式存儲,沒有文件操作,故本程序對其文本內容的所有操作都是在鏈表中進行的。對于文本的
3、輸入,采用頭插法將文本信息存儲到鏈表已申請好的存儲空間中,在此部分設計中最大的問題在于輸入文章過程中輸入的字符數(shù)大于80時如何換行;對于文本內容的統(tǒng)計,使用循環(huán)對已存儲的文章進行匹配,大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字數(shù)直接通過比較即可得到,標點 符號通過ASCH比較即可得到;對于文本內容的處理,查找部分仍是使用循環(huán)對已存儲的文章進行匹配,判斷需 要查找的字符或者字符串是否與文章中某部分內容相同,如果存在相同的記錄相同的個數(shù)及位置并輸岀個數(shù)及 位置。刪除部分先使用程序的查找功能對文章中需要刪除的字符或者字符串進行查找,然后對其進行刪除。插 入部分為通過輸入的插入位置(行、列)將字符或者字符串
4、插入到文章制定位置。二. 概要設計數(shù)據(jù)結構選擇: 本程序是對輸入的文字進行操作,故使用的數(shù)據(jù)結構為單鏈表操作。根據(jù)第一部分的問題分析 有該鏈表操作有 3部分:PreTempNext另有全局變量*head,作為文章的頭指針。故創(chuàng)建了以下結構體:typedef struct _list char data80;/記錄一行字符int len gth;/記錄一行字符長度structist *next;/ 后繼指針structist *pre;/ 前趨指針int row;/記錄整篇文章的行數(shù)Lin kList;在文章內容創(chuàng)建部分中使用線性表的鏈式存儲,并使用全局變量對文本的各種信息進行存儲; 文章的內容
5、統(tǒng)計、刪除、查找、插入都采用鏈表操作完成。本程序為將菜單功能完美化,使用了大量的do while語句。概要設計:程序框架:文本內容的CreatWord(),將文本內 容輸入到已申請的存儲空間中顯示函數(shù),PrintWord(),將當前文本中內容顯示岀來文章內容統(tǒng)計菜單,文章內容處理菜單,CountWord(), 以菜單形式顯 示給用戶,對 文章的內容進 行各種方式的 統(tǒng)計Bmenu(),這部分為一 子菜單,使用了包括SearchWord()DeleteWord()、lnsertWord()三個函 數(shù),對文章內容進行 處理圖1簡單的文本編輯器主框架一個類似與作者信AboutWord(),顯示作者信
6、息退岀系統(tǒng)兩個子菜單:如選擇上圖中功能 3,則有:圖2簡單的文本編輯器-文本內容統(tǒng)計菜單* *文章內容統(tǒng)計菜單*'k'k'k'k文章中大寫字母的個數(shù)'k'k'k'k統(tǒng)計統(tǒng)計文本文本中大中小寫字寫字母個母個數(shù)數(shù)統(tǒng)計文本中數(shù)字的 個數(shù)'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k
7、9;k'k'k6、3簡單的文本編輯本內容處理菜單根據(jù)以上各圖,本程序共設文章中小寫字母的個數(shù) 文章中數(shù)字的個數(shù)文章中標點符號的個數(shù)文章中空格的個數(shù)文章中所有字數(shù)退岀返回主菜單直接退岀本系統(tǒng)*個數(shù)'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k* *'k'k'k'k文章內容處理菜單'k'k'
8、;k'k*判斷'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k'k1、2、3、4、5、6、查找文章中的字符或者字符串刪除文章中的字符或者字符串向文章中插入字符或者字符串顯示當前文章內容67返回主菜單直接退岀系統(tǒng)*統(tǒng)計統(tǒng)計 返回文本個數(shù)到主所有菜單判斷理T文本'k'k'k'k'k'k'k'k'k'k'k'k&
9、#39;k'k'k'k'k'k'k'k'k'k'k'k直接退岀系統(tǒng)使用子函數(shù)使用函數(shù)返回到主菜單繼續(xù)其他6使用子函數(shù)使用子函數(shù)結束整個程SearchWord(),對存儲在鏈表DeleteWord(),對存儲在鏈表lnsertWord(),對存儲在鏈表PrintWord()將當前文本菜單中的文本進行字符或者字符串查找中文本進行字符或者字符串的刪除中的文本進行字符或者字符串的插入信息顯示出計了 11個函數(shù) 1、HeadWord() 標題函數(shù),即一個輸岀標題,永遠岀現(xiàn)在程序的最頂端2、 CreatWord()文本
10、輸入函數(shù),實現(xiàn)上圖1菜單功能1,對文本的內容進行輸入;3、 PrintWord()當前文本內容輸岀函數(shù),實現(xiàn)上圖1菜單功能2以及圖3中功能4,將當前存儲在鏈表中的文本內容輸出;1菜單功能3,對存儲在鏈表中文本內容進4、CountWord()文章內容統(tǒng)計函數(shù),實現(xiàn)上圖 行統(tǒng)計,包括對文本內容中的大寫字母、小寫字母、數(shù)字、標點符號、空格以及文章所有字 數(shù)的個數(shù)的統(tǒng)計;圖 2是對其完整描述;3菜單功能1中查找部分;3菜單功能2中刪除部分;3菜單功能3中插入部分;5、SearchWord() 文章內容查找函數(shù),實現(xiàn)上圖6、DeleteWord()文章內容刪除函數(shù),實現(xiàn)上圖7、 InsertWord()
11、文章內容插入函數(shù),實現(xiàn)上圖8、 Bmenu()第二子菜單函數(shù),實現(xiàn)上圖1菜單功能4,圖3是此函數(shù)實現(xiàn)的結果,它將5、6、7各子函數(shù)集合在此函數(shù)中;9、 AboutWord()顯示作者信息的函數(shù),實現(xiàn)上圖1菜單功能5。10、 menu()主菜單函數(shù),其結果為圖1所顯示部分,將1、2、3、4、8、9等函數(shù)集合。11、main ()主函數(shù)各函數(shù)關系用流程圖形式繪制如下:圖4各函數(shù)之間的關系三詳細設計1、定義單鏈表結點類型typedef struct _list行表結構char data80;/ 記錄一行字符int len gth;/記錄一行字符長度structist *next;/ 后繼指針stru
12、ctist *pre;/ 前趨指針int row;/記錄整篇文章的行數(shù)Lin kList;2、全局變量的定義int NUM,C,N;/定義全局變量,Num用來記錄行號,C用來記錄子串在主串中岀現(xiàn)的總次數(shù)LinkList *head; /定義全局變量*head,文章首行頭指針3、各子函數(shù)的偽碼A)CreatWord ()文本內容輸入函數(shù)具體創(chuàng)建過程如下:a、 定義 LinkList 指針變量 *temp: LinkList *temp;b、 定義文本輸入變量ch,記錄文本行數(shù)變量j,記錄每行字符數(shù)變量i;c、申請動態(tài)存儲空間:head-next=(Li nkList *)malloc(sizeo
13、f(Li nkList);d、 首行頭指針的前驅指針為空:head->p re=NULL;首行指針:temp=head->n ext;首行指針的前驅指針也為空:temp->pre=NULL;定義沒輸入字符時文章長度為0:temp->le ngth=O;初始化為字符串結束標志,防止岀現(xiàn)亂碼:for(i=0;i<80;i+)temp->datai='0'e、利用循環(huán)進行文本輸入for(j=0;j<LINK_INIT_SIZE;j+) 控制一頁 for(i=0;i<80;i+) / 控制一行 ch=getchar(); /接收輸入字符t
14、emp->datai=ch; / 給 temp 指向的行賦值temp->length+;行中字符長度加1if(ch='#')NUM=j; break; /文章結束時,Num來記錄整個文章的行數(shù)在字符輸入的過程中,如果在單行輸入的字符超過了80個字符,則需要以下操作輸入字符數(shù)大于80,重新分配空間建立下一行temp->n ext=(L in kList *)malloc(sizeof(Li nkList);給 temp 的前驅指針賦值:temp->next->pre=temp;temp 指向當前行:temp=temp->next;將下一行初始化
15、為字符串結束標志,防止岀現(xiàn)亂碼:for(i=0;i<80;i+)temp->datai='0'記錄整個文章的行數(shù):temp->row=NUM+1;返回指向最后一行指針:return temp;文本輸入部分到此結束。B )、PrintWord ()當前文本輸岀函數(shù)本子函數(shù)功能為將當前存儲在鏈表中的文本信息輸岀在屏幕上,具體偽碼算法如下:a、 定義文本行數(shù)變量j,每行字符數(shù)i: int i,j;b、定義指針變量:LinkList *p;c、將指針p指向鏈表表頭:p=head->next;d、利用循環(huán)輸岀鏈表中信息 :for(j=0;j<=NU M&am
16、p;&p匸NULL;j+)=for(i=0;(i<80)&&(p->datai)匸 #;i+)=pri ntf("%c",p->datai);p=p->n ext; 文本輸岀函數(shù)到此結束。C) 、CountWord() 文本內容統(tǒng)計函數(shù)本子函數(shù)是對文本中內容進行統(tǒng)計。具體偽碼算法如下:a、定義指針變量 temp:L in kList *temp;b、 定義記錄文本行數(shù)變量j,每行字符數(shù)i;c、定義記錄文本大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字數(shù)、標點數(shù)和總字數(shù)的變量:int WORD=0,word=0,space=0,n um=
17、O,pu nct=O,sum=O;d、將指針temp指向鏈表表頭 :temp=head->next;e、利用循環(huán)對鏈表中信息進行匹配判斷,將大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字數(shù)、標點數(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+;else if(ch>='a' )&&( ch<=
18、'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)pu nct+;sum=WORD+word+num;f、本程序對統(tǒng)計項目設計了菜單提供給用戶選擇。菜單的編寫使用do while語句進行循環(huán)操作,此部分不再多談。D) SearchWord() 文本內容查找函數(shù)本子函數(shù)是對文本內容進行查找并且對查找的內容進行統(tǒng)計其岀現(xiàn)的次數(shù)。具體偽碼算
19、法如下:a、 定義一個數(shù)組,用來記錄需要查找的字符內容:char Data20;b、 定義定義文本行數(shù)變量j,每行字符數(shù)i,記錄字符岀現(xiàn)的次數(shù)變量:int i,j,m=0.,sum=0;c、 對形參中定義的指針變量進行操作,使其指向鏈表表頭:temp=head-> next;d、 使用VC+中的拷貝函數(shù),將形參中str1的值賦給 Data: strcpy(Data,str1);e、利用循環(huán)進行查找操作,核心算法為:if(temp->dataj)=Datak)k+;將輸入的查找字符與鏈表中信息比較,找到第一個相同的字符else if(Datak!='0')j=j-k;
20、 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 nue;temp=temp->next; / 指向下一行對文本內容查找的部分完成。E)、DeleteWord() 文本內容刪除函數(shù)此子函數(shù)是對文本內容進行刪除。具體偽碼算法如下:f、 定義一個數(shù)組用來存儲需要刪除的字符或者字符串:char Data20;g、定義指針變量:LinkList *te
21、mp ,*term ;h、 定義整形變量用來控制行數(shù)、字符數(shù):int i,j,k,m,y,num;i、 使用VC+中拷貝函數(shù)講形參中需要刪除的字符或字符串賦值給已定義的數(shù)組:strcpy(Data,str2);j、 使用循環(huán)進行刪除操作:其核心算法為:for(i=O;i<=NUM;i+) for(j=0;j<80;j+) if(temp->dataj)=Datak) k+;else if(Datak!='0') j=j-k;k=0;if(Datak='0')n um=j; break; if(n um<80) break;首先是使用循環(huán)查
22、找到需要刪除字符或者字符串的字符數(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; /當要刪除的字符串在最后一行只要將最后一行的字符前移term=temp;temp=temp->n ext;j=0; /在使用循環(huán),從查找到的字符或者字符串開始進行刪除,在一行刪除完畢之后
23、,轉至下一 行進行刪除。刪除部分到次完成。F )、lnsertWord() 文本內容插入函數(shù)此函數(shù)為向文本中插入字符或者字符串。具體偽碼如下:a、 定義需要插入的字符或者字符串的輸入數(shù)組:char Data20;b、 定義需要插入的字符或者字符串的插入的行和列:int h,l;c、進行輸入操作,將上述兩個部分進行輸入d、 定義一個整形變量,確定插入的具體位置:int i=(h-1)*80+l;e、定義一指針變量:Lin kList *a;f、 對輸入的字符進行插入操作,具體核心算法如下:int n=strle n( Data);int m ;intinsertRow=i/80+1;確定插入位置
24、的行數(shù)int row=temp->row;/將全局變量記錄的行數(shù)賦值給rowint j;if(i nsertRow=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->datam=Dataj; /將要插入的字符或者字符串賦值到要插入的位置else/如果插入的位置不再最后一行 int r=0;fo
25、r(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 = temp->le ngth-n,j=O;m<temp->le ngth;m+,j+)a->da
26、taj=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 ()文本內容處理菜單本函數(shù)為文本內容處理菜單,即使用循環(huán)語句對文本內容處理部分的子函數(shù)集中在此函數(shù)中。F) 、HeadWord()、About
27、Word() 輸岀信息函數(shù)這兩個子函數(shù)為本人自己另加的輸岀程序信息的函數(shù);HeadWord ()是將一標題輸岀在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(temp);先為head申請存儲空間,然后創(chuàng)建指針變量temp,然后直接在主菜單函數(shù)中進行其他操作。四調試分析1、上機調試過程中遇到
28、的問題及解決方法:a) 由于本程序的操作大部分都為經(jīng)常使用的查找、刪除、插入,基本的算法及代碼都可以通過查找資料得 至嘰故沒有岀現(xiàn)多大的問題。錯誤主要是在于刪除及插入等子函數(shù)中復雜操作過程中岀現(xiàn)的小問題。b) 刪除及插入過程中需要在子函數(shù)中定義一個數(shù)組變量,用來存儲輸入的信息,然后用來與鏈表中的信息C+中的進行比較以達到刪除或者插入。另為達到將輸入的信息賦值給子函數(shù)中定義的數(shù)組,特使用了 strcpy ()函數(shù)。c) 為了將程序界面更加的完美,做了3個菜單,還寫了一個子函數(shù)專門將標題顯示在程序最上端。清屏函數(shù)使用 system (“ cls ”)。2、時間,空間性能分析:本算法的空間復雜度很低
29、,只需要文本的行數(shù)(N 1)*80+L (最后一行字符數(shù))的數(shù)組存放結果,因此空間復雜度為 0(N)。但是本算法的時間復雜度比較高,由于輸岀函數(shù)、查找函數(shù)算法時間復雜度均為0( N),但是刪除函數(shù)、插入函數(shù)算法的時間復雜度較高。但是,我暫時還問想到時間復雜度更小的算法,因此在這里我 無法對該算法進行優(yōu)化。3、經(jīng)驗和體會:得到文本編輯器這一課程設計題目時,自己還比較害怕是制作向windows系統(tǒng)中記事本一樣的程序??戳巳蝿諘笞约河辛诵┬牢浚蝿諘弦笫菍斎氲男畔⑦M行操作,這是我們經(jīng)常練習 的內容,雖然是比平時練習的更為難,更有深度,但自己畢竟知道該向什么方向去努力,自己應該如何去編寫 這
30、個程序。所以自己在整個課程設計過程中還是比較輕松的,編寫過程中遇到的困難及問題都通過查閱資料、 向老師提問得以解決。這都是基于對課題有一個明確的了解,清楚向什么方向去寫。所以本次課程設計自己最 大的體會就是不管寫什么程序,自己首先得對這個問題要分析透徹,要知道自己要干什么,然后才能讓自己干 什么。五測試結果測試文章:Real?beauty?comes?from?lear nin g,?grow in g,?a nd?lovi ng?i n?the?ways?of?life.?That?is?the?Art?of?Life.?Yo u?ca n?lear n? slowly,?a nd?some
31、times?pai nfully,?by?just?waiti ng?for?life?to?happe n? to?you.?Or?you?ca n?c hoose?to?accelerate?your?growth?a nd?i nten ti on ally?devour?life?a nd?all?it?offers.?You?are?the?artist?that ?pai nts?your?future?with?the?brush?of?today.?運行程序后:圖5程序主菜單按照注先選擇1號功能有:圖6文本輸入輸入完文字后退回到主菜單,然后選擇2號功能有:圖7當前文本輸岀返回后
32、回到主菜單,然后選擇3號功能進入文本內容統(tǒng)計菜單有:圖8文章內容統(tǒng)計菜單選擇1-6號功能有:圖9 統(tǒng)計各功能顯示結果如果選擇7回到主菜單,選擇8直接退岀程序?;氐街鞑藛魏筮x擇4號功能有:圖10文章內容處理菜單選擇1后有:圖11文本查找結果選擇2后有:圖12文章刪除結果選擇3后有:圖13文章插入結果全部結束后按5回主菜單,按6直接退岀程序?;刂鞑藛魏筮x擇 5有:圖14關于界面回主菜單選擇6后退岀本程序。六程序完整代碼#i nclude"stdio.h"#i nclude"malloc.h"#in clude"str in g.h"#i
33、nclude"iostream.h" #in clude"stdlib.h"#in clude"co ni o.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;in t row; Lin kList;Lin kList *head;void HeadWord()/system("cls");prin tf("tt*n
34、");*n");prin tf("tt*n");prin tf("tt*歡迎使用簡單的文本編輯器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='0
35、'printf(”開始創(chuàng)建文本,請輸入文章(輸入#號結束):n");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 e
36、xt->pre=temp;temp=temp->n ext;for(i=0;i<80;i+)temp->datai='O'temp->row=NUM+1;system("cls");return temp;void Pr in tWord()int i,j;Li nkList *p;p=head->n ext;system("cls");HeadWord();printf("n當前文章的內容是:");for(j=0;j<=NU M&&p!=NULL;j+)for
37、(i=0;(i<80)&&(p->datai)匸 #;i+)prin tf("%c",p->datai);p=p->n ext;void Cou ntWord()Lin kList *temp;char ch;int i,j,t;int WORD=0,word=0,space=0,n um=0,pu nct=0,sum=0; temp=head->n ext;for(j=0;j<=NUM;j+)for(i=0;(i<80)&&(temp->datai)匸 #;i+)ch=temp->dat
38、ai;if(ch>='A')&&( ch<='Z')WORD+;else if(ch>='a')&&( ch<='z') word+;else if(ch>='0' )&&(ch<='9')n um+;else if(ch='')space+;else if(ch=33|ch=34|ch=39|ch=44|ch=46|ch=58|ch=59|ch=63)pu nct+;sum=WORD+word+nu
39、m;while(1) pri ntf("n"); HeadWord();prin tf("tt*文章內容統(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、文章中標點符號的個數(shù)*n");prin tf("tt*5、文章中空格的個數(shù)*n");p
40、rin tf("tt*6、文章中所有字數(shù)*n");prin tf("tt*7、退岀返回主菜單*n");prin tf("tt*8、直接退岀本系統(tǒng)*n");prin tf("tt* n");prin tf("tt* n");printf("tt請選擇需統(tǒng)計項目:");sca nf("%d", &t); switch(t)case 1:system("cls");HeadWord();printf("ntt文章中大寫字母的
41、個數(shù):%dn",WORD);printf(“按回車鍵繼續(xù) ");getchar();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(&
42、quot;ntt 文章中數(shù)字的個數(shù) :dn", num);printf(“按回車鍵繼續(xù) ");getchar();getchar();system("cls");break;case 4:system("cls");HeadWord();printf("ntt文章中標點符號的個數(shù):%dn",punet);printf(“按回車鍵繼續(xù) ");getchar();getchar();system("cls");break;case 5:system("cls");Hea
43、dWord();printf("ntt 文章中空格的個數(shù):dn",space); printf(“按回車鍵繼續(xù) ");getchar();getchar();system("cls");break;case 6:system("cls");HeadWord();printf("ntt 文章中所有字數(shù):dn",sum); printf(“按回車鍵繼續(xù) ");getchar();getchar();system("cls");break;if(t=7)system("c
44、ls"); break;if(t=8) exit(0);void SearchWord(char *str1,Li nkList* temp)char Data20;int i,j,k=0,sum=0;int 1=1;temp=head->n ext;strcpy(Data,str1);for(i=O;i<=NUM;i+)for(j=0;j<80;j+)if(temp->dataj)=Datak) k+;else if(Datak!='0')j=j-k;k=0;if(Datak='0')sum+;j=j-k+1;printf(&
45、quot;tt 第%d 次岀現(xiàn)在第 %d 行第 %d 列n",l,i+1,j+1);l+;k=0;con ti nue;temp=temp->n ext;printf("ttt字符串總共岀現(xiàn)次數(shù)為:dnn",sum);C=sum;N=i*80+j;void DeleteWord(char *st char Data20;Lin kList *temp,*term;int i,j,k,m,y, num;strcpy(Data,str2);for(y=0;y<C;y+)n um=80;k=0,m=0;temp=head;for(i=0;i<=NUM;
46、i+)term=temp; temp=temp->n ext; for(j=0;j<80;j+) if(temp->dataj)=Datak) k+;else if(Datak!='0') j=j-k;k=0; if(Datak='O')n um=j;break;if(n um<80) break;for(;i<=NUM;i+)for(;j<80;j+)if(j+1<k)term->data80-k+ num=temp->dataj+1;elsetemp->dataj-k+1=temp->data
47、j+1;term=temp;temp=temp->n ext;j=0;Lin kList * In sertWord(Li nkList *temp)char Data20;int h,l;printf("ntt請輸入要插入的字符或字符串:");getchar();gets(Data);pri ntf("ntt當前文章內容為:");Prin tWord();prin tf("ntt請輸入要插入的行:");sca nf("%d",&h);prin tf("ntt請輸入要插入的列:")
48、;sca nf("%d",&l);int i=(h-1)*80+l;Lin kList *a;int n=strle n( Data);int m ;int in sertRow=i/80+1;int row=temp->row;int j;if(i nsertRow=row)for(m=temp->le ngth-1;m>=(i%80)&&n> 0;m-)temp->datam+n=temp->datam;for(m=(i%80),j=0;m< n+(i%80);m+,j+)temp->datam=D
49、ataj;elseint r=0;for( int p=i nsertRow; p<row;p+)if(p = in sertRow)r=0;elser=n;for(m=temp->le ngth-1-r;m>=0&&n> 0;m-) temp->datam+n=temp->datam;a=temp;temp = temp->pre; temp->le ngth = 80;for(m = temp->le ngth-n,j=O;m<temp->le ngth;m+,j+) a->dataj=temp->
50、;datam;for(m=temp->le ngth-n-1;m>=(i%80);m-) temp->datam+n=temp->datam;for(m=(i%80),j=0;m<(i%80)+n; m+,j+) temp->datam =Dataj;return temp;void Bme nu(L in kList *temp)char str120;char str220;int a;doHeadWord();prin tf("ntt* n");prin tf("tt*文章內容處理菜單*n");prin tf(&
51、quot;tt*n");prin tf("tt*1、查找文章中的字符或者字符串*n");prin tf("tt*2、刪除文章中的字符或者字符串*n");prin tf("tt*3、向文章中插入字符或者字符串prin tf("tt*4、顯示當前文章內容prin tf("tt*5、返回主菜單prin tf("tt*6、直接退岀系統(tǒng)*n");*n");*n");*n");prin tf("tt*n");printf("tt 請選擇:"
52、;);sea nf("%d", &a);switch(a)case 1:system("cls");HeadWord();:");:");printf("ttt請輸入您需要查找的字符或字符串getchar();gets(str1);SearchWord(str1,temp);printf(“按回車鍵繼續(xù) ");getchar();getchar();system("cls");break;case 2:system("cls");HeadWord();printf("ttt請輸入您需要刪除的字符或字符串getchar();gets(st ;SearchWord(str2,temp);DeleteWord(str2);printf("ttt刪除 %s后的文章為:",st;Prin tWord();printf(“按回車鍵繼續(xù) ");getchar();getchar();system("cls");break;case 3:system("cls");HeadWord();In ser
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 叉車工合同范例
- 賣場清潔服務合同范本
- 三方出口合同范例
- 加盟烤翅合同范例
- 公司高管薪酬合同范例
- 發(fā)酵酒缸合同范例
- 勞務班組勞動合同范例
- 中山尚郡購房合同范例
- 單位外墻清洗合同范例
- 參與合同范例
- 2020年交安A、B、C證(公路)考試題庫1088題(含答案)
- 節(jié)后復工檢查表
- 氣象報文日常航空天氣報告電報翻譯
- 航空航天概論-第三章飛行器動力系統(tǒng)
- 一年級下冊數(shù)學教案-3.1 估數(shù)與數(shù)數(shù) |冀教版
- 斯大林格勒保衛(wèi)戰(zhàn)精選教學課件
- 高處作業(yè)審批表
- 人員下班安全檢查記錄表
- 礦山礦石損失與貧化管理規(guī)程
- 安全生產(chǎn)晨會管理制度
- 曾奇峰精神分析網(wǎng)絡課程學習筆記第1-6講
評論
0/150
提交評論