版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)課程設(shè)計(jì)報(bào)告文章編輯程序的設(shè)計(jì)學(xué)院: 信息科學(xué)技術(shù)學(xué)院班級(jí): 信息工程09級(jí)1班學(xué)號(hào): 200941843107 姓名: 董升 指導(dǎo)教師: 何儒云 完成日期: 2010年12月目錄TOC\o"1-5"\h\z\o"CurrentDocument"需求分析 文章編輯 -3-\o"CurrentDocument"程序設(shè)計(jì) -3-結(jié)構(gòu)體的設(shè)計(jì): -3-函數(shù)的設(shè)計(jì): -3-主函數(shù)的設(shè)計(jì): -8-\o"CurrentDocument"測(cè)試分析 -9-用戶說(shuō)明 -10 -\o"CurrentDocument"經(jīng)驗(yàn)和體會(huì) -10-\o"CurrentDocument"6?附錄一一程序完整原代碼 -11-需求分析 文章編輯題目:22題,文章編輯。功能:從鍵盤(pán)輸入一頁(yè)文字,靜態(tài)存儲(chǔ)在一個(gè)文件中要求:(1)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2) 統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3) 刪除某一子串,并將后面的字符前移。存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能;o"文章總字?jǐn)?shù)”o"文章總字?jǐn)?shù)”(2) 分4行輸出”全部字母數(shù)"、”數(shù)字個(gè)數(shù)”、"空格個(gè)數(shù)”、(3) 輸出刪除某一字符串后的文章;程序設(shè)計(jì)結(jié)構(gòu)體的設(shè)計(jì):typedefstructessay{char*line;〃 動(dòng)態(tài)分配的字符數(shù)組structessay*next;//結(jié)構(gòu)體指針}ESS;//創(chuàng)建結(jié)構(gòu)體,行與行之間用鏈表的形式函數(shù)的設(shè)計(jì):#include<stdio.h>#include<string.h>#include<stdlib.h>voidcreate(ESS*&h)〃創(chuàng)造鏈表{charm[1000];ESS*p;p=(ESS*)malloc(sizeof(ESS));h=p;inti,k;FILE*fp;fp=fopen("d:\\text.txt","w");〃所輸入的文本將保存在 d盤(pán)的rr文本文檔中printf("輸入文章,用Ctrl+B結(jié)束輸入:\n");〃按Ctrl+B(AB)將結(jié)束輸入while(1){gets(m); //輸入字符串if(strlen(m)>1000){printf(”超過(guò)1000字符\n");break;}if(m[0]==2)break; II如果發(fā)現(xiàn)輸入ab,則退出輸入p=p->next=(ESS*)malloc(sizeof(ESS));p->line=(char*)malloc(sizeof(char)*strlen(m+1)); II為結(jié)點(diǎn)分配空間strcpy(p->line,m);〃將字符串m,復(fù)制到p所指向的字符串中for(i=0;i<(k=strlen(m))&&(p->line[i]!=2);i++)fwrite(&p->line[i],sizeof(char),1,fp);〃 寫(xiě)入文本文檔中fputc('\n',fp);if(m[strlen(m)-1]==2) II除去最后一個(gè)控制符 ab{p->line[strlen(m)-1]='\0';break;}}p->next=NULL; I*最后的一個(gè)指針為空 *Ih=h->next;II將下一個(gè)節(jié)點(diǎn)賦值到頭結(jié)點(diǎn)中}intCount(ESS*h)II統(tǒng)計(jì)數(shù)字{ESS*p=h;intco=0;inti;intLenght;do{Lenght=strlen(p->line);I*計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)*I
for(i=0;i<Lenght;i++)if(p->line[i]>=48&&p->line[i]<=57)〃 用ASCII碼來(lái)進(jìn)行比較,數(shù)字co++;}while((p=p->next)!=NULL); //遍歷鏈表不為空returnco;}intLetter(ESS*h)〃統(tǒng)計(jì)字母{ESS*p=h;intco=0;intLenght;do{Lenght=strlen(p->line);/*計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)*/for(inti=0;i<Lenght;i++)if((p->line[i]>='a'&&p->line[i]<='z')||(p->line[i]>='A'&&p->line[i]<='Z'))/*計(jì)算字母數(shù)*/co++;}while((p=p->next)!=NULL); //遍歷鏈表不為空returnco; /*返回文章的字母總數(shù)*/}intchinese(ESS*h)〃統(tǒng)計(jì)符號(hào){ESS*p=h;intco=0;intLenght;do{Lenght=strlen(p->line);/*計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)*/for(inti=0;i<Lenght;i++)if((p->line[i]>=1&&p->line[i]<=254))字符數(shù)字以及符號(hào)*/co++;}while((p=p->next)!=NULL); //遍歷鏈表不為空returnco; /*返回*/48與57之間是48與57之間是/*計(jì)算intSpace(ESS*h)〃統(tǒng)計(jì)空格{ESS*p=h;intco=0;intLenght;do{Lenght=strlen(p->line);//計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)for(inti=0;i<Lenght;i++)if(p->line[i]==32)co++;//計(jì)算空格數(shù),空格ASCII碼為32}while((p=p->next)!=NULL); 〃遍歷鏈表returnco;}intCountAII(ESS*h)〃統(tǒng)計(jì)文章字?jǐn)?shù)ESS*p=h;intco=0;//保存鏈表的首地址do{co+=strlen(p->line);}while((p=p->next)!=NULL);returnco;//計(jì)算總字符數(shù)}//遍歷鏈表intFind(ESS*h,char*s)〃統(tǒng)計(jì)s出現(xiàn)次數(shù){ESS*p=h;intco=0;/*保存當(dāng)前行的總字符數(shù)*//*保存當(dāng)前行的總字符數(shù)*//*待統(tǒng)計(jì)字符串的長(zhǎng)度*//*當(dāng)前行的字符數(shù)*//*字符匹配*/intlen2=strlen(s);inti,j,q;do{len1=strlen(p->line);for(i=0;i<len1;i++){if(p->line[i]==s[0]){q=0;for(j=0;j<len2;j++)
if(p->line[j+i]==s[j])q++;if(q==len2){co++;i=i+q-1;}}}}while((p=p->next)!=NULL);/*遍歷鏈表/*遍歷鏈表*/}voiddelstring(char*s,char*str)/**s為輸入的字符串,*str為將要?jiǎng)h除的字符*/{char*p=strstr(s,str);/*從字符串s中尋找str第一次出現(xiàn)的位置*/charm[80];intlen=strlen(s);inti=len-strlen(p);〃比較兩串字符串之間的字符個(gè)數(shù)intj=i+strlen(str);intco=0;for(intk=O;k<i;k++)m[co++]=s[k];for(intn=j;n<len;n++)m[co++]=s[n];m[co]='\0:strcpy(s,m); /*返回新的字符串*/}voidDelString(ESS*h,char*str){ESS*p=h;do{if(strstr(p->line,str)!=NULL)delstring(p->line,str);〃調(diào)用刪除每個(gè)字符串,只刪一次。}while((p=p->next)!=NULL);}voidOut(ESS*&h)//{ESS*p=h;do{printf("%s\n",p->line);〃顯示字符串}/*遍歷鏈表/*遍歷鏈表*/voiddisplay。{printf("\n");printf("\n");printf("********************^統(tǒng)計(jì)數(shù)^字******************\n")?printf("********************^統(tǒng)計(jì)字母******************\n")?printf("********************^統(tǒng)計(jì)空^格******************\n")?printf("********************統(tǒng)計(jì)文章總字?jǐn)?shù)************\n");printf("********************統(tǒng)計(jì)重復(fù)字符串 ************\n");printf("********************統(tǒng)計(jì)重復(fù)出現(xiàn)字符串********n”);printf("********************除功育總******************\n”)?printf("***********************************************\n");printf("***********************************************\n");printf("\n");}//構(gòu)造一個(gè)良好的界面良好的界面主函數(shù)的設(shè)計(jì):intmain(){ESS*h;create(h);display();Out(h);printf("\n");printf("數(shù)字個(gè)數(shù):%d\n",Count(h));printf("全部字母數(shù): %d\n",Letter(h));printf("中文字?jǐn)?shù):%d\n",(CountAII(h)-chinese(h))/2);printf("空格個(gè)數(shù):%d\n",Space(h));printf("文章總字?jǐn)?shù)(含空格):%d\n",CountAII(h)-(CountAII(h)-chinese(h))/2);printf("文章總字?jǐn)?shù)(不含空格):%d\n",CountAII(h)-Space(h)-(CountAII(h)-chinese(h))/2);chars1[20],s2[20];printf("\n");printf("請(qǐng)輸入要統(tǒng)計(jì)的字符串:");scanf("%s",s1);printf("%s出現(xiàn)的次數(shù)為:%d\n”,s1,Find(h,s1));printf("\n");printf("請(qǐng)輸入要?jiǎng)h除的某一字符串: ");scanf("%s",s2);DelString(h,s2);printf("刪除%s后的文章為:\n”,s2);Out(h); 〃調(diào)用刪除函數(shù)后的顯示Return0;3?測(cè)試分析輸入:匸弋*E* tVisusilStudioXKyF^OjBCtk\22jt^tfilvXDB-bvigXSZe?xewoshizhongguorenuoaiwodezuguo我是中國(guó)人我爰我的祖國(guó)123123123qwequeqwe輸出及其他操作:
第test,tyt-記事本 匚叵|阪文祥0)錨輯⑥格式?萱看迪幫助堪)uashizhongquorenwoaiuodezuquo我是中國(guó)人我愛(ài)我的祖國(guó)123123123queqweqwe4?用戶說(shuō)明根據(jù)界面提示即可完成所有操作。5?經(jīng)驗(yàn)和體會(huì)在這次課程設(shè)計(jì)中,我有將書(shū)本重新過(guò)了一邊,不但鞏固了以前就會(huì)的知識(shí),還彌補(bǔ)了從前的空缺,學(xué)到了許多從前沒(méi)有注意的知識(shí)。在實(shí)踐的過(guò)程中,遇到了許多問(wèn)題,我查閱了許多資料,請(qǐng)教了一些朋友對(duì)于編程中應(yīng)注意的問(wèn)題又有了新的認(rèn)識(shí),我知道了許多書(shū)上沒(méi)有的經(jīng)驗(yàn)和教訓(xùn)。通過(guò)進(jìn)行這次課程設(shè)計(jì),我對(duì)數(shù)據(jù)結(jié)構(gòu)又有了更加深刻的認(rèn)識(shí),使我以后學(xué)習(xí)更加輕松,對(duì)于編程更又信心??!6?附錄一一程序完整原代碼#include<stdio.h>#include<string.h>#include<stdlib.h>typedefstructessay{char*line;〃動(dòng)態(tài)分配的字符數(shù)組structessay*next;//結(jié)構(gòu)體指針}ESS;//創(chuàng)建結(jié)構(gòu)體,行與行之間用鏈表的形式voidcreate(ESS*&h)//創(chuàng)造鏈表{charm[1000];ESS*p;p=(ESS*)malloc(sizeof(ESS));h=p;inti,k;FILE*fp;fp=fopen("d:\\text.txt","w");〃所輸入的文本將保存在 d盤(pán)的rr文本文檔中printf("輸入文章,用Ctrl+B結(jié)束輸入:\n");//按Ctrl+B(AB)將結(jié)束輸入while(1){gets(m); //輸入字符串if(strlen(m)>1000){printf(”超過(guò)1000字符\n");break;}if(m[0]==2)break; //如果發(fā)現(xiàn)輸入ab,則退出輸入p=p->next=(ESS*)malloc(sizeof(ESS));p->line=(char*)malloc(sizeof(char)*strlen(m+1)); //為結(jié)點(diǎn)分配空間strcpy(p->line,m);〃將字符串m,復(fù)制到p所指向的字符串中for(i=0;i<(k=strlen(m))&&(p->line[i]!=2);i++)fwrite(&p->line[i],sizeof(char),1,fp);〃 寫(xiě)入文本文檔中fputc('\n',fp);if(m[strlen(m)-1]==2) //除去最后一個(gè)控制符 AB{p->line[strlen(m)-1]='\0:break;}}p->next=NULL; /*最后的一個(gè)指針為空 */h=h->next;//將下一個(gè)節(jié)點(diǎn)賦值到頭結(jié)點(diǎn)中}intCount(ESS*h)//統(tǒng)計(jì)數(shù)字{ESS*p=h;intco=0;inti;intLenght;do{Lenght=strlen(p->line);/*計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)*/for(i=0;i<Lenght;i++)if(p->line[i]>=48&&p->line[i]<=57)〃 用ASCII碼來(lái)進(jìn)行比較,48與57之間是數(shù)字co++;}while((p=p->next)!=NULL); //遍歷鏈表不為空returnco;}intLetter(ESS*h)//統(tǒng)計(jì)字母{ESS*p=h;intco=0;intLenght;do{Lenght=strlen(p->line);/*計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)*/for(inti=0;i<Lenght;i++)if((p->line[i]>='a'&&p->line[i]<='z')||(p->line[i]>='A'&&p->line[i]<='Z'))/*計(jì)算字母數(shù)*/co++;}while((p=p->next)!=NULL); //遍歷鏈表不為空returnco;/*返回文章的字母總數(shù)*/}intchinese(ESS*h)〃統(tǒng)計(jì)符號(hào){ESS*p=h;intco=0;intLenght;do{/*計(jì)算Lenght=strlen(p->line);/*計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)/*計(jì)算if((p->line[i]>=1&&p->line[i]<=254))字符數(shù)字以及符號(hào)*/co++;}while((p=p->next)!=NULL); //遍歷鏈表不為空returnco; /*返回*/}intSpace(ESS*h)〃統(tǒng)計(jì)空格{ESS*p=h;intco=0;intLenght;do{Lenght=strlen(p->line);//計(jì)算當(dāng)前l(fā)ine里的數(shù)據(jù)元素的個(gè)數(shù)for(inti=0;i<Lenght;i++)if(p->line[i]==32)co++;//計(jì)算空格數(shù),空格 ASCII碼為32}while((p=p->next)!=NULL); //遍歷鏈表returnco;}intCountAII(ESS*h)〃統(tǒng)計(jì)文章字?jǐn)?shù){//保存鏈表的首地址////保存鏈表的首地址//計(jì)算總字符數(shù)II遍歷鏈表intco=0;do{co+=strlen(p->line);}while((p=p->next)!=NULL);
returnco;intFind(ESS*h,char*s)〃統(tǒng)計(jì)s出現(xiàn)次數(shù){ESS*p=h;intco=0;intlen1=0;intlen2=strlen(s);{ESS*p=h;intco=0;intlen1=0;intlen2=strlen(s);inti,j,q;do{len1=strlen(p->line);for(i=0;i<len1;i++){if(p->line[i]==s[0]){q=0;for(j=0;j<len2;j++)}}}while((p=p->next)!=NULL);returnco;/*保存當(dāng)前行的總字符數(shù)*//*待統(tǒng)計(jì)字符串的長(zhǎng)度*/if(p->line[j+i]==s[j])q++;if(q==len2) {co++;i=i+q_1;}/*當(dāng)前行的字符數(shù)*//*字符匹配*//*遍歷鏈表*/voiddelstring(char*s,char*str)/**s為輸入的字符串,*str為將要?jiǎng)h除的字符*/{char*p=strstr(s,str); /*從字符串s中尋找str第一次出現(xiàn)的位置*/charm[80];intlen=strlen(s);inti=len-strlen(p);〃比較兩串字符串之間的字符個(gè)數(shù)intj=i+strlen(str);intco=0;for(intk=O;k<i;k++)m[co++]=s[k];for(intn=j;n<len;n++)m[co++]=s[n];m[co]='\0';strcpy(s,m); /*返回新的字符串*/}
voidDelString(ESS*h,char*str){ESS*p=h;do{if(strstr(p->line,str)!=NULL)delstring(p->line,str);〃調(diào)用刪除每個(gè)字符串,只刪一次。}while((p=p->next)!=NULL);}voidOut(ESS*&h)//{ESS*p=h;do{printf("%s\n",p->line);〃顯示字符串}while((p=p->next)!=NULL); /*遍歷鏈表*/}voiddisplay(){printf("\n");printf("\n");printf("*********************************************printf("********************printf("********************^統(tǒng)計(jì)數(shù)^字******************、門(mén)");printf("********************printf("********************^統(tǒng)計(jì)字母******************、n")?printf("********************^統(tǒng)計(jì)空^格****************printf("********************統(tǒng)計(jì)文章總字?jǐn)?shù)************\n");printf("********************統(tǒng)計(jì)重復(fù)字符串************\n");printf("*****************
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育運(yùn)動(dòng)彩鋼板安裝合同模板
- 酒店廚師戒煙承諾書(shū)范文
- 醫(yī)療機(jī)構(gòu)辦公用品投標(biāo)資料
- 酒店式農(nóng)業(yè)園區(qū)租賃合同范本
- 建筑抗震植筋施工合同
- 建立清晰的人事流程計(jì)劃
- 積木游戲在幼兒園學(xué)習(xí)中的應(yīng)用計(jì)劃
- 專題21我們共同的世界-學(xué)易金卷:5年(2019-2023)中考1年模擬道德與法治分項(xiàng)匯編(安徽專用)(解析版)
- 業(yè)務(wù)員季度工作總結(jié)范文
- 公司客服工作總結(jié)5篇
- T∕ACSC 01-2022 輔助生殖醫(yī)學(xué)中心建設(shè)標(biāo)準(zhǔn)(高清最新版)
- 華大基因遺傳咨詢認(rèn)證習(xí)習(xí)題
- 部編版小學(xué)語(yǔ)文六年級(jí)上冊(cè)期末復(fù)習(xí)課件[按單元復(fù)習(xí)]
- YY T 0466.1-2016醫(yī)療器械用于醫(yī)療器械標(biāo)簽、標(biāo)記和提供信息的符號(hào)第1部分通用要求
- 市政工程竣工驗(yàn)收資料
- 糕點(diǎn)切片機(jī)答辯
- 《化學(xué)實(shí)驗(yàn)室安全與環(huán)保手冊(cè)》
- 對(duì)賬函格式范本
- 婚禮流程準(zhǔn)備安排表需要彩排的
- 晉江市土地利用總體規(guī)劃
- 泵站質(zhì)量檢查表
評(píng)論
0/150
提交評(píng)論