數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--漢諾塔游戲_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(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><b>  《漢諾塔游戲》</b></p><p><b>  課程設(shè)計(jì)說明書</b></p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào): </p><p>  院 系: 信息工程學(xué)院

2、 </p><p>  專 業(yè): 信息管理與信息系統(tǒng) </p><p>  班 級(jí): 信息12本1 </p><p>  指導(dǎo)教師: </p><p>  答辯時(shí)間: 年 月 日 </p><p><

3、b>  目錄</b></p><p><b>  摘要</b></p><p><b>  第一章 緒論1</b></p><p>  1. 數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介1</p><p>  2. 應(yīng)用技術(shù)領(lǐng)域及范圍1</p><p>  3. 設(shè)計(jì)的原理、方法和

4、主要內(nèi)容1</p><p>  第二章 需求分析2</p><p>  1. 漢諾塔的由來2</p><p>  2. 漢諾塔與宇宙壽命2</p><p><b>  3. 設(shè)計(jì)目的3</b></p><p><b>  4. 設(shè)計(jì)需求4</b></p&g

5、t;<p><b>  5. 問題分析4</b></p><p>  第三章 概要設(shè)計(jì)5</p><p><b>  設(shè)計(jì)思想5</b></p><p><b>  2. 實(shí)現(xiàn)方法5</b></p><p><b>  3. 主要模塊5<

6、/b></p><p><b>  4. 模塊關(guān)系5</b></p><p>  第四章 詳細(xì)設(shè)計(jì)5</p><p><b>  1. 功能設(shè)計(jì)5</b></p><p><b>  2. 算法分析6</b></p><p><b&

7、gt;  3. 編寫程序6</b></p><p>  4. 程序執(zhí)行過程分析7</p><p><b>  5. 調(diào)試分析8</b></p><p><b>  總結(jié)9</b></p><p><b>  參考文獻(xiàn)9</b></p><

8、;p><b>  摘要 </b></p><p>  隨著時(shí)代的不斷發(fā)展進(jìn)步,計(jì)算機(jī)已經(jīng)融入我們的日常生活。很多時(shí)候,很多的問題想通過人的手來親自解決已變得十分困難了,這時(shí)我們就要運(yùn)用計(jì)算機(jī)來幫我們解決這些復(fù)雜的問題。漢諾塔問題就是這類較復(fù)雜的問題。 </p><p>  漢諾塔游戲規(guī)則:有三根針A,B,C。A針上有n個(gè)盤子,盤子大小不等,大的在下,小的在上。要

9、求把這n個(gè)盤子移到C針,在移動(dòng)過程中可以借助B針,每次只允許移動(dòng)一個(gè)盤子,且在移動(dòng)過程中在三根針上的盤子都保持大盤在下,小盤在上。 </p><p>  此次,我們通過Visual C++軟件運(yùn)用遞歸算法來解決漢諾塔問題。程序運(yùn)行后會(huì)出現(xiàn)一個(gè)界面,界面上有各種操作提示,按照提示進(jìn)行各種操作后會(huì)得到漢諾塔游戲的運(yùn)行過程及結(jié)果。</p><p>  關(guān)鍵字:漢諾塔;Visual C++軟件;遞

10、歸算法</p><p><b>  Abstract</b></p><p>  With the continuous development and progress of the times, the computer has been integrated into our daily life. Most of the time, a lot of prob

11、lems through his hand to solve personally has become very difficult, then we will use the computer to help us to solve the complicated problem. Tower of Hanoi problem is this kind of complicated problem.</p><p

12、>  Tower of Hanoi game rules: three pin A, B, C. The A pin on the N plate, the plate size, the next big, small In. The requirements of these n plate moved to the C pin, in the process of moving can make use of B needl

13、e, each time only allowed to move in a plate, and in the process of moving the three needle plate to maintain the market in the next, small cap on.</p><p>  The Visual C++ software, we use a recursive algori

14、thm to solve the tower of Hanoi problem. The program to run after an interface, the interface with various operating tips, follow the prompts to perform various operations will be running process and the result of the ga

15、me.</p><p>  Keywords: Hanota; Visual C++; recursive algorithm</p><p>  漢諾塔游戲規(guī)則:有三根針A,B,C。A針上有n個(gè)盤子,盤子大小不等,大的在下,小的在上。要求把這n個(gè)盤子移到C針,在移動(dòng)過程中可以借助B針,每次只允許移動(dòng)一個(gè)盤子,且在移動(dòng)過程中在三根針上的盤子都保持大盤在下,小盤在上。 </p>

16、<p>  此次,我們通過Visual C++軟件運(yùn)用遞歸算法來解決漢諾塔問題。程序運(yùn)行后會(huì)出現(xiàn)一個(gè)界面,界面上有各種操作提示,按照提示進(jìn)行各種操作后會(huì)得到漢諾塔游戲的運(yùn)行過程及結(jié)果。</p><p>  關(guān)鍵字:漢諾塔;Visual C++軟件;遞歸算法</p><p><b>  第一章 緒論</b></p><p><b

17、>  1. 數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介</b></p><p>  數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)程序設(shè)計(jì)的重要理論設(shè)計(jì)基礎(chǔ),它不僅是計(jì)算機(jī)學(xué)科的核心課程,而且成為其他理工專業(yè)的熱門選修課。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或者存儲(chǔ)效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中計(jì)算機(jī)的操

18、作對(duì)象(數(shù)據(jù)元素)以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,而且確保經(jīng)過這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來的結(jié)構(gòu)類型?!皵?shù)據(jù)結(jié)構(gòu)”在計(jì)算機(jī)科學(xué)中是一門綜合性的專業(yè)基礎(chǔ)課。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件三者之間的一門核心課程。數(shù)據(jù)結(jié)構(gòu)這一門課的內(nèi)容不僅是一般程序設(shè)計(jì)(特別是非數(shù)值性程序設(shè)計(jì))的基礎(chǔ),而且是設(shè)計(jì)和實(shí)現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其他系統(tǒng)程序的重要基礎(chǔ)。</p><p>  2. 應(yīng)用技術(shù)領(lǐng)域及

19、范圍</p><p>  漢諾塔的應(yīng)用技術(shù)是來自于我們所學(xué)的數(shù)據(jù)知識(shí)和數(shù)學(xué)方面的學(xué)科,其中用到了數(shù)學(xué)遞歸,函數(shù)和數(shù)據(jù)的函數(shù)以及C語言等方面的知識(shí)。</p><p>  漢諾塔的領(lǐng)域是在我的日常生活中的每一個(gè)細(xì)節(jié)中,反復(fù)的運(yùn)用是我的數(shù)學(xué)知識(shí)在生活的體現(xiàn),如做歸一問題,循環(huán)問題,倒排問題,邏輯思維的相關(guān)問題等都要運(yùn)用到我悶得漢諾塔原理。</p><p>  漢諾塔的范圍

20、來自每一個(gè)知識(shí)的指導(dǎo),和生活中的運(yùn)用。在我們的世界不是一成不變的,而是時(shí)時(shí)刻刻都在發(fā)生著變化,但一切的變化都沒有脫離我們這個(gè)世界的規(guī)則。</p><p>  3.設(shè)計(jì)的原理、方法和主要內(nèi)容 </p><p>  漢諾塔的設(shè)計(jì)原理是我們所學(xué)的數(shù)據(jù)結(jié)構(gòu)與遞歸原理的應(yīng)用,并且是在數(shù)據(jù)老師的指導(dǎo)下編寫的源程序。得到了自己所設(shè)計(jì)的結(jié)果。漢諾塔的方法是把n個(gè)盤子從柱子1移到柱子3(利用柱子2),第一步

21、,把n-1個(gè)盤子從柱子1移到柱子2(利用柱子3),第二步,把柱子1剩下的最大的盤子移到柱子3,第三步,把n-1個(gè)盤子從柱子2移到柱子3(利用柱子1)。每一個(gè)的移動(dòng)都是所有的東西動(dòng),一個(gè)動(dòng)就會(huì)把所有的邏輯打亂并且得不到所要測(cè)得結(jié)果。偏離我這此所設(shè)計(jì)的初終。漢諾塔的主要內(nèi)容是經(jīng)過不斷地移動(dòng)來挪去所有的盤子到指定的位置,遞歸原理的應(yīng)用來解釋了我所用的數(shù)據(jù)的知識(shí)。一個(gè)一個(gè)的去組織去協(xié)調(diào),所有的設(shè)計(jì)不斷地在循環(huán)到達(dá)一定的次數(shù)的到我這次所設(shè)計(jì)結(jié)果。

22、 </p><p><b>  第二章 需求分析</b></p><p>  1. 漢諾塔的由來:</p><p>  漢諾塔是源自印度神話里的玩具。如下圖:</p><p> ?。▓D2-1:漢諾塔模型)</p><p>  在印度,有這么一個(gè)古老的傳說:在世界中

23、心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創(chuàng)造世界的時(shí)候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個(gè)僧侶在按照下面的法則移動(dòng)這些金片:一次只移動(dòng)一片,不管在哪根針上,小片必須在大片上面。僧侶們預(yù)言,當(dāng)所有的金片都從梵天穿好的那根針上移到另外一根針上時(shí),世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸于盡。</p><p&g

24、t;  上帝創(chuàng)造世界的時(shí)候做了三根金剛石柱子,在一根柱子上從下往上安大小順序摞著64片黃金圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動(dòng)一個(gè)圓盤。</p><p>  有預(yù)言說,這件事完成時(shí)宇宙會(huì)在一瞬間閃電式毀滅。也有人相信婆羅門至今還在一刻不停地搬動(dòng)著圓盤。</p><p>  2. 漢諾塔與宇宙壽命&

25、lt;/p><p>  如果移動(dòng)一個(gè)圓盤需要1秒鐘的話,等到64個(gè)圓盤全部重新落在一起,宇宙被毀滅是什么時(shí)候呢?</p><p>  讓我們來考慮一下64個(gè)圓盤重新摞好需要移動(dòng)多少次吧。1個(gè)的時(shí)候當(dāng)然是1次,2個(gè)的時(shí)候是3次,3個(gè)的時(shí)候就用了7次......這實(shí)在是太累了</p><p>  因此讓我們邏輯性的思考一下吧。</p><p>  4

26、個(gè)的時(shí)候能夠移動(dòng)最大的4盤時(shí)如圖所示。</p><p><b>  到此為止用了7次。</b></p><p>  接下來如下圖時(shí)用1次,在上面再放上3個(gè)圓盤時(shí)還要用7次(把3個(gè)圓盤重新放在一起需要的次數(shù))。</p><p><b>  因此,4個(gè)的時(shí)候是</b></p><p>  “3個(gè)圓盤重新

27、摞在一起的次數(shù)”+1次+“3個(gè)圓盤重新摞在一起需要的次數(shù)”</p><p>  =2x“3個(gè)圓盤重新摞在一起的次數(shù)”+1次</p><p><b>  =15次。</b></p><p><b>  那么,n個(gè)的時(shí)候是</b></p><p>  2x“(n-1)個(gè)圓盤重新摞在一起的次數(shù)”+1次。&

28、lt;/p><p>  由于1 個(gè)的時(shí)候是1次,結(jié)果n個(gè)的時(shí)候?yàn)椋?的n次方減1)次。</p><p>  1個(gè)圓盤的時(shí)候 2的1次方減1</p><p>  2個(gè)圓盤的時(shí)候 2的2次方減1 </p><p>  3個(gè)圓盤的時(shí)候 2的3次方減1</p><p>  4個(gè)圓盤的時(shí)候 2的4次方減1 </p>&

29、lt;p>  5個(gè)圓盤的時(shí)候 2的5次方減1 </p><p><b>  ........</b></p><p>  n個(gè)圓盤的時(shí)候 2的n次方減1</p><p>  假設(shè)有n片,移動(dòng)次數(shù)是f(n).顯然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。此后不難證明f(n)=2^n-1。n=64時(shí),f(64

30、)= 2^64-1=18446744073709551615 假如每秒鐘一次,共需多長時(shí)間呢?一個(gè)平年365天有 31536000 秒,閏年366天有31622400</p><p>  秒,平均每年31556952秒,計(jì)算一下,</p><p>  18446744073709551615/31556952=584554049253.855年,這表明移完這些金片需要5845億年以上,而地

31、球存在至今不過45億年,太陽系的預(yù)期壽命據(jù)說也就是數(shù)百億年。真的過了5845億年,不說太陽系和銀河系,至少地球上的一切生命,連同梵塔、廟宇等,都早已經(jīng)灰飛煙滅。</p><p>  也就是說,n=64的時(shí)候是(2的64次方減1)次。因此,如果移動(dòng)一個(gè)圓盤需要1秒的話,宇宙的壽命=2的64次方減1(秒)用一年=60秒x60分x24小時(shí)x365天來算的話,大約有5800億年吧。據(jù)說,現(xiàn)在的宇宙年齡大約是150億年,還

32、差得遠(yuǎn)呢。</p><p>  言而總之,漢諾塔問題在數(shù)學(xué)界有很高的研究價(jià)值,而且至今還在被一些數(shù)學(xué)家們所研究也是我們所喜歡玩的一種益智游戲,它可以幫助開發(fā)智力,激發(fā)我們的思維。對(duì)漢諾塔還可以有進(jìn)一步的研究。</p><p><b>  3. 設(shè)計(jì)目的</b></p><p>  課程設(shè)計(jì)是《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)必不可缺的一個(gè)重要環(huán)節(jié),它可加深學(xué)

33、生對(duì)該課程所學(xué)內(nèi)容的進(jìn)一步的理解與鞏固,是將計(jì)算機(jī)課程與實(shí)際問題相聯(lián)接的關(guān)鍵步驟。通過課程設(shè)計(jì),能夠提高學(xué)生分析問題、解決問題,從而運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的能力,因而必須給予足夠的重視。</p><p><b>  4. 設(shè)計(jì)要求</b></p><p>  1.明確課設(shè)任務(wù),復(fù)習(xí)與查閱有關(guān)資料。</p><p>  2.按要求完成課設(shè)內(nèi)容,

34、課設(shè)報(bào)告要求文字和圖工整、思路清楚、正確。</p><p>  3.一至四名同學(xué)分為一組,完成一個(gè)應(yīng)用問題的程序的編寫工作。</p><p>  4.應(yīng)用程序應(yīng)具有一定的可用性:</p><p> ?。?)凡等候用戶輸入時(shí),給出足夠的提示信息,如“Please Select(1—3):”提示用戶選擇。</p><p> ?。?)格式明顯易懂,

35、配上適當(dāng)?shù)念伾?、聲音等輔助效果,能方便地改正輸入時(shí)的錯(cuò)誤,使用戶感到方便、好用。</p><p>  (3)有聯(lián)機(jī)求助功能。用戶能直接從系統(tǒng)得到必要的提示,不查手冊(cè)也能解決一些疑難。</p><p>  5.程序具有一定的健壯性,不會(huì)因?yàn)橛脩舻妮斎脲e(cuò)誤引起程序運(yùn)行錯(cuò)誤而中斷執(zhí)行:</p><p>  (1)對(duì)輸入值的類型、大小范圍、字符串的長度等,進(jìn)行正確性檢查,對(duì)

36、不合法的輸入值給出出錯(cuò)信息,指出錯(cuò)誤類型,等待重新輸入。</p><p> ?。?)當(dāng)可能的回答有多種時(shí),應(yīng)允許輸入任何一種回答。</p><p> ?。?)對(duì)刪除數(shù)據(jù)應(yīng)給出警告。</p><p><b>  5. 問題分析:</b></p><p>  對(duì)于這樣一個(gè)問題,任何人都不可能直接寫出移動(dòng)盤子的每一步,但我們可

37、以利用下面的方法來解決:設(shè)移動(dòng)盤子數(shù)為n,為了將這n個(gè)盤子從A桿移動(dòng)到C桿,可以做以下三步:</p><p>  (1)以C盤為中介,從A桿將1至n-1號(hào)盤移至B桿;</p><p>  (2)將A桿中剩下的第n號(hào)盤移至C桿;</p><p> ?。?)以A桿為中介,從B桿將1至n-1號(hào)盤移至C桿;</p><p>  這樣,問題解決了,但實(shí)

38、際操作中,只有第二步可直接完成,而第一、三步又成為移動(dòng)的新問題。以上操作的實(shí)質(zhì)是把移動(dòng)n個(gè)盤子的問題轉(zhuǎn)化為移動(dòng)n-1個(gè)盤。那一、三步如何解決?事實(shí)上,上述方法:設(shè)盤子數(shù)為n,n可為任意數(shù),該法同樣適用于移動(dòng)n-1個(gè)盤。因此,依據(jù)上法,可解決n-1個(gè)盤子從A桿移到B桿(第一步)或從B桿移到C桿(第三步)問題?,F(xiàn)在,問題由移動(dòng)n個(gè)盤子的操作轉(zhuǎn)化為移動(dòng)n-2個(gè)盤子的操作。依據(jù)該原理,層層遞推,即可</p><p>  

39、將原問題轉(zhuǎn)化為解決移動(dòng)n-2、n-3……3、2直到移動(dòng)1個(gè)盤的操作,而移動(dòng)一個(gè)盤的操作是可以直接完成的。至此,我們的任務(wù)算作是真正完成了。而這種由繁化簡(jiǎn),用簡(jiǎn)單的問題和已知的操作運(yùn)算來解決復(fù)雜問題的方法,就是遞歸法。在計(jì)算機(jī)設(shè)計(jì)語言中,用遞歸法編寫的程序就是遞歸程序。</p><p><b>  第三章 概要設(shè)計(jì)</b></p><p><b>  1. 設(shè)

40、計(jì)思想</b></p><p>  如果盤子為1,則將這個(gè)盤子從塔座A移動(dòng)到塔座C; 如果不為1,則采用遞歸思想。</p><p>  將塔座A的前n-1個(gè)盤子借助C盤(即目的盤)移到塔座B,移后,此時(shí)C為空座,那我們就可以將塔座A的第n個(gè)盤子移到塔座C了。接下來就將塔座B的n-1個(gè)盤子借助A移到塔座C,從而完成盤子的移動(dòng)。</p><p>

41、<b>  2. 實(shí)現(xiàn)方法</b></p><p>  通過數(shù)學(xué)函數(shù)的遞歸方法調(diào)用來實(shí)現(xiàn)。</p><p><b>  3. 主要模塊</b></p><p>  Main函數(shù)實(shí)現(xiàn)函數(shù)的調(diào)用,move函數(shù)實(shí)現(xiàn)輸出,hanoi函數(shù)調(diào)用move函數(shù)實(shí)現(xiàn)移動(dòng)和最終輸出。</p><p><b>

42、  4. 模塊關(guān)系</b></p><p>  程序從Main函數(shù)開始,到main函數(shù)結(jié)束。Main函數(shù)通過調(diào)用hanoi函數(shù)來實(shí)現(xiàn)盤子的移動(dòng),然后由move函數(shù)輸出在屏幕上。</p><p><b>  第四章 詳細(xì)設(shè)計(jì)</b></p><p><b>  1. 功能設(shè)計(jì)</b></p>&l

43、t;p>  如果n=1,則將圓盤從A直接移動(dòng)到C。</p><p>  如果n=2,則:(1)將A上的n-1(等于1)個(gè)圓盤移到B上;(2)再將A上的一個(gè)圓盤移到C上;(3)最后將B上的n-1(等于1)個(gè)圓盤移到C上。</p><p>  如果n=3,則:將A上的n-1(等于2,令其為n`)個(gè)圓盤移到B(借助于C),步驟如</p><p><b&g

44、t;  下:</b></p><p>  (1)將A上的n`-1(等于1)個(gè)圓盤移到C上。</p><p>  (2)將A上的一個(gè)圓盤移到B。(3)將C上的n`-1(等于1)個(gè)圓盤移到B。(4)將A上的一個(gè)圓盤移到C。(5)將B上的n-1(等于2,令其為n`)個(gè)圓盤移到C(借助A),步驟如下:(6)將B上的n`-1(等于1)個(gè)圓盤移到A。(7)將B上的一個(gè)盤子移到C。

45、(8)將A上的n`-1(等于1)個(gè)圓盤移到C。到此,完成了三個(gè)圓盤的移動(dòng)過程。 從上面分析可以看出,當(dāng)n大于等于2時(shí), 移動(dòng)的過程可分解為三個(gè)步驟:第一步 把A上的n-1個(gè)圓盤移到B上;第二步 把A上的一個(gè)圓盤移到C上;第三步 把B上的n-1個(gè)圓盤移到C上;其中第一步和第三步是類同的。 當(dāng)n=3時(shí),第一步和第三步又分解為類同的三步,即把n`-1個(gè)圓盤從一個(gè)針移到另一個(gè)針上,這里的n`=n-1。</p><p

46、><b>  2. 算法分析</b></p><p>  本程序的主要算法是利用函數(shù)的遞歸調(diào)用算法。首先,想辦法將A座上的前n-1個(gè)盤借助C座移動(dòng)到B座上,然后將A組上的第n個(gè)盤移動(dòng)到C座上。然后再將B座上的n-1個(gè)盤借助A座移動(dòng)到C座上,此次移動(dòng)也和第一次移動(dòng)一樣,重復(fù)遞歸,直到最后一個(gè)盤為止。</p><p>  3. 編寫程序如下:</p>

47、<p>  #include <stdio.h></p><p>  void main()</p><p><b>  {</b></p><p>  void hanoi(int n,char one,char two,char three );/*對(duì)hanoi函數(shù)進(jìn)行生聲明*/</p><p>

48、;<b>  int m;</b></p><p>  printf("Please input the number of diskes:");</p><p>  scanf("%d",&m);</p><p>  printf("The step to moving %d disk

49、es :\n",m);</p><p>  hanoi(m,'A','B','C');</p><p><b>  }</b></p><p>  void hanoi(int n,char one,char two,char three) /*定義hanoi函數(shù)*/</p>

50、;<p>  /*將n個(gè)盤從one座借助two座移到three座*/</p><p><b>  {</b></p><p>  void move(char x,char y); /*對(duì)move函數(shù)的聲明*/</p><p><b>  if(n==1)</b></p>&

51、lt;p>  move(one ,three);</p><p><b>  else</b></p><p><b>  {</b></p><p>  hanoi(n-1,one,three,two);</p><p>  move(one,three);</p><p

52、>  hanoi(n-1,two,one,three);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void move(char x,char y) /*定義move函數(shù)*/</p><p><b>  {</b&g

53、t;</p><p>  printf("%c-->%c\n",x,y);</p><p><b>  getch();</b></p><p><b>  return 0;</b></p><p><b>  }</b></p>&l

54、t;p>  4. 程序執(zhí)行過程分析: </p><p><b>  5.調(diào)試分析:</b></p><p>  代碼敲完后,先進(jìn)行調(diào)試分析,找出程序中是否有錯(cuò)。若有錯(cuò)誤,關(guān)閉調(diào)試改寫編碼;若無錯(cuò)誤,按步驟執(zhí)行程序。</p><p> ?。▓D4-2:當(dāng)圓盤數(shù)為2時(shí)的運(yùn)行過程)</p><p> ?。▓D4-3:當(dāng)圓盤數(shù)

55、為3時(shí)的運(yùn)行過程)</p><p>  可以看到,結(jié)果顯示在屏幕上是正確的,設(shè)計(jì)完成。</p><p><b>  總結(jié)</b></p><p>  通過這次課程設(shè)計(jì),增加了我學(xué)習(xí)軟件技術(shù)的興趣,雖然還不明確軟件技術(shù)包含的具體內(nèi)容,但從C語言這門課程開始,到數(shù)據(jù)結(jié)構(gòu),研究算法的特性,已發(fā)現(xiàn)程序設(shè)計(jì)的樂趣,在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的過程中也學(xué)到了許多計(jì)算機(jī)

56、應(yīng)用基礎(chǔ)知識(shí),對(duì)計(jì)算機(jī)的機(jī)體也有了一個(gè)大體的了解。 </p><p>  這次課程設(shè)計(jì)是通過我們一個(gè)小組的努力所實(shí)現(xiàn)的要求。在實(shí)際操作過程中犯的一些錯(cuò)誤還會(huì)有意外的收獲,感覺很有意思。在具體操作中對(duì)這學(xué)期所學(xué)的數(shù)據(jù)結(jié)構(gòu)的理論知識(shí)得到鞏固,達(dá)到設(shè)計(jì)的基本目的,也發(fā)現(xiàn)自己的不足之處,在以后的上機(jī)中應(yīng)更加注意,同時(shí)體會(huì)到算法應(yīng)具有的語句簡(jiǎn)潔,簡(jiǎn)單易懂,可讀性高,使用靈活,執(zhí)行效率高等特點(diǎn)。發(fā)現(xiàn)上機(jī)實(shí)訓(xùn)的重要作用,特別是

57、對(duì)函數(shù)的遞歸調(diào)用有了深刻的理解。 </p><p>  通過實(shí)際操作,學(xué)會(huì)分析問題,解決問題,開發(fā)了自己的邏輯思維能力。深刻體會(huì)到“沒有做不到的,只有想不到的”,“團(tuán)結(jié)就是力量”,“實(shí)踐是檢驗(yàn)真理的標(biāo)準(zhǔn)”,“不恥下問”……的寓意。這次選取的題目比較簡(jiǎn)單,程序量也比較小,所以完成起來相對(duì)容易一些,程序使自己敲進(jìn)去的,通過一次一次的調(diào)試修正,感覺自己也進(jìn)步了不少。 </p><p>  在此希

58、望以后能多進(jìn)行這樣的訓(xùn)練,培養(yǎng)我們獨(dú)立思考問題的能力,提高實(shí)際操作水平。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1].嚴(yán)蔚敏. 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》. 清華大學(xué)出版社. 2002</p><p>  [2].熊小兵.蘇光奎漢諾塔問題的非遞歸新解法 -三峽大學(xué)學(xué)報(bào)(自然科學(xué)版)2004,26(4)</p&g

59、t;<p>  [3].崔金玲.段新濤漢諾塔問題新解 -河南機(jī)電高等??茖W(xué)校學(xué)報(bào)2006,14(1)</p><p>  [4].文盧建華 用PC匯編語言編程解決漢諾塔問題 -信息技術(shù)2003,27(6)</p><p>  [5].陳純鍇.趙曉霞.關(guān)雪梅漢諾塔問題母函數(shù)的算法分析及程序?qū)崿F(xiàn) -牡丹江師范學(xué)院學(xué)報(bào)(自然科學(xué)版)2002,""(4)</

60、p><p>  [6].李慶華.劉秀娟.王春光函數(shù)遞歸調(diào)用問題的簡(jiǎn)化讀程方法 -長春大學(xué)學(xué)報(bào)2003,13(3)</p><p>  [7].蘇仕民.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 北京:機(jī)械工業(yè)出版社.2005</p><p>  [8].Sartaj Sahni. Data Structure, Algorithms, and Application in C++. The

61、McGraw-Hill Company Inc.1998[M] (第一版) (數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用——C++語言描述.北京:機(jī)械工業(yè)出版社.1999</p><p>  [9].Willan Ford,Willian Topp. Data Structures with C++. New Jersey:Prentice Hall Inc, Adivision Simon & Schuster Compan

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論