版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、桂林航天工業(yè)高等??茖W(xué)校 課程設(shè)計(jì)報(bào)告 題目:文章編輯&紙牌游戲系別:計(jì)算機(jī)系專業(yè):計(jì)算機(jī)應(yīng)用技術(shù)姓名:郭家興學(xué)號:200902120128 指導(dǎo)老師: 楊華 2010年12月26號目錄一. 課程設(shè)計(jì)目的第2頁二. 課程設(shè)計(jì)目標(biāo)第2頁三. 需求分析第3頁四. 程序?qū)崿F(xiàn)思想第4頁五. 概要設(shè)計(jì)第4頁六. 源代碼第6頁七. 運(yùn)行后的菜單展示第12頁八. 調(diào)試分析第14頁九. 課設(shè)總結(jié)第15頁一.課程設(shè)計(jì)目的:熟練掌握數(shù)據(jù)結(jié)構(gòu)這門課程,掌握經(jīng)性表、棧、隊(duì)列、串、數(shù)組、廣義表、樹和二叉樹以及圖等基本類型的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用。 進(jìn)一步熟悉抽象數(shù)據(jù)類型的定義和實(shí)現(xiàn)、如何利用數(shù)組的動(dòng)態(tài)分酚實(shí)現(xiàn)順序結(jié)構(gòu)
2、、繼承的實(shí)現(xiàn)方式。學(xué)會(huì)分析研究計(jì)算機(jī)加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應(yīng)用涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、想念結(jié)構(gòu)及基相應(yīng)的算法并初步掌握算法的時(shí)間分析和空間分析的技術(shù)?;菊莆粘绦蛟O(shè)計(jì)的基本思路和方法。利用所學(xué)的基本知識和技能,解決簡單的程序設(shè)計(jì)問題各算法描述培養(yǎng)我們的數(shù)據(jù)抽象能力。二.設(shè)計(jì)目標(biāo): 題目1:文章編輯功能:輸入一頁文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。靜態(tài)存儲(chǔ)一頁文章,每行最多不超過80個(gè)字符,共N行;要求(1) 分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。存儲(chǔ)結(jié)構(gòu)使用線性表,分別
3、用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能;輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、"空格個(gè)數(shù)"、"文章總字?jǐn)?shù)"(3)輸出刪除某一字符串后的文章;題目2:紙牌游戲任務(wù):編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;然后從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次, 直到最后一張牌;.再依次5的
4、倍數(shù)的牌翻一次,6的,7的 直到 以52為基數(shù)的 翻過,輸出:這時(shí)正面向上的牌有哪些?題目3:猴子選大王任務(wù):一堆猴子都有編號,編號是1,2,3 .m ,這群猴子(m個(gè))按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第N個(gè),該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。 要求:輸入數(shù)據(jù):輸入m,n m,n 為整數(shù),n<m輸出形式:中文提示按照m個(gè)猴子,數(shù)n 個(gè)數(shù)的方法,輸出為大王的猴子是幾號 ,建立一個(gè)函數(shù)來實(shí)現(xiàn)此功能三.需求分析:文章編輯:1.文章錄入:包含中英文,空格和各種字符;用函數(shù)shuchu()來實(shí)現(xiàn).2.文章的統(tǒng)計(jì): 包含中英文字母.空格數(shù)和文
5、章總字?jǐn)?shù)的統(tǒng)計(jì),用函數(shù)Tongjiwz()來實(shí)現(xiàn).3.字符統(tǒng)計(jì):根據(jù)客戶的需要,統(tǒng)計(jì)在文章任一字符出現(xiàn)的次數(shù),用函數(shù)GetTime()來實(shí)現(xiàn).4.字符的刪除: 根據(jù)客戶的需要,把文章中出現(xiàn)的符合客戶要求的全部刪除,用shanchu()來實(shí)現(xiàn).紙牌游戲:用函數(shù)node()按照題目要求的規(guī)則,用幾個(gè)循環(huán)體來實(shí)現(xiàn).猴子選大王:首先用一個(gè)數(shù)組來存放猴子的編號,從1到m,然后用hzxdw()按題目要求,用兩個(gè)雙重循環(huán)來實(shí)現(xiàn)猴子大王的選舉.四.程序?qū)崿F(xiàn)思想:首先必須確定實(shí)現(xiàn)這個(gè)課程設(shè)計(jì)的主算法是使用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)還是棧又或是數(shù)組和廣義表。根據(jù)題目要求需要實(shí)現(xiàn)的功能有:1、 數(shù)據(jù)錄入:輸入各種數(shù)據(jù);此處即創(chuàng)建
6、鏈表的過程,調(diào)用一個(gè)成員函數(shù)負(fù)值。在此處還有一個(gè)方法實(shí)現(xiàn),即先輸入數(shù)據(jù),然后再調(diào)用構(gòu)造實(shí)現(xiàn)。2、數(shù)據(jù)統(tǒng)計(jì):存儲(chǔ)方式的選擇,是使用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)還是棧又或是數(shù)組和廣義表;遵守先定義后調(diào)用的原則;數(shù)組定義時(shí)注意下標(biāo)的起始值和上限;鏈表定義時(shí)注意結(jié)點(diǎn)中的項(xiàng);準(zhǔn)確運(yùn)用結(jié)點(diǎn)。3、 數(shù)據(jù)輸出:按要求的格式打印 調(diào)用do循環(huán)和for循環(huán),通過遍歷鏈表實(shí)現(xiàn)輸出,用cout函數(shù)出。4、 查找,修改,刪除:這三個(gè)功能的核心是尋找成員,先遍歷鏈表,然后尋找對應(yīng)的ID號來找到結(jié)點(diǎn),然后再對結(jié)點(diǎn)實(shí)行刪除,修改操作。五概要設(shè)計(jì):題目1:文章編輯一 .算法思想 用順序表來存放一篇文章,用指針*wz來錄入文章,文章以#作為結(jié)束
7、,然后統(tǒng)計(jì)文章各種數(shù)據(jù),直到#號為止,查找用戶要統(tǒng)計(jì)的和刪除的字符都是一樣的思想,刪除某一子串,并將后面的字符前移。題目:猴子選大王一、算法思想將表中最后一個(gè)結(jié)點(diǎn)的指針域指向頭結(jié)點(diǎn),整個(gè)鏈表形成一個(gè)環(huán),構(gòu)造循環(huán)鏈表 *L。由此,從表中任意一個(gè)結(jié)點(diǎn)開始,都可以遍歷全表。再用一個(gè)for循環(huán)來實(shí)現(xiàn)從第1開始數(shù),第數(shù)到第N個(gè),該猴子就要離開此圈。如果鏈表不空的話,用a指向開始結(jié)點(diǎn),往后數(shù)到第N個(gè)結(jié)點(diǎn),就把第N-1個(gè)結(jié)點(diǎn)與第N+1個(gè)結(jié)點(diǎn)鏈在一起,即實(shí)現(xiàn)了刪除第N個(gè)結(jié)點(diǎn)。如此反復(fù),直到L的后繼結(jié)點(diǎn)是它自己,即圈中只剩最后一只猴子,那么這只猴子就是大王。二、概要設(shè)計(jì) 1)、猴子的存放采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),利用循
8、環(huán)鏈表來實(shí)現(xiàn)建立的,其表示方法是遞歸定義的: typedef struct Mnode int data; struct Mnode *next;Mnode; 根據(jù)題目要求,要讓這M只猴子順序圍坐一圈,那就得用循環(huán)鏈表,只須將單循環(huán)鏈表的尾指針的NEXT域指向頭指針。它的判空條件是L=L->next =NULL; (非空表) (空表) 單循環(huán)鏈表2)、函數(shù)status Electe_King()讀取數(shù)據(jù)M、N后,然后就根據(jù)N的值,用for循環(huán)數(shù)猴子結(jié)點(diǎn)用a指向開始結(jié)點(diǎn),往后數(shù)到第N個(gè)結(jié)點(diǎn),就把第N-1個(gè)結(jié)點(diǎn)與第N+1個(gè)結(jié)點(diǎn)鏈在一起,即實(shí)現(xiàn)了刪除第N個(gè)結(jié)點(diǎn)。如此反復(fù),直到L的后繼結(jié)點(diǎn)是它自
9、己,即圈中只剩最后一只猴王。其源代碼如下: for(int j=1;j<=N;j+)L=L->next;if(L->data!=L->next->data) a=L->next;L->next=L->next->next; L=L->next->next; delete a;本算法只用了兩個(gè)簡單的for循環(huán),所以時(shí)間復(fù)雜度為O(m2 )。其中難點(diǎn)是如何實(shí)現(xiàn)數(shù)到第N就刪除它。題目3:紙牌游戲紙牌游戲的算法思想與猴子選大王的大體上相似。六源代碼:#define chuqi 1000#define zengjia 100#includ
10、e<iostream.h>#include<stdlib.h>typedef struct char *wz;int length;int listsize;sqlise;void Tongjiwz(char *wz,int zy,int kg,int zs)/統(tǒng)計(jì)文章各種數(shù)據(jù)的函數(shù),wz代表文章,zy代表中英文字母數(shù),kg代表空格數(shù),zs代表文章總字?jǐn)?shù) char *p=wz; zy=kg=zs=0; while(*p!='') if(*p>0x40&&*p<0x5B)|(*p>0x60&&*p<0
11、x7B) zy+; if(*p=0x20) kg+; zs+; p+; cout<<"統(tǒng)計(jì)完成!結(jié)果如下:"<<endl; cout<<"中英文字母數(shù):"<<zy<<endl<<"空格數(shù):"<<kg<<endl<<"文章總字?jǐn)?shù):"<<zs<<endl;void GetTime(char* wz,char* p)/統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù) char *a=wz,*temp=a,*
12、b=p; int num=0,zj; while(*a!='') temp=a; b=p; while(*b!='#') if(*(temp+)=*(b+) zj=1; else zj=0; if(zj)num+; a+; cout<<num;cout<<endl;void shanchu(char *wz,char *p)/刪除某一字符串 char *a=wz,*temp=a,*b=p; int zj=0; while(*a!='') temp=a; b=p; while(*b!='#') if(*(te
13、mp+)=*(b+) zj=1; else zj=0; if(zj) while(*temp!=''&&(*(a+)=*(temp+)*a='' cout<<"刪除字符串成功!"<<endl; a+; cout<<"刪除后的文章如下:"<<endl;while(*wz!='')cout<<*(wz+);cout<<endl; void shuchu(sqlise &L)/輸入文章后輸出文章char n;int i
14、=0;int m;L.wz=(char *)malloc(chuqi*sizeof(char);if(!L.wz)cout<<"存儲(chǔ)分配失??!"<<endl;else cout<<"ok!"<<endl; L.length=0; L.listsize=chuqi; cout<<"請輸入文章:"<<endl;cin>>n; while(n!='#')L.wzi=n; i+;cin>>n;m=i;cout<<&quo
15、t;你剛才輸入的文章如下:"<<endl;for(i=0;i<m;i+) cout<<L.wzi;cout<<endl;typedef struct need/紙牌游戲int data;int tag;need;void node() need park52;int i,j;for(i=1;i<=52;i+)parki-1.data=i;parki-1.tag=1;for(i=2;i<=52;i+)for(j=i;j<=52;j+)if(parkj-1.data%i=0)parkj-1.tag=parkj-1.tag*(-1
16、);cout<<"紙牌游戲結(jié)束時(shí)正面向上的牌有"cout<<endl;for(i=0;i<52;i+)if(parki.tag=1)cout<<"第"cout<<parki.data<<"張牌"<<endl;void hzxdw(int m,int n)/猴子選大王 int a100; int s=0,bj=m; /s作為n的標(biāo)志 for(int i=0;i<m;i+) ai=i+1; /為猴子編號 while(bj>1)/當(dāng)bj時(shí)表明猴子大王已
17、選到 bj=0; for(i=0;i<m;i+) if(ai) s+;/記數(shù); if(s=n) s=ai=0; /猴子離開此圈; if(ai) bj+; for(i=0;i<m;i+) if(ai!=0) cout<<"猴子大王為:"<<(i+1)<<endl; void main()zcd: cout<<"*"<<endl;cout<<"* 想進(jìn)入文章編輯系統(tǒng),請按1 *"<<endl;cout<<"* 想進(jìn)行紙牌游
18、戲, 請按2 *"<<endl;cout<<"* 想進(jìn)行猴子選大王, 請按3 *"<<endl;cout<<"*"<<endl;int m;cin>>m; if(m=1) sqlise T; char *n,*m,c100,b100; int z,k,s,l,i; shuchu(T);pp:cout<<"*"<<endl;cout<<"*你要統(tǒng)計(jì)文章各種數(shù)據(jù), 請按11 *"<<endl
19、;cout<<"*統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),請按12 *"<<endl;cout<<"*你要?jiǎng)h除某一字符串, 請按13 *"<<endl; cout<<"*提醒:想返回主菜單請按4 *"<<endl;cout<<"*"<<endl; cout<<" 歡迎進(jìn)入文章編輯系統(tǒng),你想做什么,請選擇: "<<endl;cin>>l; switch(l) case 11
20、:Tongjiwz(T.wz,z,k,s);goto pp;break; case 12:cout<<"輸入你要統(tǒng)計(jì)的字符串:" for(i=0;i<100;i+) cin>>ci; if(ci='#')break; m=c; GetTime(T.wz,m);goto pp;break; case 13:cout<<"輸入你要?jiǎng)h除的字符串:" for(i=0;i<100;i+) cin>>bi; if(bi='#')break; n=b; shanchu(T.wz
21、,n);goto pp;break;case 4:goto zcd;break; else if(m=2)node(); else if(m=3) int zs,n1; cout<<"請輸入猴子總數(shù)和規(guī)則中規(guī)定n的值:" cin>>zs>>n1; hzxdw(zs,n1);cout<<"提醒:想返回主菜單請按4"<<endl;int k;cin>>k;while(k=4) goto zcd;七運(yùn)行后的菜單展示八、調(diào)試分析(1)語法錯(cuò)誤語法錯(cuò)誤相對來說要好調(diào)試一些的,但有兩點(diǎn)需要特別指出:一是應(yīng)該用規(guī)范化的格式輸入源程序,我推薦的格式是:函數(shù)體內(nèi)、循環(huán)體內(nèi)等都應(yīng)該縮進(jì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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化創(chuàng)意產(chǎn)業(yè)投資合作協(xié)議書模板3篇
- 綠色農(nóng)業(yè)科技與生態(tài)旅游融合
- 科技發(fā)展對現(xiàn)代安保工作提出的新挑戰(zhàn)及應(yīng)對策略
- 2025年度個(gè)人房屋抵押貸款利率調(diào)整合同
- 二零二五年度豪華度假村客房預(yù)訂與銷售合作協(xié)議3篇
- 2025年度個(gè)人汽車轉(zhuǎn)讓及二手車鑒定評估及維修服務(wù)合同3篇
- 遠(yuǎn)程教育環(huán)境下的學(xué)生安全保障措施
- 二零二五年度車輛捐贈(zèng)服務(wù)贈(zèng)與合同(公益車輛捐贈(zèng))3篇
- 2025版智慧小區(qū)物業(yè)服務(wù)與社區(qū)養(yǎng)老合作合同3篇
- 2025年度鋼材進(jìn)出口貿(mào)易代理合同2篇
- 文化沖突與民族認(rèn)同建構(gòu)-洞察分析
- 《疥瘡的防治及治療》課件
- 學(xué)校對口幫扶計(jì)劃
- 腫瘤全程管理
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》專題培訓(xùn)
- 導(dǎo)尿及留置導(dǎo)尿技術(shù)
- 寒假作業(yè)一年級上冊《數(shù)學(xué)每日一練》30次打卡
- 2024-2025學(xué)年九年級化學(xué)上冊 第二單元 單元測試卷(人教版)
- 2024年公共衛(wèi)生基本知識考試題庫(附含答案)
- GB/T 4706.10-2024家用和類似用途電器的安全第10部分:按摩器具的特殊要求
- 2024年江蘇省蘇州市中考英語試題卷(含標(biāo)準(zhǔn)答案及解析)
評論
0/150
提交評論