版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 數(shù)據(jù)結(jié)構課程設計</b></p><p><b> 設計說明書</b></p><p><b> 計算機科學與技術系</b></p><p> 2011年 9 月 9 日</p><p> 數(shù)據(jù)結(jié)構課程設計評閱書</p>&l
2、t;p> 注:指導教師成績60%,答辯成績40%,總成績合成后按五級制記入。</p><p><b> 課程設計任務書</b></p><p> 2011 —2012 學年第 一 學期</p><p> 專業(yè): 學號: 姓名: </p><p> 課程設計名稱:
3、 數(shù)據(jù)結(jié)構課程設計 </p><p> 設計題目: 迷宮問題求解 </p><p> 完成期限:自 2011 年 8 月 29 日至 2011 年 9 月 9 日共 2 周</p
4、><p> 設計依據(jù)、要求及主要內(nèi)容(可另加附頁):</p><p> 輸入一個任意大小的迷宮數(shù)據(jù),設置入口、出口及障礙,借助棧結(jié)構求解走出迷宮的路徑并輸出。1.遵循結(jié)構化程序設計思想,采用C/C++實現(xiàn)。 2.界面友好,操作簡便,容錯性。 </p>&l
5、t;p> 基本要求如下: </p><p> 1)問題分析和任務定義:根據(jù)設計題目的要求,充分地分析和理解問題,明確問題要求做什么?(而不是怎么做?)限制條件是什么?確定問題的輸入數(shù)據(jù)集合。</p><p> 2)邏輯設計:對問題描述中涉及的操作對象定義相應的數(shù)據(jù)類型,
6、并按照以數(shù)據(jù)結(jié)構為中心的原則劃分模塊,定義主程序模塊和各抽象數(shù)據(jù)類型。邏輯設計的結(jié)果應寫出每個抽象數(shù)據(jù)類型的定義(包括數(shù)據(jù)結(jié)構的描述和每個基本操作的功能說明),各個主要模塊的算法,并畫出模塊之間的調(diào)用關系圖;</p><p> 3)詳細設計:定義相應的存儲結(jié)構。在這個過程中,要綜合考慮系統(tǒng)功能,使得系統(tǒng)結(jié)構清晰、合理、簡單和易于調(diào)試,抽象數(shù)據(jù)類型的實現(xiàn)盡可能做到數(shù)據(jù)封裝,基本操作的規(guī)格說明盡可能明確具體。詳細設
7、計的結(jié)果是對數(shù)據(jù)結(jié)構和基本操作做出進一步的求精,寫出數(shù)據(jù)存儲結(jié)構的類型定義;</p><p> 4)程序編碼:把詳細設計的結(jié)果進一步求精為程序設計語言程序。同時加入一些注解和斷言,使程序中邏輯概念清楚;</p><p> 5)程序調(diào)試與測試:能夠熟練掌握調(diào)試工具的各種功能,設計測試數(shù)據(jù)確保程序正確。調(diào)試正確后,認真整理源程序及其注釋,形成格式和風格良好的源程序清單和結(jié)果;</p&
8、gt;<p> 6)結(jié)果分析:程序運行結(jié)果包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果;</p><p> 7)編寫課程設計報告;</p><p> 以上要求中前三個階段的任務完成后,先將設計說明書的草稿交指導老師面審,審查合格后方可進入后續(xù)階段的工作。設計工作結(jié)束后,經(jīng)指導老師驗收合格后將設計說明書打印裝訂,并進行答辯。</p><p&g
9、t; 指導教師(簽字): 教研室主任(簽字): </p><p> 批準日期: 2011年 8 月 29 日</p><p><b> 摘 要</b></p><p> 設計了一個尋找迷宮出口路徑的程序,該程序具有設置任意大小的迷宮數(shù)據(jù),通過設置的迷宮入口出口及障礙,探索
10、出一條簡單路徑并輸出的功能。該程序采用VC作為軟件開發(fā)環(huán)境,借助棧先入后出的特點,先將入口作為檢索的起點,順著某個方向向前探索,若能走通,則繼續(xù)往前走;否則沿原路返回,換個方向在繼續(xù)探索,直到所有可能的通路都探索到為止,最后把探索到的路徑輸出。</p><p> 關鍵詞:迷宮路徑;探索;輸出</p><p><b> 目 錄</b></p>
11、<p><b> 1.課題描述1</b></p><p> 2.問題分析和任務定義2</p><p><b> 3.邏輯設計3</b></p><p><b> 4.詳細設計4</b></p><p> 4.1迷宮數(shù)據(jù)的存儲4</p>
12、<p> 4.2當前位置可通性的判斷及探索方向的改變5</p><p> 4.3無通路時沿原路返回6</p><p> 4.4路徑信息入棧和出棧7</p><p> 4.5 當前探索位置的切換8</p><p> 4.6最終探索路徑的輸出及標記9</p><p> 4.7打印迷宮信息
13、10</p><p><b> 5.程序代碼11</b></p><p> 5.1文件包含和結(jié)構體的定義11</p><p> 5.2棧的初始化及入棧出棧函數(shù)11</p><p> 5.3申請迷宮大小及障礙的設置12</p><p> 5.4通道可通性測試13</p>
14、;<p> 5.5為走過的通道留下足跡13</p><p> 5.6探索位置的切換13</p><p> 5.7入口到出口的路徑探索14</p><p> 5.8打印迷宮信息15</p><p><b> 5.9主函數(shù)16</b></p><p><b>
15、; 6.程序測試18</b></p><p><b> 總結(jié)21</b></p><p><b> 參考文獻22</b></p><p><b> 1.課題描述</b></p><p> 本次課題是實現(xiàn)迷宮問題的求解,利用C語言設計一個能實現(xiàn)輸入一個
16、任意大小的迷宮數(shù)據(jù),利用二維數(shù)組來儲存設置的入口、出口及障礙,借助棧先入后出的結(jié)構特性保存迷宮探索過程中留下的路徑信息,以便在遇到障礙時沿原路返回,在探索結(jié)束后輸出棧中保存的最終路徑。</p><p> 2.問題分析和任務定義</p><p> 迷宮求解的實現(xiàn)依賴于路徑探索的算法,路徑探索的算法采用的是“窮舉求解”的方法。因此有以下問題:</p><p> (
17、1)數(shù)據(jù)存儲結(jié)構的選擇。</p><p> (2)當前位置的可通性判斷及探索方向的改變。</p><p> (3)道路不通時沿原路返回的算法。</p><p> (4)路徑信息的入棧和出棧。</p><p> (5)最終路徑的輸出。</p><p><b> 3.邏輯設計</b><
18、/p><p> 程序要實現(xiàn)路徑探索及輸出即要實現(xiàn)當前位置可通性的判斷;路徑可通時朝默認方向繼續(xù)向前探索,路徑不可通時沿原路返回改變探索方向,輸出最終探索結(jié)果。其關系如圖3.1 所示。</p><p> 圖3.1 迷宮路徑探索功能結(jié)構</p><p><b> 4.詳細設計</b></p><p> 4.1迷宮數(shù)據(jù)的存
19、儲</p><p> Maze是指向指針的指針,用行h和列l(wèi)來存儲迷宮的大小,使用malloc申請一個二維數(shù)組,根據(jù)用戶輸入的障礙坐標在maze數(shù)組的相應位置存入1作為障礙標記,直到用戶輸入0 0結(jié)束障礙的設置。該模塊的執(zhí)行過程如圖4.1 所示。</p><p> 圖4.1 迷宮數(shù)據(jù)的存儲</p><p> 4.2當前位置可通性的判斷及探索方向的改變</
20、p><p> 當前位置curpos的坐標在maze數(shù)組中對應位置儲存的數(shù)據(jù)若非1和8即為可通在此留下足跡,由變量di來記錄下一個探索方向,把下一個位置作為當前位置并繼續(xù)探索,若當前位置不可通,則后退一步按順時針方向改變探索方向。操作流程如圖4.2所示。</p><p> 圖4.2 可通性的判斷及探索方向的改變</p><p> 4.3無通路時沿原路返回</p
21、><p> 借助棧先入后出的特性,把探索過的路徑信息e壓入棧s中。若當前位置curpos的下一個探索方向的變量值di為4時,表示當前位置周圍四個方向均無通道,沿原路退回一步將路徑信息e逐個出棧,一退直到di<4,改變方向繼續(xù)探索。該模塊的執(zhí)行過程如圖4.3所示。</p><p> 圖4.3 無通路時沿原路返回</p><p> 4.4路徑信息入棧和出棧<
22、;/p><p> 當前位置curpos可通時maze數(shù)組中的對應位置留下足跡,標記下一個探索方向,若棧s滿則追加??臻g,路徑信息入e棧*s.top=e,s.top++。若當前位置不可通且棧不為空則后退一步,路徑信息e出棧e=*--s.top并改變探索方向。程序的操作流程如圖4.4所示。</p><p> 圖4.4路徑信息入棧和出棧</p><p> 4.5 當前探
23、索位置的切換</p><p> 利用二維數(shù)組來確定當前探索位置curpos。方向變量e.di的數(shù)值為1時,則橫坐標加1;e.di的數(shù)值為2時,則縱坐標加1;e.di的數(shù)值為3時,則橫坐標減1;e.di的數(shù)值為4時,則縱坐標減1。程序的操作流程如圖4.5所示。</p><p> 圖4.5當前探索位置的切換</p><p> 4.6最終探索路徑的輸出及標記<
24、/p><p> 迷宮探索結(jié)束時若找不到出口則輸出尋找不到路徑。若成功找到出口則根據(jù)棧s儲存的路徑坐標信息e在迷宮數(shù)據(jù)maze數(shù)組的相應位置標記2。程序的操作流程如圖4.6所示。</p><p> 圖4.6最終探索路徑的輸出及標記</p><p><b> 4.7打印迷宮信息</b></p><p> 根據(jù)棧s儲存的路
25、徑坐標信息在迷宮數(shù)據(jù)maze[x][x]的不同輸出不同的符號,分別表示迷宮的障礙和走出迷宮的路徑。程序的操作流程如圖4.7所示。</p><p> 圖4.7打印迷宮信息</p><p><b> 5.程序代碼</b></p><p> 5.1文件包含和結(jié)構體的定義</p><p> #include<std
26、io.h></p><p> #include<malloc.h></p><p> #include<stdlib.h></p><p> #define STACK_INIT_SIZE 10</p><p> int h,l;//保存迷宮大小的行數(shù)和列數(shù)</p><p> t
27、ypedef struct{</p><p><b> int x;</b></p><p><b> int y;</b></p><p> }point;//定義坐標變量結(jié)構體</p><p> typedef struct{</p><p> point po
28、s;//保存當前路徑的坐標</p><p> int di;//保存下一個探索方向的標記值</p><p> }selemtype;//定義路徑信息結(jié)構體</p><p> typedef struct{</p><p> selemtype *base;//棧頂</p><p> selemtype *to
29、p;//棧底</p><p> int stacksize;//棧的容量</p><p> }sqstack;//棧的定義</p><p> point start,end;//迷宮出入口的聲明</p><p> 5.2棧的初始化及入棧出棧函數(shù)</p><p><b> //棧的初始化</b&
30、gt;</p><p> int initstack(sqstack &s){</p><p><b> //申請棧的空間</b></p><p> s.base=(selemtype *)malloc(STACK_INIT_SIZE*sizeof(selemtype));</p><p> if(!s.
31、base)//判斷棧是否申請成功</p><p><b> exit(-2);</b></p><p> s.top=s.base;//使棧為空</p><p> s.stacksize=STACK_INIT_SIZE;//給棧的容量賦值</p><p><b> return 1;</b>
32、</p><p><b> }</b></p><p><b> //入棧函數(shù)</b></p><p> int push(sqstack &s,selemtype e){</p><p> if(s.top-s.base>=s.stacksize)//判斷棧是否已滿</
33、p><p><b> {</b></p><p> s.base=(selemtype *)realloc(s.base,(s.stacksize+10)*sizeof(selemtype));//棧滿時追加申請空間</p><p> if(!s.base) exit(0);</p><p> s.top=s.bas
34、e+s.stacksize;</p><p> s.stacksize+=10;}</p><p> *s.top=e;//元素入棧</p><p><b> s.top++;</b></p><p><b> return 1;</b></p><p><b&
35、gt; }</b></p><p><b> //出棧函數(shù)</b></p><p> int pop(sqstack &s,selemtype &e){</p><p> //棧不為空時元素出棧</p><p> if(s.top==s.base)exit(0);</p>
36、<p> e=*--s.top;</p><p><b> return 1;</b></p><p><b> }</b></p><p> 5.3申請迷宮大小及障礙的設置</p><p><b> //迷宮大小初始化</b></p>&
37、lt;p> int **initmaze()</p><p><b> {</b></p><p> int **maze;//指向二維數(shù)組的指針</p><p> printf("設置迷宮的行和列(如3 3)");</p><p> scanf("%d%d",&
38、amp;h,&l);</p><p> //用malloc函數(shù)動態(tài)申請一個二維數(shù)組</p><p> maze=(int**)malloc(sizeof(int)*h);</p><p> for(int i=0;i<h;i++)</p><p> maze[i]=(int*)malloc(sizeof(int)*l);
39、</p><p> return maze;</p><p><b> }</b></p><p> //迷宮障礙設置函數(shù)</p><p> void setza(int **maze)</p><p><b> {</b></p><p>
40、<b> char n,m;</b></p><p><b> int x,y;</b></p><p> printf("設置入口的坐標(如1 1)");</p><p> scanf("%d%d",&y,&x);//設置入口坐標</p>&l
41、t;p> while(!((y==h||y==1||x==l||x==1)&&(x<=l&&y<=h)&&(x!=0&&y!=0))){</p><p> printf("請把入口設置在迷宮的邊緣\n");</p><p> scanf("%d%d",&y
42、,&x);//設置入口坐標</p><p><b> }</b></p><p> start.x=x-1;start.y=y-1;</p><p> printf("設置出口的坐標(如2 3)");</p><p> scanf("%d%d",&y,&am
43、p;x);//設置出口坐標</p><p> while(!((y==h||y==1||x==l||x==1)&&(x<=l&&y<=h)&&(x!=0&&y!=0)&&!(y==start.y+1&&x==start.x+1))){</p><p> printf("
44、請把出口設置在迷宮的邊緣,不要與入口重合\n");</p><p> scanf("%d%d",&y,&x);//設置出口坐標</p><p><b> }</b></p><p> end.x=x-1;end.y=y-1;</p><p> printf("
45、;設置障礙的坐標\n");</p><p> scanf("%d%d",&n,&m);//設置障礙坐標</p><p> //當輸入# #時結(jié)束障礙設置</p><p> while(!(n==0&&m==0)){</p><p> maze[n-1][m-1]=1;<
46、;/p><p> scanf("%d%d",&n,&m);</p><p><b> }</b></p><p><b> }</b></p><p> 5.4通道可通性測試</p><p> //當前位置可通性測試</p>
47、;<p> int pass(int **maze,point curpos)</p><p><b> {</b></p><p> //根據(jù)maze二維數(shù)組儲存的數(shù)值判斷當前位置是否可通</p><p> if(maze[curpos.y][curpos.x]!=1&&maze[curpos.y][cu
48、rpos.x]!=8){</p><p> return (true);</p><p><b> }</b></p><p> else return(false);</p><p><b> }</b></p><p> 5.5為走過的通道留下足跡</p&
49、gt;<p><b> //留下足跡</b></p><p> void footprint(int **maze,point curpos)</p><p><b> {</b></p><p> maze[curpos.y][curpos.x]=8;</p><p><
50、;b> }</b></p><p> 5.6探索位置的切換</p><p> //當前探索位置到下一個探索位置坐標的切換</p><p> point nextpos(point curpos,int a)</p><p><b> {</b></p><p> sw
51、itch(a){</p><p> case 1://向右移動</p><p> if(curpos.x<l-1)curpos.x++;</p><p><b> break;</b></p><p> case 2://向下移動</p><p> if(curpos.y<h
52、-1)curpos.y++;</p><p><b> break;</b></p><p> case 3://向左移動</p><p> if(curpos.x>0)curpos.x--;</p><p><b> break;</b></p><p>
53、case 4://向上移動</p><p> if(curpos.y>0)curpos.y--;</p><p><b> break;</b></p><p><b> }</b></p><p> return curpos;</p><p><b&g
54、t; }</b></p><p> 5.7入口到出口的路徑探索</p><p><b> //路徑探索函數(shù)</b></p><p> int mazepath(int **maze,point start,point end,sqstack &s,selemtype e)</p><p>&l
55、t;b> {</b></p><p> initstack(s);//棧的初始化為路徑信息入棧做準備</p><p> point curpos=start;//把迷宮入口作為探索的起始位置</p><p><b> do{</b></p><p> if(pass(maze,curpos))
56、{</p><p> footprint(maze,curpos);//若當前位置可通,則留下足跡</p><p> e.pos=curpos;//把當前位置的坐標賦值給路徑信息元素e.pos</p><p> e.di=1;//標記下一個探索位置的方向</p><p> push(s,e);//當前路徑信息入棧</p>
57、<p> //若當前位置為迷宮出口則返回true結(jié)束探索</p><p> if(curpos.x==end.x&&curpos.y==end.y)</p><p> return (true);</p><p> curpos=nextpos(curpos,e.di);//切換當前位置繼續(xù)判斷可通性</p><
58、;p><b> }</b></p><p> else{//當前位置不可通</p><p> if(s.top!=s.base){//棧不為空</p><p> pop(s,e);//路徑信息出棧</p><p> while(e.di==4&&s.top!=s.base){</p&
59、gt;<p> //退回一步后,檢查一下個探索位置的方向標記值</p><p> //若e.di=4且棧不為空,則將路徑信息元素不斷出棧,</p><p> //直到e.di小于4為止</p><p><b> pop(s,e);</b></p><p><b> }</b>
60、</p><p> if(e.di<4){//若當前位置標記的下一個探索方向的值小于4</p><p> e.di++;//e.di自增改變探索方向</p><p> push(s,e);//改變下一個探索方向后將元素信息再次入棧</p><p> curpos=nextpos(e.pos ,e.di);//切換當前位置繼續(xù)判斷
61、可通性}</p><p><b> }</b></p><p><b> }</b></p><p> }while(s.top!=s.base);//若棧不為空則繼續(xù)執(zhí)行路徑探索循環(huán)</p><p> return (false);//尋找不到路徑返回false</p>
62、<p><b> }</b></p><p><b> 5.8打印迷宮信息</b></p><p><b> //打印迷宮信息</b></p><p> void printmaze(int **maze)</p><p><b> {<
63、/b></p><p><b> int k;</b></p><p> char b=1;//把迷宮障礙和最終路徑分別標記為a和b兩種字符</p><p> //逐行輸出迷宮信息</p><p> for(k=0;k<l+2;k++){</p><p> if((start
64、.y==0&&start.x+1==k)||(end.y==0&&end.x+1==k))</p><p> printf("- ");</p><p> else printf("█");</p><p><b> }</b></p><p>
65、; printf("\n");</p><p> for(int i=0;i<h;i++){</p><p> if((start.x==0&&start.y==i&&start.y!=0&&start.y!=h-1)||(end.x==0&&end.y==i&&end.y!=0
66、&&end.y!=h-1))</p><p> printf("- ");</p><p> else printf("█");</p><p> for(int j=0;j<l;j++){</p><p> if(maze[i][j]==1)//maze[x][x]的值為
67、1則輸出方塊</p><p> printf("■");</p><p> else if(maze[i][j]==2)//否則maze[x][x]的值為2則輸出b字符</p><p> printf("%c ",b);</p><p><b> else</b></
68、p><p> printf(" ");//maze[x][x]的值為不為1也不為2則輸出空格</p><p><b> }</b></p><p> if((start.x==l-1&&start.y==i&&start.y!=0&&start.y!=h-1)||(en
69、d.x==l-1&&end.y==i&&end.y!=0&&end.y!=h-1))</p><p> printf("- ");</p><p> else printf("█");</p><p> printf("\n");</p>
70、<p><b> }</b></p><p> for(k=0;k<l+2;k++){</p><p> if((start.y+1==h&&start.x+1==k)||(end.y+1==h&&end.x+1==k))</p><p> printf("- ");&
71、lt;/p><p> else printf("█");</p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p><b> 5.9主函數(shù)&
72、lt;/b></p><p> void main()</p><p><b> {</b></p><p> sqstack s;//棧的聲明</p><p> selemtype e;//路徑信息元素聲明</p><p> int **maze;//指向迷宮信息的指針聲明<
73、;/p><p> bool flag=1;//程序循環(huán)使用的旗幟</p><p> while(flag){</p><p> printf(" 尋找迷宮的出口\n");</p><p> printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74、~~~~~~~~~~~~~~~~\n");</p><p> printf(" * *\n");</p><p> printf(" * 程序使用說明: *
75、\n");</p><p> printf(" * *\n");</p><p> printf(" * 輸入橫縱坐標請用整數(shù),并用空格將其分開 *\n");</p><p&g
76、t; printf(" * *\n");</p><p> printf(" * 障礙物的設置以0 0作為結(jié)束標志 *\n");</p><p> printf("
77、 * *\n");</p><p> printf(" * 歡迎使用! *\n");</p><p> printf(" *
78、 *\n");</p><p> printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");</p><p> maze=initmaze();//迷宮大小初始化</p><
79、p> setza(maze,start,end);//迷宮障礙和出入口的設置</p><p> printf("開始尋找出路?(entrt)\n");</p><p> getchar();//程序暫停</p><p> getchar();</p><p> system("cls")
80、;//清屏</p><p><b> //打印迷宮信息</b></p><p> printf("迷宮大小為%d行%d列\(zhòng)n",h,l);</p><p> printf("入口坐標為:%d,%d",start.y+1,start.x+1);</p><p> printf
81、("出口坐標為:%d,%d\n",end.y+1,end.x+1);</p><p> printf("設置的迷宮如下圖所示:\n");</p><p> printmaze(maze);</p><p> //當成功探索到路徑是輸出路徑</p><p> if(mazepath(maze,s,
82、e)==true){</p><p> printf("從出口到入口的路徑坐標依次為:\n");</p><p> //當棧不為空時把探索到的路徑信息依次出棧</p><p> while(s.top!=s.base){</p><p><b> pop(s,e);</b></p>
83、<p> maze[e.pos.y][e.pos.x]=2;//在maze數(shù)組的對應數(shù)據(jù)為最終路徑標記記號</p><p> printf("(%d,%d)",e.pos.y+1,e.pos.x+1);//輸出路徑坐標</p><p><b> }</b></p><p> printf("\
84、n");</p><p> printf("迷宮出路如下圖所示:\n");</p><p> printmaze(maze);//打印迷宮信息及最終探索到的路徑</p><p><b> }</b></p><p> else printf("尋找不到路徑\n")
85、;</p><p> printf("繼續(xù)請按1,退出請按0.\n選擇:");</p><p> scanf("%d",&flag);//選擇是否繼續(xù)使用該程序</p><p> system("cls");</p><p><b> }</b>
86、</p><p><b> }</b></p><p><b> 6.程序測試</b></p><p> 設置4行4列的迷宮,設置迷宮入口不在邊緣上提示出錯,設置出口坐標與入口重合提示出錯。迷宮草圖如圖6.1所示。程序運行圖如圖6.2設置4行列迷宮數(shù)據(jù)及6.3尋找不到路徑探索結(jié)果所示。</p><
87、p> 圖6.1 4行4列的迷宮示意圖</p><p> 圖6.2 設置4行4列迷宮數(shù)據(jù)</p><p> 圖6.3尋找不到路徑的探索結(jié)果</p><p> 設置8行8列的迷宮使其入口在1 1,出口在8 8的位置根據(jù)迷宮草圖6.4所示設置障礙。</p><p> 圖6.4 8行8列的迷宮示意圖</p><p&
88、gt; 在程序中設置出入口和障礙坐標如圖6.5所示</p><p> 圖6.5設置8行8列的迷宮</p><p> 成功探索到迷宮路徑的結(jié)果如圖6.6所示</p><p> 圖6.6成功探索到迷宮路徑的結(jié)果</p><p><b> 總 結(jié)</b></p><p> 這是我第二次做課程
89、設計,之前的設計經(jīng)驗讓我有了下手的方向和技巧,使用模塊化的編程不僅使代碼清晰易讀也使程序的調(diào)試方便了許多。迷宮問題求解這個程序的最大問題是尋找迷宮路徑遇到障礙時改變方向和走入死胡同時往后退。</p><p> 程序從整體構思到算法設計以及編寫,調(diào)試歷經(jīng)了種種困難和考驗,通過查看資料與同學討論總結(jié)得到了一些問題的解決方案;總結(jié)了一些常見問題的解決方法其中包括一些相對合理而簡單程序算法。在這次課程設計當中讓我在之前
90、所學的c和數(shù)據(jù)結(jié)構知識得到了鞏固也提高了綜合應用能力。鍛煉了自己的實踐能力和耐心,程序中的每一處錯誤都要細心去分析修改,我從中也得到了許多課堂之外的東西更進一步體會到親自實踐和光看著書本學習的不同效果。 </p><p> 通過這次課程設計,我也發(fā)現(xiàn)了自身的很多不足之處,在以后的學習中,我會不斷的完善自我,不斷進取,能使自己在程序設計方面有所發(fā)展。</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論