2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析2</b></p><p>  2.1 課程設計目的2</p><p>  2.2 課程設計任務2</p><p&g

2、t;  2.3 設計環境2</p><p>  2.4 開發語言2</p><p><b>  3 分析和設計2</b></p><p>  3.1 模塊設計2</p><p>  3.2 系統流程圖3</p><p>  3.3 主要模塊的流程圖7</p><p&

3、gt;  4 具體代碼實現11</p><p>  5 課程設計總結22</p><p>  5.1 程序運行結果22</p><p>  5.2 課程設計體會23</p><p><b>  參考文獻23</b></p><p><b>  致 謝23</b>

4、</p><p><b>  1 前言</b></p><p>  本課程設計是關于數據結構和棧道的基本操作,使用c語言編程,定義合適的數據結構,對已經學習的c語言的指針,數據結構和棧道加以了解。對于程序設計課程的運用和學習。</p><p><b>  2 需求分析</b></p><p>  2

5、.1 課程設計目的</p><p>  學生在教師指導下運用所學課程的知識來研究、解決一些具有一定綜合性問題的專業課題。通過課程設計(論文),提高學生綜合運用所學知識來解決實際問題、使用文獻資料、及進行科學實驗或技術設計的初步能力,為畢業設計(論文)打基礎。</p><p>  2.2 課程設計任務</p><p>  給出迷宮的入口和出口及相關的通路,求出從入口到

6、出口的路徑。要求使用C語言編程,定義合適的數據結構。最后,需要說明設計思想,同時給出能夠運行的源程序,并給出對應的程序流程圖</p><p><b>  2.3 設計環境</b></p><p> ?。?)WINDOWS 2000/2003/XP/7/Vista系統</p><p> ?。?)Visual C++或TC集成開發環境</p&

7、gt;<p><b>  2.4 開發語言</b></p><p><b>  C語言</b></p><p><b>  3 分析和設計</b></p><p><b>  3.1 模塊設計</b></p><p>  定義SHU、MG結構

8、體類型, 產生記憶效果,以及用線性鏈表來進行地圖更改。</p><p>  typedef struct shuju{</p><p><b>  int data;</b></p><p>  int flag; /*判斷這個位置是否被走過,使其產生記憶效果*/</p><p><b

9、>  }SHU;</b></p><p>  typedef struct maze{</p><p><b>  int c;</b></p><p><b>  int flag;</b></p><p>  int direct;</p><p>&l

10、t;b>  int x;</b></p><p><b>  int y;</b></p><p>  struct maze *next;</p><p><b>  }MG;</b></p><p>  定義pop()函數,用來進行入棧操作。</p><p&

11、gt;  定義 way() 函數,用來尋找迷宮地圖正確的路徑。 /*尋找路徑函數*/</p><p><b>  3.2 系統流程圖</b></p><p>  3.3 主要模塊的流程圖</p><p><b>  N</b></p><p><b>  Y</b></

12、p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p>

13、<p><b>  Y</b></p><p>  1 2 3 4 </p><p><b>  4 具體代碼實現</b></p><p>  #include<malloc.h></p><p>  #

14、include<stdio.h></p><p>  #include<conio.h></p><p>  #include<process.h></p><p>  #include<stdlib.h></p><p>  #include<dos.h></p>&

15、lt;p>  #include<windows.h></p><p>  #include<time.h></p><p>  #define M 5 /*規定迷宮的行數*/</p><p>  #define N 5 /*規定迷宮的列數*/&

16、lt;/p><p><b>  int i=0;</b></p><p>  typedef struct shuju{</p><p><b>  int data;</b></p><p>  int flag; /*判斷這個位置是否被走過,使其產生

17、記憶效果*/</p><p><b>  }SHU;</b></p><p>  typedef struct maze{</p><p><b>  int c;</b></p><p><b>  int flag;</b></p><p>  in

18、t direct;</p><p><b>  int x;</b></p><p><b>  int y;</b></p><p>  struct maze *next;</p><p><b>  }MG;</b></p><p>  MG *t

19、op,*p;</p><p>  MG * pop(int bb,int xx,int yy,SHU t[M][N]) /*入棧操作*/</p><p>  {int i2,j2;</p><p><b>  i++;</b></p><p>  p=(MG *)malloc(sizeof(MG));</p

20、><p><b>  p->c=bb;</b></p><p>  p->flag=1;</p><p>  p->direct=4;</p><p><b>  p->x=xx;</b></p><p><b>  p->y=yy;<

21、;/b></p><p><b>  if(i==1)</b></p><p><b>  {top=p;</b></p><p>  top->next=NULL;</p><p><b>  }</b></p><p><b>

22、  else</b></p><p>  {p->next=top;</p><p><b>  top=p;</b></p><p><b>  }</b></p><p>  system("cls");</p><p>  for(

23、i2=0;i2<M;i2++)</p><p>  {printf("\n");</p><p>  for(j2=0;j2<N;j2++)</p><p>  if(t[i2][j2].data==8)</p><p><b>  {</b></p><p>  

24、cprintf("%3d",t[i2][j2].data);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cprintf("%3d",t

25、[i2][j2].data);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return p;</b></p><p><b>  }</b></p><p>  in

26、t way(int x1,int y1,SHU s[M][N]) /*尋找路徑函數*/</p><p>  { int x,y,f=0;</p><p>  int i1,j1;</p><p>  while(top!=NULL) /*以下是在四個方向上進行判斷</p><p>  通就入棧,不通就進行下

27、個方向的</p><p>  判斷,如果四個方向都不通,就出棧*/</p><p>  if(top->flag==1)</p><p>  {x=top->x;</p><p><b>  y=top->y;</b></p><p>  if(x==x1&&y=

28、=y1)</p><p><b>  { f=1;</b></p><p><b>  break;</b></p><p>  } /*判斷右方向*/</p><p>  if(top->direct==4)</p><p&

29、gt;  {top->direct--;</p><p>  if(0<=y+1&&y+1<N) /*判斷數組的下標是否超過了規定的界限*/</p><p>  if(s[x][y+1].data==0&&s[x][y+1].flag==0)</p><p>  pop(s[x][y+1]

30、.data=8,x,y+1,s);</p><p><b>  }</b></p><p>  else if(top->direct==3) /*判斷下方向*/</p><p>  {top->direct--;</p><p>  if(0<=x+1&&x+1<M

31、)</p><p>  if(s[x+1][y].data==0&&s[x+1][y].flag==0)</p><p>  pop(s[x+1][y].data=8,x+1,y,s);</p><p><b>  }</b></p><p>  else if(top->direct==2)

32、 /*判斷左方向*/</p><p>  {top->direct--;</p><p>  if(0<=y-1&&y-1<N)</p><p>  if(s[x][y-1].data==0&&s[x][y-1].flag==0)</p><p>  pop(s[x][y-1].d

33、ata=8,x,y-1,s);</p><p><b>  }</b></p><p>  else if(top->direct==1) /*判斷上方向*/</p><p>  {top->direct--;</p><p>  top->flag=0;</p><p&g

34、t;  if(0<=x-1&&x-1<M)</p><p>  if(s[x-1][y].data==0&&s[x-1][y].flag==0)</p><p>  pop(s[x-1][y].data=8,x-1,y,s);</p><p><b>  }</b></p><p&

35、gt;<b>  }</b></p><p><b>  else</b></p><p>  {s[top->x][top->y].data=0;</p><p>  s[top->x][top->y].flag=1;</p><p>  top=top->next;

36、</p><p>  system("cls");</p><p>  for(i1=0;i1<M;i1++)</p><p>  {printf("\n");</p><p>  for(j1=0;j1<N;j1++)</p><p>  if(s[i1][j1].

37、data==8)</p><p><b>  {</b></p><p>  cprintf("%3d",s[i1][j1].data);</p><p><b>  }</b></p><p><b>  else</b></p><p

38、><b>  {</b></p><p>  cprintf("%3d",s[i1][j1].data);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>&l

39、t;/p><p><b>  return f;</b></p><p><b>  }</b></p><p>  void main()</p><p>  {SHU s[M][N];</p><p>  int x,y,x1,y1;</p><p>

40、;  int i1,j1,i,j,F;</p><p>  for(i1=0;i1<M;i1++)</p><p>  for(j1=0;j1<N;j1++) /*迷宮圖面,用一個數字表示*/</p><p>  s[i1][j1].data=8;

41、 </p><p>  for(i1=0;i1<M;i1++)</p><p>  {printf("\n");</p><p>  for(j1=0;j1<N;j1++)</p><p>  printf("%

42、3d",s[i1][j1].data); /*打印迷宮最原始的界面,用數字8表示每個 } 位置*/</p><p><b>  }</b><

43、;/p><p>  printf("\n請輸入0或1來表示迷宮地圖 --0為通 --1為不通\n");</p><p>  for(i1=0;i1<M;i1++)</p><p>  for(j1=0;j1<N;j1++)</p><p>  {printf("\nb[%d][%d]=",i1,

44、j1);</p><p>  scanf("%d",&s[i1][j1].data); /*繪制迷宮,0代表通,1代表不通*/</p><p>  s[i1][j1].flag=0;</p><p>  system("cls");</p><p

45、>  for(i=0;i<M;i++)</p><p>  {printf("\n");</p><p>  for(j=0;j<N;j++)</p><p>  if(s[i][j].data==0)</p><p><b>  {</b></p><p>

46、  cprintf("%3d",s[i][j].data);</p><p><b>  }</b></p><p>  else if(s[i][j].data==1)</p><p><b>  {</b></p><p>  cprintf("%3d",

47、s[i][j].data);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cprintf("%3d",s[i][j].data);</p>&

48、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\nmi gong tu is :");</p><p>  for(i1=0;i1<M;i1+

49、+)</p><p>  {printf("\n");</p><p>  for(j1=0;j1<N;j1++)</p><p>  printf("%3d",s[i1][j1].data);</p><p><b>  }</b></p><p>

50、  printf("\n輸入迷宮的入口坐標(X,Y)\n for example input:0 0\ninput:"); /*輸入迷宮的入口坐標(X,Y)*/</p><p>  scanf("%d %d",&x,&y);</p><p>  printf("輸入迷宮的出口坐標(X1,Y1)\n for examp

51、le input:3 3\ninput:"); /*輸入迷宮的出口坐標(X1,Y1)*/</p><p>  scanf("%d %d",&x1,&y1);</p><p>  printf("press any key to continue:");</p><p><b>  ge

52、tch();</b></p><p>  while(s[x][y].data!=0) /*判斷是否有入口位置*/</p><p>  {printf("Not find ru kou\n");</p><p>  printf("please input again: "

53、;);</p><p>  scanf("%d %d",x,y);</p><p><b>  }</b></p><p>  pop(s[x][y].data=8,x,y,s);</p><p>  F=way(x1,y1,s);

54、 /*路徑進行判斷函數*/</p><p><b>  if(F==0)</b></p><p>  cprintf("\r\n本迷宮沒有解!\n");</p><p><b>  else</b></p><p>  cprintf("\r\n本迷宮有解:\n&

55、quot;);</p><p>  cprintf("\r\npress any key to quit.\n");</p><p><b>  getch();</b></p><p><b>  }</b></p><p><b>  5 課程設計總結</b&

56、gt;</p><p>  5.1 程序運行結果 </p><p>  首先通過輸入給數組賦值,創建迷宮地圖,再輸入迷宮的入口,以及迷宮的出口,判斷迷宮是否有沒有正確的線路,如果有解,則輸出正確迷宮地圖線路。如果沒有解,則輸出無解迷宮地圖線路。</p><p><b>  。</b></p><p>  5.2 課程設計

57、體會</p><p>  通過這次數據的建立的實驗,掌握了數據結構的基本操作,也使我對數據結構實質了解更加明確,對它的一些基本操作也更加熟悉了,在實驗輸入編碼的時候要仔細,小心,耐心,我才能減少輸入編碼的錯誤。如一個小小的符號錯誤,就會導致你的編譯將不能成功。在寫代碼的時,我們要查一些資料,問同學,問老師,也增加同學與老師和同學與同學之間的友誼,使我增加了做一些事還要合作精神,更重要增加了我們的知識。在實驗中我們

58、意識到不能想當然的直接編譯執行,應當在閱讀并理解源代碼的基礎上執行,這才是我們做這個實驗的意義吧。理論與實踐結合。</p><p><b>  參考文獻 </b></p><p>  [1] 張福祥. C語言程序設計[M]. 沈陽:遼寧大學出版社,2010.1</p><p>  [2] 張福祥,王萌.C語言程序設計習題解答與實驗實訓[M].沈

59、陽:遼寧大學出版社,2010.1</p><p>  [3] 牛莉,劉遠軍等.計算機等級考試輔導教程[M].北京:中國鐵道出版社,2008</p><p><b>  致 謝</b></p><p>  在這次的課程設計的過程中,我得到了許多幫助。首先,我要感謝我們的指導老師*老師在課程設計給我們的無私的指導,提供給我們幫助和支持。這是我順利

溫馨提示

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

評論

0/150

提交評論