數(shù)據(jù)結(jié)構(gòu)迷宮求解(代碼參數(shù))課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  信息科學(xué)與工程學(xué)院</b></p><p><b>  課程設(shè)計(jì)任務(wù)書(shū)</b></p><p>  題目: 迷宮求解課程設(shè)計(jì) </p><p>  學(xué) 號(hào):

2、 </p><p>  姓 名: </p><p>  專(zhuān) 業(yè): 網(wǎng)絡(luò)工程 </p><p>  課 程: 數(shù)據(jù)結(jié)構(gòu) </p><p&

3、gt;  指導(dǎo)教師: 職稱(chēng): </p><p>  完成時(shí)間: 2011 年 12 月----20 11 年 12 月</p><p>  課程設(shè)計(jì)任務(wù)書(shū)及成績(jī)?cè)u(píng)定</p><p><b>  目 錄</b></p><p><b>  摘 要

4、2</b></p><p><b>  1引 言3</b></p><p>  2設(shè)計(jì)目的與任務(wù)3</p><p>  2.1設(shè)計(jì)目的是3</p><p>  2.2設(shè)計(jì)任務(wù)是4</p><p>  3設(shè)計(jì)方案與實(shí)施4</p><p>  3.1總體

5、設(shè)計(jì)思想4</p><p>  3.2設(shè)計(jì)流程圖5</p><p><b>  3.3詳細(xì)設(shè)計(jì)6</b></p><p><b>  3.4程序清單6</b></p><p>  3.5程序調(diào)試與體會(huì)6</p><p>  3.6運(yùn)行結(jié)果(截圖)7</p&g

6、t;<p>  結(jié) 論……………………………………………………………………………… ……… 15</p><p><b>  致 謝15</b></p><p><b>  摘 要</b></p><p>  隨著計(jì)算機(jī)的高速發(fā)展,計(jì)算機(jī)能很簡(jiǎn)便地解決很多問(wèn)題。C語(yǔ)言編程也是解決問(wèn)題的一種語(yǔ)言。而此

7、我們的數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)是解決迷宮問(wèn)題。求迷宮(老鼠吃奶酪)中從入口到出口的路徑是一個(gè)經(jīng)典的程序設(shè)計(jì)問(wèn)題。“數(shù)據(jù)結(jié)構(gòu)”成為計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),它不僅是計(jì)算機(jī)學(xué)科的核心課程,而且已成為其它理工專(zhuān)業(yè)的熱門(mén)選修課。主要包括線性表、樹(shù)和二叉樹(shù)以及圖等基本類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算這三個(gè)方面的內(nèi)容,其中邏輯

8、結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu);存儲(chǔ)結(jié)構(gòu)可分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)兩類(lèi),圖則屬于邏輯結(jié)構(gòu)中的非線性結(jié)構(gòu)。廣度優(yōu)先搜索(BFS)用的隊(duì)列一步一步完成的,從而找到的是最短路徑。</p><p>  關(guān)鍵詞:隊(duì)列,廣度優(yōu)先,搜索,最短路徑,遍歷</p><p><b>  1引 言</b></p><p>  《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)和信息

9、管理與信息系統(tǒng)專(zhuān)業(yè)的必修課之一,是一門(mén)綜合性的專(zhuān)業(yè)基礎(chǔ)課。本課程較系統(tǒng)地介紹了軟件設(shè)計(jì)中常用的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的實(shí)現(xiàn)算法,如線性表、棧、隊(duì)列、樹(shù)和二叉樹(shù),圖、檢索和排序等,并對(duì)性能進(jìn)行分析和比較,內(nèi)容非常豐富。</p><p>  本課程設(shè)計(jì)我們要解決的問(wèn)題是圖迷宮求解問(wèn)題。本需要用到棧的相關(guān)數(shù)據(jù)結(jié)構(gòu)。但我們這個(gè)程序沒(méi)有用棧,而是用隊(duì)列替代棧的功能,使程序運(yùn)行效率更加高。還用到求迷宮問(wèn)題最平常的數(shù)據(jù)結(jié)構(gòu)算法,即廣

10、度優(yōu)先搜索算法(BFS),還保持了它的路徑,再?gòu)拇休敵鰣D。</p><p>  本課程設(shè)計(jì)總的思路要解決的問(wèn)題是構(gòu)造迷宮,尋找路線,打印路徑。我們首先要做的是創(chuàng)建一個(gè)二維數(shù)組,用以來(lái)存儲(chǔ)圖,然后我們要想好怎樣利用BFS算法來(lái)尋找路線。把這個(gè)算法以及其他過(guò)程寫(xiě)成調(diào)用函數(shù),各自調(diào)用后調(diào)試程序。達(dá)到滿意結(jié)果后寫(xiě)報(bào)告。</p><p><b>  2設(shè)計(jì)目的與任務(wù)</b>&

11、lt;/p><p><b>  2.1設(shè)計(jì)目的是</b></p><p>  根據(jù)課堂講授內(nèi)容,學(xué)生做相應(yīng)的自主練習(xí),消化數(shù)據(jù)結(jié)構(gòu)課堂所講解的內(nèi)容;通過(guò)調(diào)試典型例題或習(xí)題積累調(diào)試C程序的經(jīng)驗(yàn);通過(guò)完成輔導(dǎo)教材中的編程題,逐漸培養(yǎng)學(xué)生的編程能力、用計(jì)算機(jī)解決實(shí)際問(wèn)題的能力、團(tuán)體合作能力。</p><p><b>  2.2設(shè)計(jì)任務(wù)是<

12、/b></p><p>  它的任務(wù)就是訓(xùn)練學(xué)生對(duì)計(jì)算機(jī)數(shù)據(jù)對(duì)象進(jìn)行分析的能力,選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)及相關(guān)算法的能力。 此程序的任務(wù)是實(shí)現(xiàn)把能走的最短路找到,并很直觀的顯示在屏幕上的功能。</p><p><b>  3設(shè)計(jì)方案與實(shí)施</b></p><p><b>  3.1總體設(shè)計(jì)思想</b></p>

13、<p>  (1) 迷宮形狀由0表示可通過(guò),用1表示是障礙。為方便用0,1輸入。并把迷宮圖形保存在二維數(shù)組Map中。而打印出的圖形中 ‘●’表示能過(guò)‘□’表示障礙.</p><p>  (2) 對(duì)探索過(guò)的位置加以標(biāo)記Used[][],輸入起點(diǎn)終點(diǎn)后可由BFS()來(lái)完成搜索。到目的點(diǎn)就可退出該調(diào)用程序。把每步路徑保存到Mark[][]內(nèi),通過(guò)反向進(jìn)行退步可把完整的路徑保存在結(jié)構(gòu)體result數(shù)組re[]

14、[]內(nèi),通過(guò)標(biāo)記的路徑可將串str作相應(yīng)的改變就能輸出的帶路徑的圖。</p><p>  (3) 根據(jù)二維字符數(shù)組和加標(biāo)記的位置坐標(biāo),輸出迷宮的圖形。</p><p>  (4) 該程序在獲取迷宮圖結(jié)構(gòu)后,可對(duì)迷宮任意入口到出口的路線進(jìn)行搜索,主要由廣度優(yōu)先搜索完成該操作。它可以是100以?xún)?nèi)大小的迷宮,有自行提供的迷宮圖,本課程設(shè)計(jì)是以二維數(shù)組作為迷宮的存儲(chǔ)結(jié)構(gòu)。而廣度優(yōu)先搜索(BFS)用

15、的隊(duì)列一步一步完成的,從而找到的是最短路徑;該程序還能選擇是4方向還是8方向的迷宮走法。并能輸出打印</p><p><b>  3.2設(shè)計(jì)流程圖</b></p><p><b>  3.3詳細(xì)設(shè)計(jì)</b></p><p>  struct Point</p><p>  {int x,y,s;}&

16、lt;/p><p>  這個(gè)結(jié)構(gòu)體是用來(lái)做廣度搜索的對(duì)每個(gè)迷宮節(jié)點(diǎn)有相應(yīng)的s(最短的步數(shù),當(dāng)然有些是不可達(dá)的)</p><p>  int move[8][2] = {{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}} ;//</p><p>  int BFS(int step)// 廣度搜索用來(lái)算出最短路徑

17、的走法 并將走法保存在re數(shù)組結(jié)構(gòu)體中</p><p>  int Initialization()// 將str[][]圖形初始化</p><p>  int Format_Limit()//圖形打印格式限制</p><p>  int Print_Maze_Figure()//打印出圖形</p><p>  int PPMF()// 打印

18、出迷宮圖形</p><p>  int Save_Path()// 將路徑保存在str[][]中并打印出路徑迷宮圖形</p><p>  int Init()// 從文件中植入數(shù)據(jù) 完成對(duì)Map迷宮圖的結(jié)構(gòu)</p><p>  int Judge()//判斷輸入的起點(diǎn)終點(diǎn)是否符合實(shí)際</p><p>  int main()//對(duì)上面函數(shù)的結(jié)

19、合應(yīng)用</p><p><b>  3.4程序清單</b></p><p>  #include <stdlib.h></p><p>  #include <iostream></p><p>  #include <string></p><p>  #in

20、clude <queue>// 這個(gè)是stl 它是一個(gè)方便的東西 </p><p>  #include <fstream></p><p>  #include <conio.h></p><p>  using namespace std;</p><p>  struct result</p&g

21、t;<p><b>  {</b></p><p>  int rx,ry;</p><p>  }re[100*100];</p><p>  int ri=-1;</p><p>  struct Point</p><p><b>  {</b></

22、p><p>  int x,y,s;</p><p>  }s,t;//s代表起點(diǎn) t代表終點(diǎn)</p><p>  int mark[100][100]; //用來(lái)標(biāo)記怎么走到這個(gè)地方的 (保存的是方向的序號(hào)):0,1,2,3,4,5,6,7</p><p>  bool Used[100][100];//標(biāo)記已經(jīng)走過(guò)的地方</p>

23、<p>  bool Map[100][100];//輸入0,1表示迷宮</p><p>  int move[8][2] = {{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}} ;//</p><p><b>  int n,m;</b></p><p>  int B

24、FS(int step) // 廣度搜索用來(lái)算出最短路徑的走法 并將走法保存在re結(jié)構(gòu)體中</p><p><b>  {</b></p><p>  queue<Point> My;</p><p><b>  s.s =0;</b></p><p>  while(!My.empty

25、())My.pop();</p><p>  My.push(s);</p><p>  Point temp,s1;</p><p>  while(!My.empty())</p><p><b>  {</b></p><p>  s1 = My.front();</p>&l

26、t;p><b>  My.pop();</b></p><p>  if(s1.x == t.x&&s1.y==t.y)</p><p><b>  {</b></p><p><b>  int u;</b></p><p>  re[++ri].rx=

27、s1.x;</p><p>  re[ri].ry=s1.y;</p><p>  printf("到目的地了\n步數(shù):%d\n(%2d,%2d) <- ",s1.s,s1.x,s1.y);</p><p>  for(int j = 1 ;j <= s1.s;j++)</p><p><b>  

28、{</b></p><p><b>  u = s1.x;</b></p><p>  s1.x = s1.x - move[ mark[s1.x][s1.y]][0];</p><p>  s1.y = s1.y - move[ mark[u][s1.y] ][1];</p><p>  re[++ri

29、].rx=s1.x;</p><p>  re[ri].ry=s1.y;</p><p>  printf("(%2d,%2d) <- ",s1.x,s1.y);</p><p>  if((j+1)%5==0)printf("\n");</p><p><b>  }</b&g

30、t;</p><p>  printf("\n");</p><p>  system("pause");</p><p>  system("cls");</p><p><b>  return 1;</b></p><p><

31、b>  }</b></p><p>  for(int i =0 ;i < step ; i++)</p><p><b>  {</b></p><p>  temp.x = s1.x + move[i][0];</p><p>  temp.y = s1.y + move[i][1];<

32、/p><p>  temp.s = s1.s;</p><p>  if(temp.x<0||temp.x>=n||temp.y<0||temp.y>=n||Used[temp.x][temp.y]||Map[temp.x][temp.y])</p><p><b>  continue;</b></p>&l

33、t;p><b>  else</b></p><p><b>  {</b></p><p>  mark[temp.x][temp.y] = i;</p><p>  temp.s += 1 ;</p><p>  My.push(temp);</p><p>  U

34、sed[temp.x][temp.y] = true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("不好意思,起點(diǎn)至終點(diǎn)無(wú)路徑不可達(dá)!!!!\n"

35、);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  char str[256*256][3]; //串保存圖</p><p>  int Initialization()// 將str[][]圖形初始化</p>&

36、lt;p><b>  {</b></p><p>  int i1,j1,xj;</p><p>  for(i1=0;i1<256*256;i1++)</p><p>  strcpy(str[i1]," ");</p><p>  for(i1=0;i1<n;i1++)<

37、/p><p><b>  {</b></p><p>  for(j1=0,xj=0;xj<n;j1=j1+2,xj++)</p><p><b>  {</b></p><p>  if(Map[i1][xj] == 0)</p><p>  strcpy(str[2*i

38、1*(2*n-1)+j1],"●");</p><p><b>  else</b></p><p>  strcpy(str[2*i1*(2*n-1)+j1],"□");</p><p><b>  }</b></p><p><b>  }<

39、;/b></p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Format_Limit()//圖形打印格式限制</p><p><b>  {</b></p><p>  fo

40、r(int i =0; i <35-2*n&&(35-2*n)>0;i++)</p><p>  printf(" ");</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int Pr

41、int_Maze_Figure()//打印出圖形</p><p><b>  {</b></p><p>  int i,xi,xj;</p><p>  Format_Limit();</p><p>  for(i =0 ;i <= n*2;i++)</p><p>  printf(&

42、quot;□");</p><p>  printf("\n");</p><p>  for(xi=0,xj=0;xj<((2*n-1)*(2*n-1));xj++,xi++)</p><p><b>  {</b></p><p>  if(0 == xi)</p>

43、<p><b>  {</b></p><p>  Format_Limit();</p><p>  printf("□");</p><p><b>  }</b></p><p>  printf("%s",str[xj]);</p>

44、;<p>  if(xi==2*n-2)</p><p><b>  {</b></p><p>  printf("□\n");</p><p><b>  xi=-1; </b></p><p><b>  }</b></p>

45、<p><b>  }</b></p><p>  Format_Limit();</p><p>  for(i =0 ;i <= n*2 ;i++)</p><p>  printf("□");</p><p>  printf("\n");</p>

46、;<p><b>  return 1;</b></p><p><b>  }</b></p><p>  int PPMF()// 打印出迷宮圖形</p><p><b>  {</b></p><p>  printf("\t\t\t\t[迷宮為]

47、\n\t\t\t ●表可走,□表不可走 \n");</p><p>  Initialization();</p><p>  Print_Maze_Figure();</p><p><b>  return 1;</b></p><p><b>  }</b></p>&

48、lt;p>  int Save_Path()// 將路徑保存在str[][]中并打印出路徑迷宮圖形</p><p><b>  {</b></p><p>  printf("\t\t\t [迷宮路徑圖]\n(%d,%d)至(%d,%d)\t\t ●表可走,□表不可走 \n",s.x,s.y,t.x,t.y);</p>

49、<p>  Initialization();</p><p>  strcpy(str[2*s.x*(2*n-1)+2*s.y],"起");</p><p>  strcpy(str[2*t.x*(2*n-1)+2*t.y],"終");</p><p>  for(int wri=0;wri<ri;wri++

50、)</p><p><b>  {</b></p><p>  if(re[wri].rx<re[wri+1].rx&&re[wri].ry==re[wri+1].ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)+(2*n-1)+2*re[wri].ry],"↑"

51、;);</p><p>  if(re[wri].rx==re[wri+1].rx&&re[wri].ry<re[wri+1].ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)+2*re[wri+1].ry-1],"←");</p><p>  if(re[wri].rx>re

52、[wri+1].rx&&re[wri].ry==re[wri+1].ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)-(2*n-1)+2*re[wri].ry],"↓");</p><p>  if(re[wri].rx==re[wri+1].rx&&re[wri].ry>re[wri+1]

53、.ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)+2*re[wri].ry-1],"→");</p><p>  if(re[wri].rx<re[wri+1].rx&&re[wri].ry<re[wri+1].ry)</p><p>  strcpy(str[2*re[wr

54、i].rx*(2*n-1)+(2*n-1)+1+2*re[wri].ry],"↖");</p><p>  if(re[wri].rx<re[wri+1].rx&&re[wri].ry>re[wri+1].ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)+(2*n-1)-1+2*re[wri].ry]

55、,"↗");</p><p>  if(re[wri].rx>re[wri+1].rx&&re[wri].ry<re[wri+1].ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)-(2*n-2)+2*re[wri].ry],"↙");</p><p>  

56、if(re[wri].rx>re[wri+1].rx&&re[wri].ry>re[wri+1].ry)</p><p>  strcpy(str[2*re[wri].rx*(2*n-1)-(2*n-1)-1+2*re[wri].ry],"↘");</p><p><b>  }</b></p><p

57、>  Print_Maze_Figure();</p><p><b>  return 1;</b></p><p><b>  }</b></p><p><b>  //隊(duì)列</b></p><p>  int Init()// 從文件中植入數(shù)據(jù) 完成對(duì)Map迷宮圖

58、的結(jié)構(gòu)</p><p><b>  {</b></p><p>  FILE *pf;int i,j;</p><p>  pf = fopen("maze.txt","r");</p><p>  if(pf==NULL)return 0;</p><p&

59、gt;  fscanf(pf,"%d",&n);</p><p>  for(i = 0;i < n; i++)</p><p>  for(j = 0 ; j < n; j++)</p><p><b>  {</b></p><p>  Used[i][j] = false;&

60、lt;/p><p>  fscanf(pf,"%d",&Map[i][j]);</p><p><b>  }</b></p><p>  fclose(pf);</p><p><b>  return 1;</b></p><p><b>

61、;  }</b></p><p>  int Judge()//判斷輸入的起點(diǎn)終點(diǎn)是否符合實(shí)際</p><p><b>  {</b></p><p>  bool flag = true;</p><p>  if(s.x<0||s.x>=n||s.y<0||s.y>=n){prin

62、tf("起點(diǎn)越界,不符合!\n");flag = false;}</p><p>  else if(t.x<0||t.x>=n||t.y<0||t.y>=n){printf("終點(diǎn)越界,不符合!\n");flag = false;}</p><p>  else if(Map[s.x][s.y]){printf("

63、起點(diǎn)是墻,不符合!\n");flag = false;}</p><p>  else if(Map[t.x][t.y]){printf("終點(diǎn)是墻,不符合!\n");flag = false;}</p><p>  else if(s.x==t.x&&s.y==t.y){printf("起點(diǎn)是終點(diǎn),不符合!\n");fla

64、g = false;}</p><p><b>  if(!flag)</b></p><p>  {printf("是則再輸入\\否則退出程序:(Y/N)\n");</p><p>  char ch[20];</p><p>  scanf("%s",ch);</p&g

65、t;<p>  if(ch[0] == 'Y'||ch[0] =='y')return 1;</p><p>  else return 0;</p><p><b>  }</b></p><p><b>  return 2;</b></p><p>

66、;<b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p><b>  char ch;</b></p><p>  int i,j,step;</p><p>  printf("

67、;\t\t\t<請(qǐng)按提示操作>\n");</p><p>  next:system("pause");</p><p>  system("cls");</p><p>  printf("是否使用系統(tǒng)提供的迷宮圖:(Y/N)\n");</p><p>  c

68、h = getch();</p><p>  if(ch == 'Y'||ch =='y')</p><p><b>  Init();</b></p><p><b>  else</b></p><p><b>  {</b></p&g

69、t;<p>  printf("請(qǐng)輸入迷宮的大小:(n*n)");</p><p>  scanf("%d",&n);</p><p>  printf("\t請(qǐng)輸入迷宮的結(jié)構(gòu)0,1表示0是路1是墻\n");</p><p>  for(i = 0;i < n; i++)<

70、/p><p>  for(j = 0 ; j < n; j++)</p><p>  { Used[i][j] = false;</p><p>  scanf("%d",&Map[i][j]);</p><p><b>  }</b></p><p><b

71、>  }</b></p><p>  bool flag=true;</p><p>  while(flag)</p><p>  {for(i =0 ;i < n;i++)</p><p>  for(j =0 ;j < n ;j++)</p><p>  Used[i][j] = f

72、alse;</p><p><b>  ri = -1;</b></p><p>  system("pause");</p><p>  system("cls");</p><p>  printf("是否顯示原始迷宮:(Y/N)\n");</p>

73、;<p>  ch = getch();</p><p>  if(ch == 'Y'||ch =='y')</p><p><b>  PPMF();</b></p><p>  again:printf("請(qǐng)輸入起點(diǎn)與終點(diǎn):(x1 y1 x2 y2)");</p>

74、;<p>  scanf("%d %d %d %d",&s.x,&s.y,&t.x,&t.y);</p><p>  if(1==Judge())goto again;</p><p><b>  else</b></p><p>  if(0==Judge())break;&l

75、t;/p><p>  printf("請(qǐng)選擇4方向還是8方向的迷宮:");</p><p>  scanf("%d",&step);</p><p>  if(8==step)step=8;</p><p>  else step = 4;</p><p>  system(

76、"pause");</p><p>  system("cls");</p><p>  BFS(step);</p><p>  Save_Path();</p><p>  printf("是否繼續(xù)(Y/N)\n");</p><p>  ch = get

77、ch();</p><p>  if(ch != 'Y'&&ch !='y') flag = false;</p><p><b>  if(flag)</b></p><p>  {printf("是否更換迷宮(Y/N)\n");</p><p> 

78、 ch = getch();</p><p>  if(ch == 'Y'||ch =='y')</p><p>  goto next;}</p><p><b>  }</b></p><p><b>  return 0;</b></p><

79、p><b>  }</b></p><p><b>  /*測(cè)試?yán)?lt;/b></p><p><b>  5</b></p><p><b>  0 0 0 0 0</b></p><p><b>  1 1 1 1 0</b>

80、</p><p><b>  0 0 0 0 0</b></p><p><b>  0 1 1 1 1</b></p><p><b>  0 0 0 0 0</b></p><p><b>  0 0 4 4 4</b></p><

81、p><b>  16</b></p><p>  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0</p><p>  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0</p><p>  0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0</p><p>  0 1 1 1

82、 1 1 1 1 1 1 1 1 1 0 1 0</p><p>  0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0</p><p>  0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0</p><p>  0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1

83、 1 1 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0</p><p>  0 1 0 1 0 0 0 0

84、 0 0 0 0 1 0 1 0</p><p>  0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0</p><p>  0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0</p><p>  0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0</p><p>  0 0 0 0 0 0 0 0 0 0

85、 0 0 0 0 0 0</p><p><b>  0 0 8 6 4</b></p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0

86、1 0 1</p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

87、1</p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1<

88、;/p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p&

89、gt;<p>  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p>  0 0 15 15 8</p><p>  0 0 14 0 8</p><p>  0 1 0 1 0 1 0 1</p><p>  1 0 1 0 1 0 1 1</p><p>  1 0 1 1

90、 1 1 1 1</p><p>  1 0 0 0 1 0 1 0</p><p>  0 1 1 1 1 1 0 1</p><p>  1 0 1 1 1 1 1 1</p><p>  0 1 1 1 0 1 0 1</p><p>  1 0 1 0 1 0 1 0</p><p>&

91、lt;b>  0 0 7 9 8</b></p><p>  0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0</p><p>  1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0</p><p>  0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0</p><p>  0 0 0

92、0 0 0 0 0 0 0 0 1 0 1 0 0</p><p>  0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1</p><p>  1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0</p><p>  0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0</p><p>  0 0 0 0 0

93、1 0 1 1 1 1 0 1 1 1 0</p><p>  0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0</p><p>  0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1</p><p>  0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0</p><p>  0 0 0 0 1 1 1

94、0 0 0 1 0 0 0 1 0</p><p>  0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0</p><p>  0 1 1 0 0 1 1 1 0 0 0 1 0 1 0 0</p><p>  0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0</p><p>  1 1 0 0 0 0 1 0 0

95、0 0 1 0 1 0 0</p><p>  0 11 0 15 4</p><p>  0 11 0 15 8</p><p>  0 2 14 12 4</p><p>  0 2 14 12 8</p><p>  0 0 0 15 4</p><p>  0 0 0 15 8</

96、p><p><b>  */</b></p><p>  3.5程序調(diào)試與體會(huì)</p><p>  調(diào)試:經(jīng)過(guò)幾天的努力,課程設(shè)計(jì)終于完成,由于我對(duì)數(shù)據(jù)結(jié)構(gòu)和c語(yǔ)言不是很了解,有時(shí)忽略了一些關(guān)鍵的細(xì)節(jié),使得在編寫(xiě)程序的過(guò)程中出現(xiàn)了一些問(wèn)題。對(duì)于打字有時(shí)粗心導(dǎo)致出現(xiàn)一些難以發(fā)現(xiàn)的小錯(cuò)誤,在我的耐心,細(xì)致的調(diào)試下最終使得程序能夠運(yùn)行,課程設(shè)計(jì)完滿完工。

97、</p><p>  1、問(wèn)題一:求出起點(diǎn)到終點(diǎn)的路徑 </p><p>  現(xiàn)象:求出的結(jié)果總是無(wú)任何現(xiàn)象</p><p>  原因:把相關(guān)重要的變量重復(fù)定義以至賦過(guò)的值被覆蓋</p><p>  問(wèn)題二:常量轉(zhuǎn)義字符</p><p>  現(xiàn)象:出現(xiàn)不正常字符常量</p><p>  原因:&

98、#39;\'字符常量形式弄錯(cuò)</p><p>  3、問(wèn)題三:輸入起點(diǎn)終點(diǎn)時(shí),未判斷下標(biāo)越界就使用數(shù)據(jù)</p><p><b>  現(xiàn)象:</b></p><p>  原因:未判斷下標(biāo)越界就使用數(shù)據(jù)</p><p>  體會(huì):在復(fù)雜的程序,都可以拆成一個(gè)個(gè)簡(jiǎn)單的小部分,逐個(gè)擊破,再拼湊起來(lái),在復(fù)雜的事也變的簡(jiǎn)單了

99、。</p><p>  3.6運(yùn)行結(jié)果(截圖)</p><p>  將程序員錄入后,讓其運(yùn)行。將會(huì)出現(xiàn)一個(gè)菜單的界面,執(zhí)行各種操作均有其對(duì)應(yīng)的代碼。要執(zhí)行何種操作只需輸入對(duì)應(yīng)的指令即可進(jìn)行,在每步操作后均會(huì)有相應(yīng)的提示。操作簡(jiǎn)單方便實(shí)用,下面即為一些操作的示意圖。</p><p>  運(yùn)行程序后出界面,運(yùn)行結(jié)果如圖所示。</p><p>&l

100、t;b>  結(jié) 論</b></p><p>  經(jīng)過(guò)我們不懈的努力我們終于完成了本次課程設(shè)計(jì),通過(guò)這次課程設(shè)計(jì),我感覺(jué)到要真正做出一個(gè)程序并不很容易,但只要用心去做,總會(huì)有收獲,特別是當(dāng)我遇到 一個(gè)問(wèn)題,想辦法去解決,最后終于找到方法時(shí),心里的那份喜悅之情真是難以形容。編寫(xiě)程序中遇到問(wèn)題再所難免,應(yīng)耐心探究其中的原因,從出現(xiàn)問(wèn)題的地方起,并聯(lián)系前后程序,仔細(xì)推敲,逐個(gè)排查。直到最終搞清為止。我

101、們本次做的是迷宮求解問(wèn)題,深刻的體會(huì)到它的游戲可玩性。通過(guò)本次課程設(shè)計(jì)我們發(fā)現(xiàn)我們對(duì)于C++語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)還有很多地方不了解,今后繼續(xù)努力學(xué)習(xí)。</p><p><b>  致 謝</b></p><p>  在這里我真心的感謝xx老師對(duì)我們精心的指導(dǎo)和不倦的教育,他在我們的課程設(shè)計(jì)過(guò)程中提出了指導(dǎo)性的方案和架構(gòu),時(shí)事關(guān)注我們?cè)O(shè)計(jì)的進(jìn)程,并指引我們閱讀相關(guān)的資料和書(shū)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論