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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)》實(shí)踐教學(xué)環(huán)節(jié)任務(wù)書(shū)</p><p>  -----校園交通導(dǎo)游系統(tǒng)</p><p><b>  目的:</b></p><p>  通過(guò)布置具有一定難度的實(shí)際程序設(shè)計(jì)項(xiàng)目,使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和操作實(shí)現(xiàn)算法,以及它們?cè)诔绦蛑械氖褂梅椒?;使學(xué)生掌握分析問(wèn)題,求解

2、問(wèn)題的方法并提高學(xué)生設(shè)計(jì)編程實(shí)現(xiàn)的能力。</p><p><b>  2、要求:</b></p><p><b>  基本要求:</b></p><p>  要求利用C\C++語(yǔ)言來(lái)完成系統(tǒng)的設(shè)計(jì); </p><p>  突出C語(yǔ)言的函數(shù)特征(以多個(gè)函數(shù)實(shí)現(xiàn)每一個(gè)子功能)或者C++語(yǔ)言面向?qū)ο蟮木幊?/p>

3、思想;</p><p><b>  畫(huà)出功能模塊圖;</b></p><p>  進(jìn)行簡(jiǎn)單界面設(shè)計(jì),能夠?qū)崿F(xiàn)友好的交互;</p><p>  具有清晰的程序流程圖和數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義;</p><p>  熟練掌握C語(yǔ)言或者C++語(yǔ)言的各種操作。</p><p><b>  創(chuàng)新要求:&

4、lt;/b></p><p>  在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如系統(tǒng)用戶功能控制,改進(jìn)算法的實(shí)現(xiàn),實(shí)現(xiàn)友好的人機(jī)交互等等 </p><p><b>  設(shè)計(jì)流程圖</b></p><p><b>  菜單顯示:</b></p><p>  數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義:</p>&l

5、t;p><b>  1、頂點(diǎn)定義:</b></p><p>  typedef struct </p><p><b>  {</b></p><p>  VertexType vex[NUM];</p><p>  ArcCell arcs[NUM][NU

6、M];</p><p>  int vexnum,arcnum;</p><p>  }MGraph; </p><p><b>  2、路徑長(zhǎng)度:</b></p><p>  typedef struct ArcCell</p><p><b>  {</b></p

7、><p><b>  int adj; </b></p><p><b>  }ArcCell;</b></p><p>  3、頂點(diǎn)存放的信息:</p><p>  typedef struct VertexType </p><p><b>  {</b>

8、;</p><p>  int number; </p><p>  char *sight; </p><p>  char *description;</p><p>  }VertexType;</p><p><b>  詳細(xì)程序清單:</b></p><p> 

9、 #include <string.h></p><p>  #include <stdio.h> </p><p>  #include <malloc.h></p><p>  #include <stdlib.h></p><p>  #define Max 20000</p>

10、<p>  #define NUM 9</p><p>  typedef struct ArcCell</p><p><b>  {</b></p><p><b>  int adj; </b></p><p><b>  }ArcCell;</b><

11、/p><p>  typedef struct VertexType </p><p><b>  {</b></p><p>  int number; </p><p>  char *sight; </p><p>  char *description;</p><p&g

12、t;  }VertexType; </p><p>  typedef struct</p><p><b>  {</b></p><p>  VertexType vex[NUM];</p><p>  ArcCell arcs[NUM][NUM];</p><p>  int vexnum

13、,arcnum;</p><p>  }MGraph; </p><p>  MGraph G; </p><p>  int P[NUM][NUM]; </p><p>  long int D[NUM]; </p><p>  int x[9]={0};</p><p>  void

14、 CreateUDN(int v,int a);</p><p>  void narrate(); </p><p>  void ShortestPath(int num);</p><p>  void output(int sight1,int sight2);</p><p>  char Menu(); </p>

15、<p>  void search(); </p><p>  char SearchMenu(); </p><p>  void HaMiTonian(int); </p><p>  void NextValue(int); </p><p>  void display();</p>&l

16、t;p>  int main()</p><p><b>  {</b></p><p>  int v0,v1;</p><p><b>  char ck;</b></p><p>  CreateUDN(NUM,11);</p><p><b>  do

17、</b></p><p><b>  { </b></p><p>  ck=Menu();</p><p>  switch(ck)</p><p><b>  {</b></p><p><b>  case '1':</b&g

18、t;</p><p>  system("cls");</p><p>  // narrate();</p><p>  printf("\n\n\t\t\t請(qǐng)選擇起點(diǎn)景點(diǎn)(0~8):");</p><p>  scanf("%d",&v0);</p><

19、;p>  printf("\t\t\t請(qǐng)選擇終點(diǎn)景點(diǎn)(0~8):");</p><p>  scanf("%d",&v1);</p><p>  ShortestPath(v0); </p><p>  output(v0,v1); </p><p>  printf("\

20、n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p><p>  getchar();</p><p>  getchar();</p><p><b>  break;</b></p><p>  case '2':search();</p><p><b

21、>  break;</b></p><p><b>  case '3':</b></p><p>  system("cls");</p><p>  //narrate();</p><p><b>  x[0]=1; </b></p

22、><p>  HaMiTonian(1);</p><p>  printf("\n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p><p>  getchar();</p><p>  getchar();</p><p><b>  break;</b></p&

23、gt;<p><b>  };</b></p><p>  }while(ck!='e');</p><p><b>  }</b></p><p>  char Menu() </p><p><b>  {</b></p><

24、;p><b>  char c;</b></p><p><b>  int flag;</b></p><p><b>  do{</b></p><p><b>  flag=1;</b></p><p>  system("cls&q

25、uot;);</p><p>  narrate();</p><p>  printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");</p><p>  printf("\t\t\t┃ ┃\n");</p><p>  pri

26、ntf("\t\t\t┃ 1、查詢景點(diǎn)路徑 ┃\n");</p><p>  printf("\t\t\t┃ 2、查詢景點(diǎn)信息 ┃\n");</p><p>  printf("\t\t\t┃ 3、推薦參觀路線 ┃\n");</p><

27、;p>  printf("\t\t\t┃ e、退出 ┃\n");</p><p>  printf("\t\t\t┃ ┃\n");</p><p>  printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");&

28、lt;/p><p>  printf("\t\t\t\t請(qǐng)輸入您的選擇:");</p><p>  scanf("%c",&c);</p><p>  if(c=='1'||c=='2'||c=='3'||c=='e')</p><p>

29、;<b>  flag=0;</b></p><p>  }while(flag);</p><p><b>  return c;</b></p><p><b>  }</b></p><p>  char SearchMenu() </p><p>

30、;<b>  {</b></p><p><b>  char c;</b></p><p><b>  int flag;</b></p><p><b>  do{</b></p><p><b>  flag=1;</b><

31、;/p><p>  system("cls");</p><p>  narrate();</p><p>  printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");</p><p>  printf("\t\t\t┃

32、 ┃\n");</p><p>  printf("\t\t\t┃ 1、按照景點(diǎn)編號(hào)查詢 ┃\n");</p><p>  printf("\t\t\t┃ 2、按照景點(diǎn)名稱查詢 ┃\n");</p><p>  printf("\t\t\t┃ e、返回

33、 ┃\n");</p><p>  printf("\t\t\t┃ ┃\n");</p><p>  printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");</p><p>  printf("\t\t\t\t

34、請(qǐng)輸入您的選擇:");</p><p>  scanf("%c",&c);</p><p>  if(c=='1'||c=='2'||c=='e')</p><p><b>  flag=0;</b></p><p>  }while(

35、flag);</p><p><b>  return c;</b></p><p><b>  }</b></p><p>  void search() </p><p><b>  {</b></p><p><b>  int num;

36、</b></p><p><b>  int i;</b></p><p><b>  char c;</b></p><p>  char name[20];</p><p><b>  do</b></p><p><b>  

37、{</b></p><p>  system("cls");</p><p>  c=SearchMenu();</p><p>  switch (c)</p><p><b>  {</b></p><p>  case '1': </p&

38、gt;<p>  system("cls");</p><p>  narrate();</p><p>  printf("\n\n\t\t請(qǐng)輸入您要查找的景點(diǎn)編號(hào):");</p><p>  scanf("%d",&num);</p><p>  for(i

39、=0;i<NUM;i++)</p><p><b>  {</b></p><p>  if(num==G.vex[i].number)</p><p><b>  {</b></p><p>  printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p

40、><p>  printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p>  printf("\n\t\t\t按任意鍵返回...");</p><p>  getchar();</p><p>  getchar();</p><

41、;p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(i==NUM)</p><p><b>  {</b></p><p>  pr

42、intf("\n\n\t\t\t沒(méi)有找到!");</p><p>  printf("\n\n\t\t\t按任意鍵返回...");</p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b></p>&l

43、t;p><b>  break;</b></p><p><b>  case '2':</b></p><p>  narrate();</p><p>  system("cls");</p><p>  printf("\n\n\t\t請(qǐng)輸入

44、您要查找的景點(diǎn)名稱:");</p><p>  scanf("%s",name);</p><p>  for(i=0;i<NUM;i++)</p><p><b>  {</b></p><p>  if(!strcmp(name,G.vex[i].sight))</p>

45、<p><b>  {</b></p><p>  printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p><p>  printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p>  printf("\n

46、\t\t\t按任意鍵返回...");</p><p>  getchar();</p><p>  getchar();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b&

47、gt;</p><p>  if(i==NUM)</p><p><b>  {</b></p><p>  printf("\n\n\t\t\t沒(méi)有找到!");</p><p>  printf("\n\n\t\t\t按任意鍵返回...");</p><p&g

48、t;  getchar();</p><p>  getchar();</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  }while(c!='e

49、');</p><p><b>  }</b></p><p>  void CreateUDN(int v,int a)</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  G.ve

50、xnum=v; </p><p>  G.arcnum=a;</p><p>  for(i=0;i<G.vexnum;++i) G.vex[i].number=i;</p><p>  G.vex[0].sight="行政樓";</p><p>  G.vex[0].description="學(xué)校領(lǐng)導(dǎo),辦

51、公室之地。";</p><p>  G.vex[1].sight="小禮堂";</p><p>  G.vex[1].description="業(yè)余活動(dòng),舉辦各種晚會(huì)。";</p><p>  G.vex[2].sight="11教";</p><p>  G.vex[2]

52、.description="教室,自習(xí)室";</p><p>  G.vex[3].sight="10教";</p><p>  G.vex[3].description="教室,自習(xí)室";</p><p>  G.vex[4].sight="圖書(shū)館";</p><p

53、>  G.vex[4].description="閱覽,借閱圖書(shū)";</p><p>  G.vex[5].sight="北食堂";</p><p>  G.vex[5].description="餐飲休閑";</p><p>  G.vex[6].sight="荷花池";<

54、/p><p>  G.vex[6].description="休閑,放松心情";</p><p>  G.vex[7].sight="南食堂";</p><p>  G.vex[7].description="餐飲休閑";</p><p>  G.vex[8].sight="宿

55、舍";</p><p>  G.vex[8].description="休息";</p><p>  for(i=0;i<G.vexnum;++i)</p><p>  for(j=0;j<G.vexnum;++j)</p><p>  G.arcs[i][j].adj=Max;</p>

56、<p>  G.arcs[0][1].adj=G.arcs[1][0].adj=12;</p><p>  G.arcs[0][2].adj=G.arcs[2][0].adj=6;</p><p>  G.arcs[0][3].adj=G.arcs[3][0].adj=5;</p><p>  G.arcs[1][4].adj=G.arcs[4][1].

57、adj=11;</p><p>  G.arcs[2][4].adj=G.arcs[4][2].adj=2;</p><p>  G.arcs[3][5].adj=G.arcs[5][3].adj=4;</p><p>  G.arcs[5][7].adj=G.arcs[7][5].adj=9;</p><p>  G.arcs[4][6].

58、adj=G.arcs[6][4].adj=2;</p><p>  G.arcs[4][7].adj=G.arcs[7][4].adj=14;</p><p>  G.arcs[6][8].adj=G.arcs[8][6].adj=7;</p><p>  G.arcs[7][8].adj=G.arcs[8][7].adj=3;</p><p&g

59、t;<b>  }</b></p><p>  void narrate()</p><p><b>  {</b></p><p>  int i,k=0;</p><p>  printf("\n\t\t***************軟工移動(dòng)應(yīng)用開(kāi)發(fā)2班 胡俊凱**********

60、*****\n");</p><p>  printf("\n\t\t*****************學(xué)號(hào):1115115645***************\n");</p><p>  printf("\n\t\t*****************歡迎使用校園導(dǎo)游程序***************\n");</p>&l

61、t;p>  printf("\t__________________________________________________________________\n");</p><p>  printf("\t\t景點(diǎn)名稱\t\t|\t景點(diǎn)描述\n");</p><p>  printf("\t_________________

62、_______________|_________________________________\n");</p><p>  for(i=0;i<NUM;i++)</p><p><b>  {</b></p><p>  printf("\t (%2d)%-10s\t\t\t|\t%-25s\n",i,

63、G.vex[i].sight,G.vex[i].description);</p><p><b>  k=k+1;</b></p><p><b>  }</b></p><p>  printf("\t________________________________|_____________________

64、____________\n");</p><p><b>  }</b></p><p>  void ShortestPath(int num)</p><p><b>  {</b></p><p>  int v,w,i,t; </p><p>  int

65、final[NUM];</p><p><b>  int min;</b></p><p>  for(v=0;v<NUM;v++)</p><p><b>  {</b></p><p>  final[v]=0; </p><p>  D[v]=G.arcs[nu

66、m][v].adj;</p><p>  for(w=0;w<NUM;w++)</p><p>  P[v][w]=0;</p><p>  if(D[v]<20000) </p><p><b>  {</b></p><p>  P[v][num]=1;</p>&l

67、t;p>  P[v][v]=1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  D[num]=0;</b></p><p>  final[num]=1; </p><p>  

68、for(i=0;i<NUM;++i) </p><p><b>  {</b></p><p>  min=Max; </p><p>  for(w=0;w<NUM;++w)</p><p>  if(!final[w]) </p><p>  if(D[w]<

69、min) </p><p><b>  {</b></p><p><b>  v=w;</b></p><p><b>  min=D[w];</b></p><p><b>  }</b></p><p>  final[v]

70、=1; </p><p>  for(w=0;w<NUM;++w) </p><p>  if(!final[w]&&((min+G.arcs[v][w].adj)<D[w]))</p><p><b>  {</b></p><p>  D[w]=min+G.arcs[v][w].adj;

71、</p><p>  for(t=0;t<NUM;t++)</p><p>  P[w][t]=P[v][t];</p><p>  P[w][w]=1;</p><p><b>  }</b></p><p><b>  }</b></p><p&

72、gt;<b>  }</b></p><p>  void output(int sight1,int sight2) </p><p><b>  {</b></p><p>  int a,b,c,d,q=0;</p><p>  a=sight2; </p><p&

73、gt;  if(a!=sight1) </p><p><b>  {</b></p><p>  printf("\n\t從%s到%s的最短路徑是",G.vex[sight1].sight,G.vex[sight2].sight);</p><p>  printf("\t(最短距離為 %dm.)\n\n\t

74、",D[a]); </p><p>  printf("\t%s",G.vex[sight1].sight); </p><p>  d=sight1; </p><p>  for(c=0;c<NUM;++c)</p><p><b>  {</b></p>

75、<p>  gate:; </p><p>  P[a][sight1]=0;</p><p>  for(b=0;b<NUM;b++)</p><p><b>  {</b></p><p>  if(G.arcs[d][b].adj<20000&&P[a][b]) &

76、lt;/p><p><b>  {</b></p><p>  printf("-->%s",G.vex[b].sight); </p><p>  q=q+1; </p><p>  P[a][b]=0;</p><p><b>  d=b; <

77、/b></p><p>  if(q%8==0) printf("\n");</p><p>  goto gate;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</

78、b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void HaMiTonian(int m) </p><p><b>  {</b></p><p>  if(m>8) ret

79、urn; </p><p>  L: NextValue(m); </p><p>  if(x[m]==0) </p><p><b>  return; </b></p><p>  if(m==7&&G.arcs[0][x[8]-1].adj!=20000) </p><

80、;p>  display(); </p><p><b>  else </b></p><p>  HaMiTonian(m+1); </p><p>  goto L; </p><p><b>  }</b></p><p>  void NextVa

81、lue(int k) </p><p><b>  { </b></p><p><b>  int j; </b></p><p>  l:x[k]=(x[k]+1)%10; </p><p>  if(x[k]==0) </p><p><b>  r

82、eturn; </b></p><p>  if(G.arcs[x[k-1]-1][x[k]-1].adj!=20000) </p><p><b>  { </b></p><p>  for(j=0;j<k;j++) </p><p>  if(x[j]==x[k]) </p>

83、<p><b>  goto l; </b></p><p>  return; </p><p><b>  } </b></p><p><b>  else </b></p><p>  goto l; </p>&l

84、t;p><b>  } </b></p><p>  void display() </p><p><b>  { </b></p><p><b>  int i=0;</b></p><p>  printf("\n\n\t");</

85、p><p>  for(i=0;i<8;i++) </p><p>  printf("%s->",G.vex[x[i]-1].sight); </p><p>  printf("出口");</p><p>  printf("\n");</p><

86、p><b>  } </b></p><p><b>  總結(jié):</b></p><p>  本次課程設(shè)計(jì)使我得到了鍛煉,學(xué)到了許多東西。書(shū)本上學(xué)到的知識(shí)在課程設(shè)計(jì)中得到了實(shí)踐,鞏固了自己學(xué)習(xí)的知識(shí)。對(duì)圖的應(yīng)用與理解也有了很大的提高,同時(shí)體會(huì)到了數(shù)據(jù)結(jié)構(gòu)的作用,鍛煉了自己C語(yǔ)言的編程能力。在課程設(shè)計(jì)中,我也發(fā)現(xiàn)了自身不足,希望自己能夠在總

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論