版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱: 計(jì)算機(jī)技術(shù)基礎(chǔ) </p><p> 系 部: 電氣與信息工程學(xué)院 </p><p> 專業(yè)班級(jí): </p><p> 學(xué) 號(hào):
2、 </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 完成時(shí)間: 2009.10.14 </p><p> 報(bào)告成績(jī):
3、 </p><p><b> 迷宮通路問題</b></p><p><b> 一.設(shè)計(jì)要求</b></p><p> 通過游戲程序設(shè)計(jì),提高編程興趣與編程思路,鞏固C語言中所學(xué)的知識(shí),合理的運(yùn)用資料,實(shí)現(xiàn)理論與實(shí)際相結(jié)合。</p><p> ?。?).收集資料,分析課題,分解問題,形成總體設(shè)計(jì)
4、思路;</p><p> ?。?).深入分析各個(gè)小問題,列出大綱,編寫各部分程序模塊;</p><p> ?。?).對(duì)于設(shè)計(jì)中用到的關(guān)鍵函數(shù),要學(xué)會(huì)通過查資料,弄懂其用法,要聯(lián)系問題進(jìn)行具體介紹;</p><p> ?。?).上機(jī)調(diào)試,查錯(cuò),逐步分析不能正常運(yùn)行的原因,確保所設(shè)計(jì)的程序正確,并且能正常運(yùn)行;</p><p> ?。?).完成課
5、程設(shè)計(jì)報(bào)告,并進(jìn)行答辯。</p><p><b> 二.設(shè)計(jì)目的</b></p><p> 通過游戲程序的設(shè)計(jì)訓(xùn)練和提高學(xué)生的基本技能,掌握字符串的表示方法和字符串函數(shù)的功能、Turbo C圖形操作的基本知識(shí)、鍵盤上特殊鍵的獲取以及圖形方式下光標(biāo)的顯示,提高編程興趣與編程水平,學(xué)會(huì)如何正確的書寫程序設(shè)計(jì)說明文檔,提高運(yùn)用C語言解決實(shí)際問題的能力,鞏固C語言語法規(guī)則
6、的理解和掌握,學(xué)會(huì)通過源程序?qū)懗隽鞒虉D,提高自學(xué)以及查閱資料的能力。</p><p><b> 三. 問題描述</b></p><p> 以一個(gè)m x n的長(zhǎng)方矩陣表示迷宮,1和0分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出從入口到出口的通路,或者沒有通路的結(jié)論。</p><p> 四、
7、0; 需析求分?</p><p> 1、 以二維數(shù)組migong[M][N]表示迷宮,其中migong[0][j]和migong[i][0](0<=j,i<=N)為添加的一圈障礙。數(shù)組中以元素1表示通路,0表示障礙,迷宮的大小理論上可以不限制。</p><p> 2、
8、 迷宮數(shù)據(jù)由程序提供,用戶只需要進(jìn)行選擇迷宮就行。迷宮的入口和出口由程序提供。</p><p> 3、 若設(shè)定的迷宮存在通路,則以長(zhǎng)方形矩陣的形式將迷宮及其通路輸出到標(biāo)準(zhǔn)終端上,其中“0”表示障礙,“2”表示通過的路徑,“3”表示死胡同,沒有顯示的區(qū)域表示沒有到達(dá)過的地方。</p><p> 4、
9、60; 本程序只求出一條成功的通路。但是只要對(duì)函數(shù)進(jìn)行小量的修改,就可以求出其他全部的路徑。</p><p> 5、 程序執(zhí)行命令為:(1)、創(chuàng)建迷宮;(2)、求解迷宮;(3)、輸出迷宮。</p><p><b> 五、 概要設(shè)計(jì)</b&g
10、t;</p><p> 1、 設(shè)定棧的抽象數(shù)據(jù)類型定義:</p><p><b> ADT zhan{</b></p><p> 數(shù)據(jù)對(duì)象:D={ai|ai屬于yanshu,i=1、2…n,n>0}</p><p> 數(shù)據(jù)關(guān)系:R={<ai-1,ai>|ai-1,ai屬于D,i=2,3,…n}&
11、lt;/p><p><b> 基本操作:</b></p><p> gouzhan(*s,*migong)</p><p> 操作結(jié)果:構(gòu)造一個(gè)空棧</p><p> push(*s,*e)</p><p> 初始條件:棧已經(jīng)存在</p><p> 操作結(jié)果:將e所
12、指向的數(shù)據(jù)加入到棧s中</p><p> pop(*s,*e)</p><p> 初始條件:棧已經(jīng)存在</p><p> 操作結(jié)果:若棧不為空,用e返回棧頂元素,并刪除棧頂元素</p><p> getpop(*s,*e)</p><p> 初始條件:棧已經(jīng)存在</p><p> 操
13、作結(jié)果:若棧不為空,用e返回棧頂元素</p><p> popover(*s)</p><p> 初始條件:棧已經(jīng)存在</p><p> 操作結(jié)果:輸出棧中的所有元素,同時(shí)清空棧</p><p> stackempty(*s)</p><p> 初始條件:棧已經(jīng)存在</p><p>
14、 操作結(jié)果:判斷棧是否為空。若棧為空,返回1,否則返回0</p><p> destroy(*s)</p><p> 初始條件:棧已經(jīng)存在</p><p><b> 操作結(jié)果:銷毀棧s</b></p><p><b> }ADT zhan</b></p><p>
15、2、 設(shè)定迷宮的抽象數(shù)據(jù)類型定義</p><p> ADT yanshu{</p><p> 數(shù)據(jù)對(duì)象:D={ai,j|ai,j屬于{‘ ’、‘0’、‘2’、‘3’},0<=i<=M,0<=j<=N}</p><p> 數(shù)據(jù)關(guān)系:R={ROW,COL}</p><p> ROW={<ai-1,j,ai,j
16、>|ai-1,j,ai,j屬于D,i=1,2,…M,j=0,1,…N}</p><p> COL={<ai,j-1,ai,j>|ai,j-1,ai,j屬于D,i=0,1,…M,j=1,2,…N}</p><p><b> 基本操作:</b></p><p> gouzhaomigong(*migong,m,n)</
17、p><p> 初始條件:二維數(shù)組migong[m][n]已經(jīng)存在,其中第1至第m-1行,每行自第1到第n-1列的元素已經(jīng)值,并以值0表示障礙,值1表示通路。</p><p> 操作結(jié)果:構(gòu)造迷宮的字符數(shù)組,以空白表示通路,字符‘0’表示障礙,并在迷宮四周加上一圈障礙。</p><p> markprint(*seat)</p><p>
18、初始條件:迷宮中的所有坐標(biāo)seat都已經(jīng)被賦值</p><p> 操作結(jié)果:若迷宮中該坐標(biāo)能夠通過且已經(jīng)通過,則標(biāo)記為2,若不能夠通過(死胡同),標(biāo)記為3。</p><p> shuchu(*migong,n)</p><p> 初始條件:迷宮已經(jīng)存在</p><p> 操作結(jié)果:以字符形式輸出迷宮</p><p&
19、gt; }ADT yanshu</p><p> 3、 本程序包括三個(gè)模塊</p><p><b> a、 主程序模塊</b></p><p> void main()</p><p><b> {</b></p><p><b> 初始化;</b
20、></p><p><b> 構(gòu)造迷宮;</b></p><p><b> 迷宮求解;</b></p><p><b> 迷宮輸出;</b></p><p><b> }</b></p><p> b、 棧模塊——實(shí)
21、現(xiàn)棧的抽象數(shù)據(jù)類型</p><p> c、 迷宮模塊——實(shí)現(xiàn)迷宮的抽象數(shù)據(jù)類型</p><p><b> 六、 詳細(xì)設(shè)計(jì)</b></p><p><b> 1、 坐標(biāo)位置類型</b></p><p> #define zuobiao int</p>&l
22、t;p> zuobiao migong[M][N];</p><p><b> 2、 迷宮類型</b></p><p> typedef struct yanshu</p><p><b> {</b></p><p> int xuhao; //序號(hào)</p><
23、p> zuobiao *seat; //棧元素的坐標(biāo)</p><p> int fangxiang; //要查找的方向</p><p><b> }yanshu;</b></p><p><b> 3、 棧類型</b></p><p> typedef struct zhan<
24、/p><p><b> {</b></p><p> yanshu *base; //棧構(gòu)造之前和銷毀之后base的值均為NULL</p><p> yanshu *top;//棧頂指針</p><p> int size; //當(dāng)前分陪的存儲(chǔ)空間的長(zhǎng)度,單位:元素</p><p><b
25、> }zhan;</b></p><p><b> 七、 偽代碼 </b></p><p> 1、 主函數(shù)</p><p> void main()</p><p><b> {</b></p&
26、gt;<p><b> 變量的定義;</b></p><p> gouzhaomigong(migong,M,N); //構(gòu)造一個(gè)迷宮</p><p> shuchu(migong,M,N); //將該構(gòu)造好的迷宮輸出</p><p> tansuo(weizhi,&migong[1][1],&migong
27、[M-2][N-2]); //探索迷宮</p><p> shuchu(migong,M,N); //輸出探索出來的迷宮</p><p><b> }</b></p><p> 2、 迷宮構(gòu)造</p><p> void gouzhaomigong(zuobiao
28、migong[M][N],int M,int N)</p><p> { //該函數(shù)是用來構(gòu)造一個(gè)迷宮,通過更改還能夠構(gòu)造其他類型迷宮</p><p> 定義變量 a,b,c,i,k;</p><p> i=n/3-1;k=/2;a=k-2;</p><p> if(k*2==n) b=k;</p><p>
29、 else b=k+1;</p><p> for(a=0;a<b;a++)</p><p><b> {</b></p><p> for(c=0;c<k;c++)</p><p><b> {</b></p><p> migong[a][c]=0;
30、 migong[n-a][c]=0;</p><p> migong[a][n-c-1]=0; migong[n-a][n-c-1]=0;</p><p> migong[c][a]=0; migong[c][n-c-1]=0;</p><p> migong[n-c-1][n-a-1]=0; migong[n-c-1][a]=0;</p>&l
31、t;p><b> }</b></p><p> if(a==b-1&&c!=1)</p><p><b> {</b></p><p> migong[a][c]=0; migong[a][n-c-1]=0;</p><p> migong[n-c-1][n-a-1]
32、=0; migong[c][n-a-a]=0;</p><p><b> }</b></p><p><b> }</b></p><p> migong[1][i]=1; migong[k-2][i]=1;</p><p> migong[1][n-i-1]=1; migong[i][k+
33、1]=1;</p><p> migong[n-2][i]=1; migong[n-i][k+1]=1; migong[n-i][n-2]=1;</p><p><b> }</b></p><p> 3、 棧的操作</p><p> zhan *gouzhan(z
34、han *s,zuobiao *migong) //構(gòu)造一個(gè)棧</p><p><b> {</b></p><p> s->base=分配一定空間;</p><p> s->top=s->base;</p><p> s->top->seat=s->base->seat
35、=migong;</p><p> s->top->fangxiang=0; s->top->xuhao=0;</p><p><b> return s;</b></p><p><b> }</b></p><p> void push(zhan *s,yansh
36、u *e) //將e所指向的元素加入到棧中</p><p><b> {</b></p><p><b> if(空間不足)</b></p><p> 分配連續(xù)空間,給各值賦值;</p><p> s->top++; s->top->seat=e->seat;<
37、/p><p> s->top->fangxiang=e->fangxiang+1;</p><p> s->top->xuhao=e->xuhao;</p><p><b> }</b></p><p> yanshu *pop(zhan *s,yanshu *e)//棧不為空,刪
38、除棧頂元素,用e返回</p><p><b> {</b></p><p> if(??? retrun NULL;</p><p> e->seat=s->top-seat; e->seat--;</p><p> e->fangxiang=s->top->fangxiang
39、;</p><p> e->xuhao=s->top-xuhao; s->top--; return e;</p><p><b> }</b></p><p> yanshu *gettop(zhan *s,yanshu *e)// 用e返回棧頂元素,不刪除</p><p><b>
40、 {</b></p><p> if(棧為空) return NULL;</p><p> e->seat=s->top->seat; e->seat=s-top->seat;</p><p> e->xuhao=s->top->xuhao; return e;</p><p>
41、;<b> }</b></p><p> int stackempty(zhan *s) //判斷棧是否為空</p><p><b> {</b></p><p> if(s->top==s->base) return 1;</p><p> else return 0;<
42、;/p><p><b> }</b></p><p> void popover(zhan *s) //輸出棧中的所有元素,同時(shí)清空棧</p><p><b> {for(;;)</b></p><p><b> {</b></p><p> e=
43、pop(s,e);</p><p> if(s->top-s->base==0) return;</p><p><b> }</b></p><p><b> }</b></p><p> 八.系統(tǒng)程序結(jié)構(gòu)及流程圖 不規(guī)范!還要繼續(xù)修改。</p><p>
44、; 4、 求解迷宮中的一條路徑</p><p> void tansuo(yanshu weizhi,zuobiao *rukou,zuobiao *chukou)</p><p> { //若迷宮weizhi中存在從rukou到chukou的通道,則求出其中一條</p><p> 定義和初始化所需要的變量;&
45、lt;/p><p> gouzhan(s,curpos);//</p><p><b> do{</b></p><p> if(pass(curpos))//當(dāng)前位置可以通過,即未曾走過的模塊</p><p><b> {</b></p><p> e=zuhe(cu
46、rstep,curpos,0);//組合成一個(gè)元素</p><p> push(s,e);//加入到路徑棧中</p><p> if(e->seat==chukou) braek; //到達(dá)終端</p><p> curpos=nestpos1(curpos,0);//下一位置是當(dāng)前位置的東臨位</p><p> curstep
47、++; //探索下一步</p><p><b> }</b></p><p><b> else{</b></p><p> if(!=stackempty(s))//如果棧不空</p><p> { e=pop(s,e);</p><p> while(e-<
48、;fangxiang==4&&!=stackempty(s))</p><p> { markprint(e->seat);//留下不能通過標(biāo)記,退一步</p><p> e=pop(s,e);</p><p><b> }</b></p><p> if(e->fangxiang&l
49、t;4)</p><p> { push(s,e); //探索下一方向</p><p> curpos=nextpos1(e->seat,e->fangxiang);</p><p> //設(shè)定當(dāng)前位置是新方向上的相鄰模塊</p><p><b> }</b></p><p>
50、<b> }</b></p><p> }while(!stackempty(s));</p><p><b> return;</b></p><p><b> }</b></p><p> 5、 迷宮的輸出顯示<
51、;/p><p> void shuchu(zuobiao migong[M][N],intm,int n)</p><p> { //給出迷宮的行列數(shù)和首地址,輸出迷宮矩陣</p><p> for(i=0;i<M;i++)</p><p> {for(j=0;j<N;j++)</p><p> i
52、f(migong[i][j]==1) printf(“ “);</p><p> else printf(“%d”,migong[i][j]);</p><p> printf(“\n”);</p><p><b> }</b></p><p><b> }</b></p>&
53、lt;p> 九、 源代碼(省略)</p><p> 十、 調(diào)試結(jié)果和分析</p><p> 十一.設(shè)計(jì)心得體會(huì) 整篇文檔的字間距應(yīng)整齊一致!</p><p> 課程設(shè)計(jì)使我學(xué)到了很多書本以外的東西,同時(shí)也提高了查閱資料的能力以及解決問題的能力,培養(yǎng)培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題
54、,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。熟練掌握TC集成環(huán)境的使用方法。認(rèn)真編寫實(shí)習(xí)報(bào)告和實(shí)習(xí)總結(jié),描述實(shí)習(xí)操作和心得體會(huì),總結(jié)在這次實(shí)習(xí)中的業(yè)務(wù)收獲,作出自我評(píng)價(jià)。熟練掌握并應(yīng)用TC程序設(shè)計(jì)的各個(gè)知識(shí)點(diǎn)。掌握結(jié)構(gòu)體和指針的聯(lián)合使用,學(xué)會(huì)鏈表的構(gòu)造和常用操作方法,認(rèn)真編寫實(shí)習(xí)日志和實(shí)習(xí)體會(huì)。并通過各種途徑查找所需資料,拓寬視野,培養(yǎng)自學(xué)能力。也懂得了理論與實(shí)際相結(jié)合的重要性,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所
55、學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。</p><p> 在做這次課程設(shè)計(jì)的時(shí)候,遇到這樣那樣的麻煩,因此,我也得到了許多寶貴的經(jīng)驗(yàn):</p>&
56、lt;p> 1、在設(shè)計(jì)程序之前,務(wù)必要對(duì)你所設(shè)計(jì)的題目和內(nèi)容有一個(gè)系統(tǒng)的了解,知道所設(shè)計(jì)的題目和內(nèi)容包含那些資源。</p><p> 2、設(shè)計(jì)程序采用什么編程語言并不是非常重要,關(guān)鍵要有一個(gè)清晰的思路和一個(gè)完整的軟件流程圖,因而,要先把設(shè)計(jì)原理與思路搞清楚,再把流程圖畫出來,這樣設(shè)計(jì)起來就簡(jiǎn)單多了。</p><p> 3、在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,“反復(fù)修改
57、,不斷改進(jìn)”是程序設(shè)計(jì)的必經(jīng)之路,發(fā)現(xiàn)錯(cuò)誤也是取得成績(jī)的一種。</p><p> 4、要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便。</p><p> 5、在設(shè)計(jì)程序過程中遇到問題是很正常的,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。</p><p>
58、; 在14天編程的過程當(dāng)中彌補(bǔ)了我許多知識(shí)上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及時(shí)補(bǔ)上了欠缺。其次,通過14天綜合實(shí)訓(xùn)編程使我的知識(shí)形成了一個(gè)完整的框架結(jié)構(gòu),而不再是零散的知識(shí)個(gè)體,使我在使用時(shí)更加的方便。在14天的實(shí)習(xí)結(jié)束后,我對(duì)做完的習(xí)題檢查比再是一切的走馬觀花,而是仔細(xì)核對(duì)、認(rèn)真檢查。這也改變了我做題時(shí)心煩氣燥的習(xí)慣,現(xiàn)在做題可以平和靜氣的完成。我的自制能力更強(qiáng)了,基本完全可以控制自己,避免外界的干擾,安心地完成
溫馨提示
- 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. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 迷宮問題課程設(shè)計(jì)報(bào)告
- 迷宮問題課程設(shè)計(jì)報(bào)告
- 迷宮問題課程設(shè)計(jì)報(bào)告
- 迷宮問題課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)迷宮問題課程設(shè)計(jì)報(bào)告
- 迷宮課程設(shè)計(jì)報(bào)告
- 迷宮課程設(shè)計(jì)報(bào)告
- 迷宮問題——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告----迷宮問題
- c語言課程設(shè)計(jì)--迷宮問題
- 課程設(shè)計(jì)(迷宮)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(迷宮問題)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)迷宮問題課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論