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

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析2</b></p><p>  2.1 課程設(shè)計(jì)目的2</p><p>  2.2 課程設(shè)計(jì)任務(wù)2</p><p&g

2、t;  2.3 設(shè)計(jì)環(huán)境2</p><p>  2.4 開發(fā)語言2</p><p><b>  3 分析和設(shè)計(jì)2</b></p><p>  3.1 模塊設(shè)計(jì)2</p><p>  3.2 系統(tǒng)流程圖3</p><p>  3.3 主要模塊的流程圖7</p><p&

3、gt;  4 具體代碼實(shí)現(xiàn)11</p><p>  5 課程設(shè)計(jì)總結(jié)22</p><p>  5.1 程序運(yùn)行結(jié)果22</p><p>  5.2 課程設(shè)計(jì)體會(huì)23</p><p><b>  參考文獻(xiàn)23</b></p><p><b>  致 謝23</b>

4、</p><p><b>  1 前言</b></p><p>  本課程設(shè)計(jì)是關(guān)于數(shù)據(jù)結(jié)構(gòu)和棧道的基本操作,使用c語言編程,定義合適的數(shù)據(jù)結(jié)構(gòu),對已經(jīng)學(xué)習(xí)的c語言的指針,數(shù)據(jù)結(jié)構(gòu)和棧道加以了解。對于程序設(shè)計(jì)課程的運(yùn)用和學(xué)習(xí)。</p><p><b>  2 需求分析</b></p><p>  2

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

6、出口的路徑。要求使用C語言編程,定義合適的數(shù)據(jù)結(jié)構(gòu)。最后,需要說明設(shè)計(jì)思想,同時(shí)給出能夠運(yùn)行的源程序,并給出對應(yīng)的程序流程圖</p><p><b>  2.3 設(shè)計(jì)環(huán)境</b></p><p> ?。?)WINDOWS 2000/2003/XP/7/Vista系統(tǒng)</p><p> ?。?)Visual C++或TC集成開發(fā)環(huán)境</p&

7、gt;<p><b>  2.4 開發(fā)語言</b></p><p><b>  C語言</b></p><p><b>  3 分析和設(shè)計(jì)</b></p><p><b>  3.1 模塊設(shè)計(jì)</b></p><p>  定義SHU、MG結(jié)構(gòu)

8、體類型, 產(chǎn)生記憶效果,以及用線性鏈表來進(jìn)行地圖更改。</p><p>  typedef struct shuju{</p><p><b>  int data;</b></p><p>  int flag; /*判斷這個(gè)位置是否被走過,使其產(chǎn)生記憶效果*/</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()函數(shù),用來進(jìn)行入棧操作。</p><p&

11、gt;  定義 way() 函數(shù),用來尋找迷宮地圖正確的路徑。 /*尋找路徑函數(shù)*/</p><p><b>  3.2 系統(tǒng)流程圖</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 具體代碼實(shí)現(xiàn)</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 /*規(guī)定迷宮的行數(shù)*/</p><p>  #define N 5 /*規(guī)定迷宮的列數(shù)*/&

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

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]) /*尋找路徑函數(shù)*/</p><p>  { int x,y,f=0;</p><p>  int i1,j1;</p><p>  while(top!=NULL) /*以下是在四個(gè)方向上進(jìn)行判斷</p><p>  通就入棧,不通就進(jìn)行下

27、個(gè)方向的</p><p>  判斷,如果四個(gè)方向都不通,就出棧*/</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) /*判斷數(shù)組的下標(biāo)是否超過了規(guī)定的界限*/</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++) /*迷宮圖面,用一個(gè)數(shù)字表示*/</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); /*打印迷宮最原始的界面,用數(shù)字8表示每個(gè) } 位置*/</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輸入迷宮的入口坐標(biāo)(X,Y)\n for example input:0 0\ninput:"); /*輸入迷宮的入口坐標(biāo)(X,Y)*/</p><p>  scanf("%d %d",&x,&y);</p><p>  printf("輸入迷宮的出口坐標(biāo)(X1,Y1)\n for examp

51、le input:3 3\ninput:"); /*輸入迷宮的出口坐標(biāo)(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、 /*路徑進(jìn)行判斷函數(shù)*/</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 課程設(shè)計(jì)總結(jié)</b&

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

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

58、意識到不能想當(dāng)然的直接編譯執(zhí)行,應(yīng)當(dāng)在閱讀并理解源代碼的基礎(chǔ)上執(zhí)行,這才是我們做這個(gè)實(shí)驗(yàn)的意義吧。理論與實(shí)踐結(jié)合。</p><p><b>  參考文獻(xiàn) </b></p><p>  [1] 張福祥. C語言程序設(shè)計(jì)[M]. 沈陽:遼寧大學(xué)出版社,2010.1</p><p>  [2] 張福祥,王萌.C語言程序設(shè)計(jì)習(xí)題解答與實(shí)驗(yàn)實(shí)訓(xùn)[M].沈

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

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論