數據結構課程設計論文



《數據結構課程設計論文》由會員分享,可在線閱讀,更多相關《數據結構課程設計論文(31頁珍藏版)》請在裝配圖網上搜索。
1、數據結構課程設計(論文)目 魔方陣作院專學者 楊政冬信息工程學院業 信息管理與信息系統號 1314210140指導老師安強強答辯時間摘要我的實驗題目是利用數據結構相關算法來設計魔方陣,主要的功能是實 現每一行,每一列以及對角線的相加結果相同,而且每一個數字均不相等。本次實驗能夠充分的考核我們對數據結構相關算法以及 C 語言的學習程度、 動手操作能力有極大的幫助,所以本次課程設計是十分有必要的。我的設計內容就是利用幻方算法(勞伯法、斯特拉茲法、羅伯法、海爾法) 循環語句,以及判斷條件等函數的合理使用,通過不斷的運行,調試,輸出,對 本程序進行合理的解決,對魔方陣進一步的了解掌握。關鍵字:算法、C
2、語言魔方陣程序設計AbstractMy experiment topic is the use of data structure algorithms to design - the magic square, the main function is to implement each row, every column, and diagonal together in the same result, and each number are not equal.This experiment can fully conducted by our algorithms for data
3、structure and the degree of learning C language is of great help, hands-on ability, so the curriculum design is very necessary.My design content is to use magic square algorithm (rob, stern raz, rob, haier) loop, and the judgment function, such as the condition of reasonable use, through continuous
4、running, debugging, output, the reasonable solution to the program, the magic square to further grasp.Key words: magic square algorithm, C Ianguage program design1 緒論計算機是隨著社會的發展應運而生,它貫穿了人們生活的方方面面。其中, 在科學計算方面,由于算法的高精確和高復雜度,對于計算機的依賴不可言喻。 利用計算機解決實際生活問題也變得比較普遍,本次課程設計就是利用相關算法 實現人腦難以完成的計算。在這里,我設計了一個魔方陣,它在
5、古代又稱“縱橫圖”,是一個古老的智 力游戲。魔方陣的求解在理論上和應用上有著重要的價值,作為學習性的實踐, 對自己卻很重要。當前計算機軟件技術和網絡技術飛速發展,軟件系統日趨大型 化、復雜化。近年來,人們對魔方陣的探討,不再局限于趣味數學上的議題,不 少學者紛紛將魔方陣的應用融入信息安全之中,對魔方陣的研究對我們越來越重 要。1.1 課題背景及設計意義1.1.1 課題背景隨著時代的發展,計算機普遍被用于各個行業。計算機能夠快速、準確的進 行計算,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的數 字運算,計算機能夠充分發揮它的優越性。通過計算機的快速運算,實現了相關 算法,快速輸出
6、相應的魔方陣。1.1.2 研究意義數據結構課程是計算機專業最重要的基礎課之一,它主要研究分析計算機存 儲、組織數據的方式,使學生學會數據的組織方法和現實世界問題在計算機內部 的表示方法,并能針對應用問題,選擇合適的數據邏輯結構、存儲結構及其算法, 掌握解決復雜問題的程序設計方法和技術。選擇合適的數據結構更容易設計出更 高效運行或存儲效率的算法;反之,選擇了特定的算法后也需要設計合適的數據 結構與之配合,以達到最佳效果。數據的基本邏輯結構包括了集合,線性表,樹, 圖等;而串是一種特殊的線性表,它的每個節點僅由一個字符組成。計算機上的 非數值處理的對象基本上是字符串數據。在較早的程序設計語言中,字
7、符串是作 為輸入和輸出的常量出現的。隨著語言加工程序的發展,產生了字符串處理,這 樣,字符串也就作為一種變量類型出現在越來越多的程序設計語言中,產生了字 符串處理。這樣,字符串也就作為一種變量類型出現在越來越多的的程序設計語 言中,同時,也產生了一系列字符串的操作。在匯編和語言的編譯程序中,源程 序和目標程序都是字符串數據。在事務處理程序中,顧客的姓名和地址以及貨物 的名稱,產地和規格等一般也作為字符串處理。又如:信息檢索系統、文字編輯 程序、問答系統、自然語言翻譯系統、猜數字游戲、以及音樂分析程序等,都是 以字符串數據作為處理對象的。課程設計不僅僅是以實現相應的程序為目標,更重要的是在完成課
8、程設計的 過程中逐步培養今后從事軟件開發所需要的各種能力與素質。其中很重要的一種 能力就是軟件文檔的寫作能力。因此,在課程設計實施中,不僅需要完成程序并 進行測試,還需要撰寫相應的課程設計報告。課程設計報告不僅是對課程設計的 總結,也是對軟件文檔寫作能力的初步訓練。1.2 研究目的利用數據結構課程的相關知識,完成一個具有一定難度的綜合設計題目, 利用C/C+語言進行程序設計,并規范的完成課程設計報告。通過課程設計,鞏 固和加深對線性表,棧、隊列、字符串、樹、圖、查找、排序等理論知識的理解; 掌握現實復雜問題的分析建模和解決方法(包括問題描述、系統分析、設計建模、 代碼實現、結果分析等);提高利
9、用計算機分析解決綜合性問題的基本能力。1.3 課題研究的主要內容(1)本次課程設計是利用二維數組輸出正確的 n 階魔方矩陣。(2)輸入一個數字n (lWnW99),則輸出對應的n階魔方陣。1、首先判斷n的奇偶性,如果是偶數繼續判斷是單階還是雙階。2、其次利用相關算法(勞伯法、斯特拉茲法、羅伯法、海爾法),調 用相關函數。3、最后輸出魔方陣。如圖1.1就是一個3階魔方陣,各行、各列及對角線的魔數都等于152魔方陣系統需求分析2.1 系統應具備的基本功能實現每一行,每一列以及對角線的相加結果相同,并指定行的排序,排序方 法不限,排序后且能按排序后的結果保存到文件中,并且能夠下一次載入,每次 輸出一
10、個矩陣2.2 開發環境及工具2.2.1 運行環境本課題在VC6.0下運行,在這個平臺上進行程序的調試2.2.1 C 語言簡介C 語言,是一種通用的、過程式的編程語言,廣泛用于系統與應用軟件的開 發。具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程序員 中備受青睞。最近 25年是使用最為廣泛的編程語言2.2.2 for 循環語句介紹C語言中的For語句使用最為靈活,不僅可以用于循環次數已經確定的情況, 而且可以用于循環次數不確定而只給出循環結束的條件的情況下,它可以完全替 代 while 語句。for 語句的一般表達式for(v初始化; 條件表達式; 增量)語句For 語句的執行過
11、程如下:(1)最先求解初始化.(2)求解條件表達式,若其值為真,則執行 for 語句中指定的內嵌語句, 然后執行下面第(3)步。若為假,則結束循環。(3)求解增量。(4)轉回上面第(2)步驟繼續執行。(5)循環結束,執行for語句下面的一個語句。2.2.3 if 條件語句介紹訐語句是用來判定所給定的條件是否滿足,根據判定的結果(真或假)決定執行給出的兩種操作之一。C 語言提供了 3 種形式的 if 語句。訐(表達式)語句訐(表達式)語句1 else語句2訐(表達式1)語句1else訐(表達式2) 語句2else 語句 n2.3 性能需求系統必須安全可靠,數據輸出正確,出現相應的錯誤提示,不會出
12、現無故死 機狀態,速度不宜過慢。2.4 系統的可行性分析可行性分析,即用最小的代價、在盡可能短的時間內確定問題是否能夠解決。 系統的可行性分析,是針對要設計的系統,研究其設計是否存在內外部的必要條 件,包括技術上、資金上、經濟上、人力資源以及組織管理上的必要條件,同時 要分析在目前條件下是否有必要設計這樣一個統。2.4.1 技術可行性此系統對計算機硬件和軟件的需求并不高,僅需要一臺裝有 VC+6.0 、 Window 2007及以上信息服務軟件的計算機即可。一般當前學?;騻€人電腦完全 可滿足要求。2.4.2 經濟可行性由于本系統是為魔方陣,裝上該應用軟件,即可使用系統,系統成本比較低。2.4.
13、3 操作可行性操作簡單,只要按照相應的提示輸入相應的數據就可以得到想要的結果2.4.4 可行性研究結論據以上因素,本系統開發項目不僅方便快捷、高效,而且在學生中可用性強, 從而使本系統開發者相信該系統開發出來之后將取得的成功。綜上所述,此項目 在技術、操作、經濟等上是完全可行的。3概要設計31 系統設計方案系統簡要介紹:n開始/輸入數據判斷 n的值調用函數輸出魔方 陣在本課題設計中,整個系統用C語言來實現。給出數n用1n*n填滿一 個方陣(n為階數),方陣中每行、每列對角線數字之和均相等。本系統的相關 操作簡要概括如下:1、輸入符合要求的數字n(ln99)2、輸出相應的魔方陣3、可以重復輸入不
14、同的數,輸出不同的魔方陣4、輸入-1,結束程序32 系統的具體實現魔方陣實現流程圖3.2.1 魔方陣實現的主要算法1、奇數階幻方(勞伯法)奇數階幻方最經典的填法是羅伯法。填寫的方法是:把1 (或最小的數)放在第一行正中;按以下規律排列剩下的(nxn1)個數:(1) 每一個數放在前一個數的右上一格;(2) 如果這個數所要放的格已經超出了頂行那么就把它放在底行,仍然要放在 右一列;(3) 如果這個數所要放的格已經超出了最右列那么就把它放在最左列,仍然要 放在上一行;(4) 如果這個數所要放的格已經超出了頂行且超出了最右列,那么就把它放在 底行且最左列;(5) 如果這個數所要放的格已經有數填入,那么
15、就把它放在前一個數的下一行 同一列的格內。例,用該填法獲得的5階幻方:172418152357141646132022101219213111825292、雙偶數階幻方(海爾法)所謂雙偶階幻方就是當n可以被4整除時的偶階幻方,即4K階幻方。在說 解法之前我們先說明一個“互補數”定義:就是在n階幻方中,如果兩個數的和等 于幻方中最大的數與1的和(即nxn+1),我們稱它們為一對互補數。如在三階 幻方中,每一對和為10的數,是一對互補數;在四階幻方中,每一對和為17 的數,是一對互補數。雙偶數階幻方最經典的填法是海爾法。填寫的方法是:以8階幻方為例:(1)先把數字按順序填。然后,按4x4把它分割成
16、4塊(如圖)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364(2)每個小方陣對角線上的數字(如左上角小方陣部分),換成和它互補的數。64236160675795554121351501617474620214342244026273736303133323435292838392541232244451918484915145253111056858595462631三、單偶數階幻方(斯特拉茲法)所謂單偶階
17、幻方就是當n不可以被4整除時的偶階幻方,即4K+2階幻方。如(n=6,10,14)的幻方。單偶數階幻方最經典的填法是斯特拉茲法。填寫的方法是: 以10階幻方為例。這時,k=2。(1) 把魔方陣分為A, B, C, D四個象限,這樣每一個象限肯定是奇數階。用 羅伯法,依次在A象限,D象限,B象限,C象限按奇數階幻方的填法填數。(2) 在A象限的中間行、中間格開始,按自左向右的方向,標出k格。A象限 的其它行則標出最左邊的k格。將這些格,和C象限相對位置上的數互換位置。(3) 在B象限所有行的中間格,自右向左,標出k-1格。(注:6階幻方由于k 1=0,所以不用再作B、D象限的數據交換),將這些格
18、,和D象的數互換位置。4、系統的描述4.1 數據結構與數據存儲表示這方面使用二維數組nMAXMAX來靜態存儲不超過MAX行MAX列的數組方 陣,其中n(l二n=99)為滿足條件的數。4.2 功能函數主要使用與實現如下函數:Int main( ) 主函數Int si-te-la-zi( ) 利用斯特拉茲法填充矩陣Int lao-bo-er( )利用勞伯法填充矩陣Int hai-er-fa( )利用海爾法填充矩陣4.3 函數邏輯功能調用圖4.4 小結本系統王要解決設計一個nxn的方陣中填入1到n2的數子,使得每一行、 每一列、每條對角線上各個數字累加的和都相等的問題。本次課程設計內容主要 是利用二
19、維數組輸出正確的n階魔方矩陣。采用了函數調用和多種算法,實現了 魔方陣的正確輸出。本系統的缺點王要是無法判斷輸出矩陣的正確性。5、 運行環境與結果5.1 運行環境Windows 7/8系統, VC+ 6.0開發平臺。5.2 運行結果輸入奇數 3,輸出結果如圖 5-1:憶I:魔方陣4_;.+1314210140 人nM8163 574 V Z計計:魔冇陣+1914210140 +楊改餐 八“-.|9=131圖 5-1稈1E輸 果13-青輸入單階偶數 6,輸出結果如圖 5-27318304計建管+131421010 +暢誨妥tf 人 n =3G 2*魔方陣壻./法蘭二C:LJ se rsya ng
20、Deskto p閾霽構課程IS計作業D 亡 b ug壷方 l.exe杲穆區:魔方陣13-1 呂官+13142:10140+暢誡鑒 請輔人n洛35圖 5-2輸入雙階偶數 8,輸出矩陣如圖 5-3 所示:C:U se rsya ngDeskto pl據站極課程計作業D 亡 b ug 傭方 l.exe1740324149S4726342315584627352214592037 2?445260132132S4E的bl433381911G27 5M 42 31 39 18 1 0 G357 lb543325481課程站:魔方陣13值営+1314210H0 +暢曲鑒:青輸人n :圖 5-3輸入連續輸入
21、多組數字,輸出結果如圖 5-4 所示:341M1217Z11118252果程唸計;魔方陣*心 L3j百官十:窖丄010十楊:?= 青輸八屮:-15ress any key to continue 樓狗扌#咅揄人法蘭:C:LJ se rsya ngDeskto p閾霽構課程IS計作業D 亡 b ug壷方 l.exe管十丄釘転館丄犯十楊改溟3lAn:5172341M13信管十丄3丄強価丄犯十暢改各 請輸只n:3R1A3 E74 92課窄菲計:魔方陣亠2i d匹宣+1314210H0 +柿政務請輸入n : 41G2313511108976124141F;1理程唸計;魔方陣._ .圖 5-46 結束語
22、本次課程設計我選擇了一個古老的書序趣味問題魔方陣,通過我的努力 與探索,終于解決了 n 階魔方陣的算法。在編程實現的過程中,我進一步掌握和熟悉了而為數組的應用,并熟悉了將 問題分解在組裝的解決方法、函數的調用和相關算法。編程過程中,使用另外完成輸出功能的子函數 int test_print(int x, inty, in t w, in t h通過對其調用,大大節省了程序編寫的復雜度,提高了效率。在實現n階魔方陣時,遇到了一點問題 請教了同學一起進行了討論研究, 最終解決了問題。通過這次課程設計,使我們學到了一些以前沒有學過的知識,使我們對程序 設計有了更深層次的認識和理解,懂得了靈活運用。在
23、本次課程設計加深了我對 數據結構的了解,更讓我對C語言有了更好的掌握。最后,由衷的向我的指導老師表示衷心的感謝,是他的指導和要求,才使我 的課程設計有了較為完善的一面,才有了我能力的提高,并使我得到了充分的鍛 煉,同時也感謝我的同學,是他們幫助我解決了一些問題。參考文獻附錄:#include #include #includeint array100100;int init(int degree)數字確定數組的大小int i;int j;for(i=0; i=degree+1; i+)for(j=0; j=degree+1; j+)arrayij = 0;return 0;/頭文件/定義了最大
24、數組/初始化數組,根據輸入的int test_print(int x, int y, int w, int h)為原點,寬為W,高為h,這個區域的數值int i;int j;/測試用的,輸出以(x, y)for(i=y; i=y+h-1; i+)for(j=x; j=x+w-1; j+)printf(%5d ,arrayij);printf(n);int lao_bo_er(int degree, int x, int y, int num)/勞伯法 把 1(或最小的數)放在第一行正中;按以下規律排列剩下的(nXn-1)個數)int i;/(1)每一個數放在前一個數的右上一格;intj;/(2
25、)如果這個數所要放的格已經超出了頂行那么就把它放在底行,仍然要放在右一列;int k;/(3)如果這個數所要放的格已經超出了最右列那么就把它放在最左列,仍然要放在上一行;i=y;/(4)如果這個數所要放的格已經超出了頂行且超出了最右列,那么就把它放在底行且最左列;j = degree/2 + x;for(k=num; k=num+degree*degree-1; k+)arrayij = k;if(k-num+1)%degree = 0)/如果這個數所要放的格已經有數填入,那么就把它放在前一個數的下一行同一列的格內。i = (i-y+1)%degree+y;else上一格i = (i-y-1+
26、degree)%degree+y;j = (j-x+1)%degree+x;return 0;int seq_range(int degree)int i;int j;int num;num = 1;for(i=1; i=degree; i+)for(j=1; j=degree; j+)/每一個數放在前一個數的右/把數字按順序填arrayij = num+;return 0;int si_te_la_zi(int degree, int x, int y, int num)/斯特拉茲法int deg;int k;int temp;int i;int j;deg = degree/2;lao_b
27、o_er(deg, x, y, num);/用羅伯法,依次在A象限,D象限, B 象限, C 象限按奇數階幻方的填法填數lao_bo_er(deg, x+deg, y, num+2*deg*deg);lao_bo_er(deg, x, y+deg, num+3*deg*deg);lao_bo_er(deg, x+deg, y+deg, num+deg*deg);k = (degree-2)/4;for(i=1; i=deg; i+)/A象限和C象限對換數據for(j=1; j=deg+deg/2-k+3; j-)temp = arrayij;arrayij = arrayi+degj;arra
28、yi+degj=temp;for(i=j=1; j=deg/2+k; j+)/B象限和D象限對換數據temp = arrayi+deg/2j;arrayi+deg/2j = arrayi+deg+deg/2j;arrayi+deg+deg/2j=temp;return 0;/海爾法int hai_er_fa(int degree)int i;int j;int complement;int deg;seq_range(degree);complement = degree*degree+1;deg = degree/4;for(i=0; ideg; i+)/對角for(j=0; jdeg; j
29、+)線上的數字換成和它互補的數arrayi*4+1j*4+1 = complement - arrayi*4+1j*4+1;arrayi*4+1j*4+4 = complement - arrayi*4+1j*4+4;arrayi*4+4j*4+1 = complement - arrayi*4+4j*4+1;arrayi*4+4j*4+4 = complement - arrayi*4+4j*4+4;arrayi*4+2j*4+2 = complement - arrayi*4+2j*4+2;arrayi*4+2j*4+3 = complement - arrayi*4+2j*4+3;arr
30、ayi*4+3j*4+2 = complement - arrayi*4+3j*4+2;arrayi*4+3j*4+3 = complement - arrayi*4+3j*4+3;return 0;int main()int degree;int a=1;while(a)prin tf(課程設計:魔方陣n);printf(13 信管+1314210140+楊政冬n);printf(請輸入 n:);scanf(%d,°ree);init(degree);/奇數階幻方/雙偶階幻方if(degree%2 = 1)lao_bo_er(degree,1,1,1);test_print(1,1,degree,degree);else if(degree%4 = 2)si_te_la_zi(degree, 1, 1, 1);test_print(1,1,degree,degree);else/單偶階幻方hai_er_fa(degree);test_print(1,1,degree,degree);if(degree=-1)a=0;return 0;
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新DOC
最新PPT
最新RAR
- 壓力機與墊板間夾緊裝置的設計【含12張CAD圖紙+PDF圖】
- 塑料油壺蓋模具設計-注塑模具【含全套CAD圖紙+PDF圖】
- 汽車雙橫臂獨立懸架的設計【三維SW模型】【含CAD圖紙+PDF圖】
- 小孔E形硅鋼片沖壓工藝及級進模設計-沖壓模具【含12張CAD圖紙+PDF圖】
- 山楂去核機設計【含CAD圖紙+PDF圖】
- 手機外殼注射模設計【注塑模具】【含CAD圖紙+PDF圖】
- XK7130數控立式銑床設計【含全套CAD圖紙+PDF圖】
- 管道除塵機器人結構設計-履帶式【三維Solidworks建?!俊竞?0張CAD圖紙+PDF圖】
- 30#-12T型立式加工中心盤式刀庫設計【含CAD圖紙+PDF圖】
- 齒輪外齒去毛刺機設計【三維UG】【含6張CAD圖紙+PDF圖】
- 玉米秸稈粉碎機設計【全套含19張CAD圖紙+PDF圖】
- 履帶式自動行走管道機器人結構設計-吸塵除塵【三維Solidworks模型】【含16張CAD圖紙+PDF圖】
- 曲軸斜油孔回轉式鉆模夾具設計與分析【三維SW】【含5張CAD圖紙+PDF圖】
- 連接盤鑄造工藝設計【含CAD圖紙+PDF圖】
- 礦山用圓錐式破碎機設計【三維SW模型】【含CAD圖紙+PDF圖】