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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì)</p><p><b>  學(xué)生跳舞搭配</b></p><p>  課程設(shè)計(jì)名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p>  專 業(yè) 班 級(jí) : </p><p>  學(xué) 生 姓 名 : </p&g

2、t;<p>  學(xué) 號(hào) : </p><p>  指 導(dǎo) 教 師 : </p><p>  課程設(shè)計(jì)時(shí)間: </p><p>  計(jì)算機(jī)應(yīng)用技術(shù) 專業(yè)課程設(shè)計(jì)任務(wù)書</p><p><b>  需求分

3、析:</b></p><p><b>  設(shè)計(jì)內(nèi)容</b></p><p>  一班有m個(gè)女生,有n個(gè)男生(m不等于n),現(xiàn)要開一個(gè)舞會(huì). 男女生分別編號(hào)坐在舞池的兩邊的椅子上.每曲開始時(shí),依次從男生和女生中各出一人配對(duì)跳舞, 本曲沒成功配對(duì)者坐著等待下一曲找舞伴.</p><p>  請(qǐng)?jiān)O(shè)計(jì)一系統(tǒng)模擬動(dòng)態(tài)地顯示出上述過程,要求如下

4、:</p><p>  1) 輸出每曲配對(duì)情況</p><p>  2) 計(jì)算出任何一個(gè)男生(編號(hào)為X)和任意女生(編號(hào)為Y),在第K曲配對(duì)跳舞的 情況.至少求出K的兩個(gè)值.</p><p>  3) 盡量設(shè)計(jì)出多種算法及程序,可視情況適當(dāng)加分</p><p><b>  2.需求</b></p><

5、p>  本課題要對(duì)數(shù)目不等的男生女生跳舞進(jìn)行搭配,設(shè)計(jì)需要解決每一首曲子 </p><p>  男生女生的搭配情況,要采用循環(huán)隊(duì)列的模式來解決,男生和女生各在兩個(gè)循環(huán)

6、</p><p>  的隊(duì)列中,每首曲子開始,便在兩個(gè)隊(duì)首各取一人成功配對(duì)跳舞,并進(jìn)入隊(duì)尾, </p><p><b>  等待下一次配對(duì)。</b></p><p>  例如:(3男5女情況) </p><p><b>  第一首:男1和女1</b></p>&

7、lt;p><b>  第二首:男2和女2</b></p><p><b>  .........</b></p><p><b>  第四首:男1和女4</b></p><p><b>  二 概要設(shè)計(jì)</b></p><p>  1.各模塊函數(shù)介

8、紹:</p><p>  1)class cirularQueue </p><p>  作用:定義一個(gè)一個(gè)循環(huán)隊(duì)列</p><p>  2)~cirularQueue() </p><p>  作用:定義析構(gòu)函數(shù),使對(duì)象在撤銷時(shí)釋放</p><p>  3)bool IsFull() </p>

9、;<p>  作用:判斷隊(duì)列是否已滿</p><p>  4)bool IsEmpty() </p><p>  作用:判斷隊(duì)列是否為空,用于出隊(duì)列前使用</p><p>  5)void push(T info) </p><p>  作用:入隊(duì)。每對(duì)舞伴跳完舞之后,做入隊(duì)處理,到達(dá)隊(duì)尾,等待下次跳舞。</p&

10、gt;<p>  6)void Pop(T &info) </p><p>  作用:出隊(duì)。每取曲子響起時(shí)男生隊(duì)列和女生隊(duì)列作出隊(duì)處理,兩人跳舞。</p><p>  7)void GetHead(T &info) </p><p>  作用:取隊(duì)首元素,對(duì)出隊(duì)的男女進(jìn)行識(shí)別。</p><p>  8)voi

11、d Initqueue(cirularQueue<int>&,int);</p><p><b>  作用:初始化隊(duì)列</b></p><p>  9)void display(int,int);</p><p>  作用:根據(jù)男生和女生的人數(shù)和曲目的數(shù)目,來判斷每曲歌的男女配對(duì)情況</p><p>

12、  10)void charge(int,int);</p><p>  作用:判斷指定組合能否配對(duì)成功</p><p>  本程序包含三個(gè)模塊:</p><p><b>  1)主程序模塊:</b></p><p>  void main()</p><p><b>  {</b

13、></p><p><b>  初始化;</b></p><p><b>  do{</b></p><p><b>  接受命令;</b></p><p><b>  處理命令;</b></p><p>  }while(“

14、命令”=”退出”) </p><p><b>  }</b></p><p>  2)集合單元模塊——實(shí)現(xiàn)集合的各個(gè)函數(shù)模塊</p><p>  3)結(jié)點(diǎn)結(jié)構(gòu)單元模塊——定義集合的結(jié)點(diǎn)結(jié)構(gòu)</p><p><b>  3主函數(shù)調(diào)用關(guān)系圖</b></p><p><b&g

15、t;  圖main()</b></p><p><b>  4初始化示意 </b></p><p><b>  否</b></p><p>  圖void Initqueue(cirularQueue<int> &Q,int m)</p><p>  5 每曲配對(duì)函

16、數(shù)調(diào)用關(guān)系圖void display(int,int)</p><p><b>  否</b></p><p>  是 </p><p>  圖void display(int,int)</p><p>  6 第k曲配對(duì)函數(shù)調(diào)用圖void charge(int,

17、int)</p><p>  圖void charge(int,int)</p><p>  7 隊(duì)滿判斷bool IsFull()</p><p>  8 對(duì)空判斷原則bool IsEmpty()</p><p>  9 入隊(duì)流程void push(T info)</p><p>  10出隊(duì)流程void Pop(T

18、 &info)</p><p>  11取隊(duì)首元素代碼void GetHead(T &info)</p><p><b>  3.運(yùn)行環(huán)境</b></p><p><b>  軟件環(huán)境</b></p><p>  操作系統(tǒng):Windows7</p><p>&

19、lt;b>  硬件環(huán)境</b></p><p>  處理器:Intel Pentium 166MX 或更高</p><p><b>  內(nèi)存:32MB以上</b></p><p>  硬盤空間:1GB以上</p><p>  顯卡:SVGA 顯示適配</p><p>  4 開發(fā)

20、工具和編程語(yǔ)言</p><p>  Microsoft visual C++</p><p><b>  C語(yǔ)言</b></p><p><b>  5 詳細(xì)設(shè)計(jì)</b></p><p>  #include<iostream></p><p>  #includ

21、e<stdio.h></p><p>  template <class T></p><p>  class cirularQueue //定義一個(gè)一個(gè)循環(huán)隊(duì)列</p><p>  { private:</p><p>  int MaxSize;</p><p>  int front;

22、 //頭指針</p><p>  int rear; //尾指針</p><p><b>  T *data;</b></p><p><b>  public:</b></p><p>  cirularQueue(int MaxLength)</p><p>

23、  { MaxSize=MaxLength;</p><p>  front=rear=0;</p><p>  data=new T[MaxLength];</p><p><b>  }</b></p><p>  ~cirularQueue() //定義析構(gòu)函數(shù),使對(duì)象在撤銷時(shí)釋放</p><

24、;p>  { front=rear=0;</p><p>  delete []data;</p><p><b>  }</b></p><p>  void Initqueue() //隊(duì)列的申明</p><p>  { for(int i=0;i<maxSize-1;i++)</p>

25、;<p><b>  push(i);</b></p><p><b>  }</b></p><p>  bool IsFull() //判斷隊(duì)列是否已滿 </p><p>  { if((rear+1)%MaxSize==front)</p><p>  return

26、 true;</p><p>  else return false; </p><p><b>  }</b></p><p>  bool IsEmpty() //判斷隊(duì)列是否為空</p><p>  { if(front==rear)</p><p>  return tru

27、e;</p><p>  else return false;</p><p><b>  }</b></p><p>  void push(T info) //入隊(duì)</p><p>  { if(IsFull())</p><p>  { printf("錯(cuò)誤!隊(duì)列已

28、滿!");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  { data[rear]=info;</p><p>  rear=

29、(rear+1)%MaxSize;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Pop(T &info) //出隊(duì)</p><p>  { if(IsEmpty())</p><p>  {

30、 printf("錯(cuò)誤!隊(duì)列為空!");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  { info=data[front];</p&

31、gt;<p>  front=(front+1)%MaxSize;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void GetHead(T &info) //取隊(duì)首元素</p><p>  { if(IsEmp

32、ty())</p><p>  { printf("錯(cuò)誤!隊(duì)列為空!");</p><p>  exit (-1);</p><p><b>  }</b></p><p><b>  else</b></p><p>  { info=data[

33、front];</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  };</b></p><p>  void Initqueue(cirularQueue<int>&,int);</p>

34、<p>  void display(int,int);</p><p>  void charge(int,int);</p><p>  using namespace std;</p><p>  static int songnum=0; //定義歌曲的數(shù)量并初始化為0</p><p>  static int m=0,

35、n=0; //男生和女生的人數(shù) </p><p>  int main() //主函數(shù)</p><p>  { printf("請(qǐng)分別輸入男生和女生的人數(shù):");</p><p>  scanf(“%d%d”,&m,&n);</p><p>  display(m,n);&

36、lt;/p><p>  int a=0,b=0; //男生和女生的編號(hào),以判斷他們?cè)诘趲资赘钑r(shí)能在一起跳舞</p><p>  char quit='y'; //判斷是否繼續(xù)輸入,如果繼續(xù)輸入,則輸入'y';否則輸入'n'</p><p>  while(quit!='n')</p>

37、;<p>  { printf("請(qǐng)輸入男生和女生的編號(hào):");</p><p>  scanf(“%d%d”,&a,&b);</p><p>  while((a>m)||(b>n)) //如果輸入錯(cuò)誤</p><p>  { printf("輸入的編號(hào)過大,請(qǐng)重新輸入:")

38、;</p><p>  scanf(“%d%d”,&a,&b);</p><p><b>  } </b></p><p>  charge(a,b);</p><p>  printf("是否繼續(xù)(是請(qǐng)輸入'y',否則請(qǐng)輸入'n'):");</

39、p><p>  scanf(“%c”,quit);</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void Initqueue(cirularQue

40、ue<int> &Q,int m) //初始化隊(duì)列</p><p>  { for(int i=1;i<=m;i++)</p><p>  Q.push(i);</p><p><b>  }</b></p><p>  void display(int m,int n)</p&

41、gt;<p>  { cirularQueue<int> man(m+1);</p><p>  cirularQueue<int> woman(n+1);</p><p>  Initqueue(man,m);</p><p>  Initqueue(woman,n);</p><p>  Print

42、f("請(qǐng)輸入曲目數(shù):");</p><p>  scanf(“%d”,songnum);</p><p>  printf("每曲的配對(duì)情況為:");</p><p>  for(int k=1;k<=songnum;k++)</p><p>  { int x=0,y=0; //男生和女生

43、的編號(hào)</p><p>  man.Pop(x); //男生按順序出對(duì)跳舞</p><p>  woman.Pop(y); //女生按順序出對(duì)跳舞</p><p>  printf("第%d曲: %d號(hào)男生<->%d號(hào)女生",songnum,a,b); //他們?cè)谝黄鹛?lt;/p><p>

44、  man.push(x); //跳完舞后男生再次進(jìn)入隊(duì)列等在下一次跳舞</p><p>  woman.push(y); //跳完舞后男生再次進(jìn)入隊(duì)列等在下一次跳舞</p><p><b>  }</b></p><p><b>  }</b></p><p>  void charge(

45、int a,int b)</p><p>  { int count=0; //定義舞曲計(jì)數(shù)以記錄他們能在第幾曲時(shí)在一起跳舞</p><p>  cirularQueue<int> man1(m+1);</p><p>  cirularQueue<int> woman1(n+1);</p><p>  Initqu

46、eue(man1,m);</p><p>  Initqueue(woman1,n);</p><p>  while(count<=songnum)</p><p>  { int x, y;</p><p><b>  count++;</b></p><p>  man1.Pop(x

47、);</p><p>  woman1.Pop(y);</p><p>  man1.push(x);</p><p>  woman1.push(y);</p><p>  if((x==a)&&(y==b)) </p><p>  { printf"第%d首曲: %d號(hào)男生<

48、->%d號(hào)女生",songnum,a,b};</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //如果他們?cè)谶@個(gè)舞會(huì)上不能在一起跳舞,則輸出</p>

49、<p>  if(count==songnum+1)</p><p>  printf("他們?cè)谶@個(gè)舞會(huì)上不可能在一起跳舞");</p><p><b>  }</b></p><p><b>  6 調(diào)試分析</b></p><p><b>  測(cè)試中的

50、問題舉例:</b></p><p>  在測(cè)試刪除聯(lián)系人函數(shù)時(shí)發(fā)現(xiàn)無論通訊錄中現(xiàn)存多少條記錄只要?jiǎng)h除一條之后,通訊錄就會(huì)被清空,經(jīng)過檢查發(fā)現(xiàn)是刪除函數(shù)中的條件控制設(shè)置有錯(cuò),導(dǎo)致只要一刪除一個(gè)聯(lián)系人就會(huì)事頭結(jié)點(diǎn)與尾結(jié)點(diǎn)指向同一個(gè),導(dǎo)致再顯示聯(lián)系人時(shí)顯示無聯(lián)系人。經(jīng)過調(diào)整已處理好。</p><p><b>  算法改進(jìn)設(shè)想舉例:</b></p>

51、<p>  程序中還有很多地方不能很好的模擬通訊錄的功能,比如在增肌聯(lián)系人時(shí),不管原來新聯(lián)系人姓名是否已存在,都會(huì)被加入通訊錄,這樣一來就有可能重復(fù)記錄。此外在查找聯(lián)系人時(shí)只要查找到一個(gè)合法記錄就會(huì)中斷查找操作,如此有可能導(dǎo)致記錄的漏查。結(jié)合以上兩點(diǎn)應(yīng)優(yōu)化增加查找聯(lián)系人算法,在存入之間進(jìn)行防重判斷。</p><p><b>  測(cè)試結(jié)果</b></p><p&g

52、t;<b>  參考文獻(xiàn)</b></p><p>  [1]嚴(yán)蔚敏,《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》 清華大學(xué)出版社</p><p>  [2]譚浩強(qiáng).《C語(yǔ)言程序設(shè)計(jì)》(第三版) 清華大學(xué)出版社</p><p><b>  心得體會(huì)</b></p><p>  本設(shè)計(jì)采用的是循環(huán)隊(duì)列的基本操作順利的

53、解決學(xué)生舞曲搭配問題,主要利用用循環(huán)隊(duì)列的環(huán)狀結(jié)構(gòu),采用指針的移動(dòng)大大加快了程序的執(zhí)行效率。</p><p>  通過這次實(shí)驗(yàn),我發(fā)現(xiàn)自己在數(shù)據(jù)結(jié)構(gòu)這方面真是知之甚少,以前學(xué)習(xí)的知識(shí)也多有遺忘。與其說這是一次學(xué)習(xí),倒不如說這是一次檢測(cè)。所以,這次實(shí)驗(yàn)讓我很好的認(rèn)清自己對(duì)數(shù)據(jù)結(jié)構(gòu)這門課學(xué)習(xí)程度如何,知道自己哪些方面還存在不足、對(duì)該學(xué)科重視程度還不夠,以后要努力學(xué)習(xí)。對(duì)一學(xué)期的學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)通過這次實(shí)訓(xùn),雖然并沒有掌

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論