2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(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><b>  信息工程學(xué)院</b></p><p><b>  《 數(shù)據(jù)結(jié)構(gòu) 》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  題 目: 拉丁方陣 </p><p>  專 業(yè): 軟件

2、工程 </p><p>  班 級(jí): </p><p>  姓 名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p

3、><p>  時(shí) 間: </p><p><b>  摘 要</b></p><p>  拉丁方陣是一種n×n的方陣,方陣中恰有n種不同的元素,每種元素恰有n個(gè),并且每種元素在一行和一列中恰好出現(xiàn)一次。例如下圖是一個(gè)3×3的拉丁方陣:</p><p>

4、<b>  3 2 1</b></p><p><b>  2 1 3</b></p><p><b>  1 3 2</b></p><p>  如果一個(gè)拉丁方陣的第一行和第一列按照元素的先后順序來(lái)排列,那么這稱為拉丁方陣的標(biāo)準(zhǔn)型,例如下圖就是一個(gè)3x3的拉丁方陣標(biāo)準(zhǔn)型,第一行和第一列都是”1 2

5、3”。</p><p><b>  1 2 3</b></p><p><b>  2 3 1</b></p><p><b>  3 1 2</b></p><p>  編寫一個(gè)程序讀入一個(gè)方陣,判斷其是否為拉丁方陣;進(jìn)一步地,判斷是否為標(biāo)準(zhǔn)型。</p><

6、;p>  (1)輸入包含多組數(shù)據(jù)。每組數(shù)據(jù)第一行為正整數(shù)n,表示方陣的大小。其后n行,每行有n個(gè)1到n之間的整數(shù),整數(shù)之間恰有一個(gè)空格,表示方陣的內(nèi)容。輸入保證1≤n≤100輸入以n=0結(jié)束,不要處理這個(gè)數(shù)據(jù)。</p><p> ?。?)每組數(shù)據(jù)對(duì)應(yīng)于一行輸出。如果輸入是拉丁方陣,但不是標(biāo)準(zhǔn)型則輸出1;如果輸入是標(biāo)準(zhǔn)型則輸出2;如果輸入不是拉丁方陣則輸出0。</p><p> ?。?

7、)應(yīng)用“數(shù)據(jù)結(jié)構(gòu)與算法”課程知識(shí)建立該問(wèn)題的數(shù)據(jù)結(jié)構(gòu)模型;</p><p>  關(guān)鍵字:拉丁方陣 ,比較,數(shù)據(jù)結(jié)構(gòu)與算法</p><p><b>  目 錄</b></p><p>  一、課程設(shè)計(jì)的目的 ……………………………………………………</p><p>  二、設(shè)計(jì)方案的論證(背景、意義、技術(shù)路線) …………

8、…………</p><p>  三、設(shè)計(jì)實(shí)現(xiàn)過(guò)程…………………………………………………………</p><p>  四、調(diào)試運(yùn)行及結(jié)果分析 ………………………………………………</p><p>  五、測(cè)試及問(wèn)題探討 ……………………………………………………</p><p>  六、課設(shè)總結(jié)與體會(huì) …………………………………….………………<

9、;/p><p>  七、致謝……………………………………………………………………</p><p>  八、參考文獻(xiàn) ……………………………………………………………</p><p>  九、附錄 …………………………………………………………………</p><p><b>  課程設(shè)計(jì)的目的</b></p><

10、;p>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的目的是使同學(xué)們能夠根據(jù)數(shù)據(jù)對(duì)象的特性,合理的組織數(shù)據(jù)并能綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)基本知識(shí)解決實(shí)際問(wèn)題,培養(yǎng)基本的、良好的程序設(shè)計(jì)技能。</p><p>  明確題目要求、確定數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu);完成核心算法的設(shè)計(jì)、編碼與調(diào)試;準(zhǔn)備測(cè)試數(shù)據(jù),對(duì)軟件進(jìn)行測(cè)試與調(diào)試并撰寫課程設(shè)計(jì)報(bào)告;,驗(yàn)收及答辯。</p><p>  通過(guò)實(shí)踐操作,能熟練運(yùn)用C語(yǔ)言實(shí)現(xiàn)

11、邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及核心算法;掌握書寫程序設(shè)計(jì)說(shuō)明文檔的能力和工程軟件設(shè)計(jì)的基本方法。</p><p>  設(shè)計(jì)方案的論證(背景、意義、技術(shù)路線)</p><p>  據(jù)說(shuō)普魯士的腓特列大帝曾組成一支儀仗隊(duì),儀仗隊(duì)共有36名軍官,來(lái)自6支部隊(duì),每支部隊(duì)中,上校、中校、少校、上尉、中尉、少尉各一名。他希望這36名軍官排成6×6的方陣,方陣的每一行,每一列的6名軍官來(lái)自不同的部隊(duì)并且

12、軍銜各不相同。令他惱火的是,無(wú)論怎么絞盡腦汁也排不成。</p><p>  后來(lái),他去求教瑞士著名的大數(shù)學(xué)家歐拉。歐拉發(fā)現(xiàn)這是一個(gè)不可能完成的任務(wù)。</p><p>  來(lái)自n個(gè)部隊(duì)的n種軍銜的n×n名軍官,如果能排成一個(gè)正方形,每一行,每一列的n名軍官來(lái)自不同的部隊(duì)并且軍銜各不相同,那么就稱這個(gè)方陣叫正交拉丁方陣。歐拉猜測(cè)在</p><p>  n=2,

13、6,10,14,18,…</p><p>  時(shí),正交拉丁方陣不存在。然而到了上世紀(jì)60年代,人們用計(jì)算機(jī)造出了n=10的正交拉丁方陣,推翻了歐拉的猜測(cè)?,F(xiàn)在已經(jīng)知道,除了n=2,6以外,其余的正交拉丁方陣都存在,而且有多種構(gòu)造的方法。</p><p>  意義:熟悉運(yùn)用C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的運(yùn)算</p><p>  技術(shù)路線:工具WinTC</p>&

14、lt;p><b>  設(shè)計(jì)實(shí)現(xiàn)過(guò)程</b></p><p><b>  3.1 概要設(shè)計(jì)</b></p><p><b>  圖3.1-1</b></p><p><b>  圖3.1-2</b></p><p><b>  3.2 詳細(xì)

15、設(shè)計(jì)</b></p><p>  1)定義數(shù)組a[100][100]。</p><p><b>  2)輸入方陣</b></p><p>  for (i=0;i<n;i++)</p><p><b>  {</b></p><p>  for(j=0;j

16、<n;j++)</p><p>  scanf("%d",&a[i][j]);</p><p><b>  }</b></p><p><b>  輸出方陣</b></p><p>  for(i=0;i<n;i++)</p><p>

17、<b>  { </b></p><p>  printf("\n");</p><p>  for(j=0;j<n;j++)</p><p>  printf("%d",a[i][j]);</p><p><b>  }</b></p>

18、<p>  3)判斷各行是否有相等數(shù)據(jù)</p><p>  for (i=0;i<n;i++)</p><p><b>  {</b></p><p>  for (j=i;j<n;j++)</p><p><b>  {</b></p><p>  f

19、or (k=j+1;k<n;k++)</p><p><b>  {</b></p><p>  if(a[i][j]==a[i][k])</p><p><b>  {</b></p><p><b>  ch=0;</b></p><p>  

20、return ch;//行數(shù)中有相等數(shù)據(jù)返回L=0 </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p&g

21、t;  return ch;//符合數(shù)組各行無(wú)相等數(shù)據(jù)返回L=1</p><p>  4)判斷各列是否有相等數(shù)據(jù)</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  for(j=i;j<n;j++)</p><p><

22、b>  {</b></p><p>  for(k=j+1;k<n;k++)</p><p><b>  {</b></p><p>  if(a[j][i]==a[k][i])//(不無(wú)法比較相鄰的行列)</p><p><b>  {</b></p>&l

23、t;p><b>  ch=0;</b></p><p>  return ch;//列數(shù)中有相等數(shù)據(jù)返回M=0</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

24、<p><b>  }</b></p><p>  return ch;//符合數(shù)組各列無(wú)相等數(shù)據(jù)返回M=1</p><p><b>  5)判斷有序</b></p><p>  for(i=0;i<n;i++) //第一行有序 </p><p><b>  {

25、</b></p><p>  if(a[0][i]<a[0][i+1])</p><p><b>  {</b></p><p><b>  flag1=0;</b></p><p><b>  break;</b></p><p>&

26、lt;b>  }</b></p><p><b>  }</b></p><p>  for(j=0;j<n;j++) //第一列有序</p><p><b>  {</b></p><p>  if(a[j][0]<a[j+1][0])</p>

27、<p><b>  {</b></p><p><b>  flag2=0;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b><

28、/p><p>  6)判斷條件若有序情況下繼續(xù)判斷行列是否相等</p><p>  if((flag1==0)&&(flag2==0))</p><p><b>  {</b></p><p>  for (i=1;i<n;i++)</p><p><b>  {<

29、;/b></p><p>  if(a[0][i]==a[i][0])</p><p><b>  ch=0;</b></p><p>  return ch;//各行各列均有序且行與列相等返回N=0</p><p><b>  }</b></p><p><b&

30、gt;  }</b></p><p>  return ch;//行與列不相等則不是標(biāo)準(zhǔn)型返回N=1</p><p><b>  }</b></p><p>  7)輸出判斷的方陣類型</p><p>  if(k==1&&s==1)</p><p><b>

31、  {</b></p><p>  if(m==1) printf("2 ");//是拉丁方陣但不是標(biāo)準(zhǔn)拉丁方陣</p><p>  else printf("1陣");//是標(biāo)準(zhǔn)拉丁方</p><p><b>  }</b></p><p>  else print

32、f("0 ");//不是拉丁方陣</p><p><b>  調(diào)試運(yùn)行及結(jié)果分析</b></p><p><b>  圖4-1</b></p><p><b>  圖4-2</b></p><p><b>  圖4-3</b></

33、p><p><b>  圖4-4</b></p><p><b>  圖4-5</b></p><p><b>  圖4-6</b></p><p><b>  圖4-7</b></p><p><b>  圖4-8</

34、b></p><p><b>  測(cè)試及問(wèn)題探討</b></p><p>  我們是通過(guò)在主函數(shù)中輸入方陣數(shù)據(jù),并調(diào)用子函數(shù)運(yùn)行,輸出結(jié)果,來(lái)實(shí)現(xiàn)的。第一次運(yùn)行時(shí),出現(xiàn)了很多錯(cuò)誤。在我的逐條分析下,發(fā)現(xiàn)很多是語(yǔ)法錯(cuò)誤。例如在語(yǔ)句后面沒(méi)有加“;”,或是在輸出的部分弄錯(cuò)了字符的表示格式等錯(cuò)誤。我便仔細(xì)查看,一一改正過(guò)來(lái)。</p><p>  

35、開始時(shí),我所編寫的程序,不能判斷當(dāng)輸入的數(shù)大于n的情況。編寫不符合要,我在主函數(shù)中添加了一條比較語(yǔ)句,得以實(shí)現(xiàn)。</p><p>  在編程序之前,我不知該如何實(shí)現(xiàn)方陣的排列,找到了C語(yǔ)言的課本,然后決定用二維數(shù)組來(lái)實(shí)現(xiàn),在對(duì)方陣進(jìn)行判斷時(shí),由于if語(yǔ)句比較多,運(yùn)行時(shí)發(fā)現(xiàn)與要求不符,便重新對(duì)if語(yǔ)句進(jìn)行排序,嵌套等操作,最終得以實(shí)現(xiàn)</p><p><b>  課設(shè)總結(jié)與體會(huì)&l

36、t;/b></p><p>  通過(guò)這次課設(shè)我學(xué)會(huì)了如何利用C語(yǔ)言數(shù)組,在C語(yǔ)言的環(huán)境下實(shí)現(xiàn)方陣的形成,比較和判斷,拉丁方陣具有悠久的歷史,用現(xiàn)代的計(jì)算機(jī)編程語(yǔ)言,通過(guò)數(shù)據(jù)結(jié)構(gòu)進(jìn)行實(shí)現(xiàn)。</p><p>  在數(shù)據(jù)結(jié)構(gòu)的課堂上有關(guān)數(shù)組我們學(xué)過(guò)了很多,例如:數(shù)組的定義。有關(guān)方陣,矩陣,我們也學(xué)過(guò)了很多例如方陣,矩陣的存儲(chǔ)等知識(shí),在這節(jié)課程設(shè)計(jì)之前,我花費(fèi)了一些時(shí)間看書上的這些內(nèi)容,以便

37、我能更好的進(jìn)行課程設(shè)計(jì)。</p><p>  這節(jié)課程設(shè)計(jì)不僅讓我們鞏固數(shù)據(jù)結(jié)構(gòu)了知識(shí),還讓我們對(duì)C語(yǔ)言編程的實(shí)現(xiàn),及語(yǔ)法進(jìn)行了很好的鞏固。不僅如此,也增強(qiáng)了我們的編程調(diào)試的能力,讓我們能熟練的來(lái)運(yùn)用C語(yǔ)言環(huán)境的各種工具。</p><p><b>  七、致謝</b></p><p>  在這次課程設(shè)計(jì)中,我要感謝我的課程設(shè)計(jì)老師幫助我完成了這

38、次的課程設(shè)計(jì),在許多技術(shù)性的問(wèn)題上給予我?guī)椭?,在設(shè)計(jì)過(guò)程中給了我很多的意見(jiàn)和建議,在調(diào)試的時(shí)候也幫助我,把一些不晚上的想法完善了。</p><p>  還有,我要感謝我的同學(xué)們,在最早的選題時(shí),都是同學(xué)們幫助我,geile我很多建議。</p><p>  最后我要感謝我的學(xué)校,給我們提供了一個(gè)良好的課程設(shè)計(jì)環(huán)境,在這次課設(shè)中我學(xué)到了很多,得到了很多,所以我還要再次感謝這些我要感謝的人<

39、;/p><p><b>  八、參考文獻(xiàn)</b></p><p>  [1] 王昆侖,李紅. 數(shù)據(jù)結(jié)構(gòu)與算法. 北京:中國(guó)鐵道出版社,2006年5月。</p><p>  [2] 胡學(xué)鋼. 數(shù)據(jù)結(jié)構(gòu)與算法指導(dǎo).北京:清華大學(xué)出版社,1999。</p><p>  [3] 胡學(xué)鋼. 數(shù)據(jù)結(jié)構(gòu).北京:高等教育出版社,2006。&

40、lt;/p><p>  [4]王紅梅,胡明,王濤編著.數(shù)據(jù)結(jié)構(gòu)(C++版). 北京:清華大學(xué)出版社,2005.7.</p><p>  [5]譚浩強(qiáng)編著.C++面向?qū)ο蟪绦蛟O(shè)計(jì).北京:清華大學(xué)出版社,2006.1.</p><p><b>  九,附錄</b></p><p><b>  源程序:</b>

41、;</p><p>  #include "stdio.h"</p><p>  #include"stdlib.h"</p><p>  int panduan1(int a[100][100],int n)//判斷各行是否有相等數(shù)</p><p>  {int ch=1;int i,j,k;<

42、/p><p>  for (i=0;i<n;i++)</p><p><b>  {</b></p><p>  for (j=0;j<n;j++)</p><p><b>  {</b></p><p>  for (k=j+1;k<n;k++)</p&

43、gt;<p><b>  {</b></p><p>  if(a[i][j]==a[i][k])</p><p>  {ch=0;return ch;}//行數(shù)有相等 k=0 </p><p><b>  }</b></p><p><b>  }</b><

44、;/p><p><b>  } </b></p><p>  return ch;//符合數(shù)組各行不相等返回 K=1</p><p><b>  }</b></p><p>  int panduan2(int a[100][100],int n)//判斷各列是否有相等數(shù)</p><

45、p>  {int ch=1; </p><p>  int i,j,k;</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  for(j=0;j<n;j++)</p><p><b>  {</b>

46、;</p><p>  for(k=j+1;k<n;k++)</p><p><b>  {</b></p><p>  if(a[j][i]==a[k][i])</p><p>  {ch=0;return ch;}//列數(shù)有相等 s=0</p><p><b>  }<

47、/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return ch;//符合數(shù)組各列不相等返回 S=1</p><p><b>  }</b></p><p>  int panduan3

48、(int a[100][100],int n)//判斷首行首列是否相等</p><p><b>  {</b></p><p>  int ch=1,flag1=1,flag2=1;int i,j;</p><p>  for(i=0;i<n;i++) //第一行有序</p><p>  if(a[0][

49、i]<a[0][i+1])</p><p>  {flag1=0;break;}</p><p>  for(j=0;j<n;j++) //第一列有序</p><p>  if(a[j][0]<a[j+1][0])</p><p>  {flag2=0;break;}</p><p>  i

50、f(flag1==0&&flag2==0)</p><p><b>  {</b></p><p>  for (i=1;i<n;i++)</p><p><b>  {</b></p><p>  if(a[0][i]==a[i][0])//有序且行列相等 m=0</p

51、><p>  ch=0;return ch;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return ch;//不相等不是標(biāo)準(zhǔn) m=1</p><p><b>  }</b></p>&

52、lt;p>  void main() </p><p><b>  {</b></p><p>  int n,i,j;</p><p>  int k,s,m;</p><p>  int a[100][100];</

53、p><p>  printf("請(qǐng)輸入方陣階數(shù):\n");</p><p>  scanf("%d",&n);</p><p>  if(n<=1||n>=100)</p><p>  {printf("此數(shù)據(jù)不符合要求\n");</p><p&g

54、t;<b>  }</b></p><p><b>  else</b></p><p>  {printf("輸入矩陣的數(shù)據(jù)%d個(gè)\n",n*n);</p><p>  k=panduan1(a,n);</p><p>  for (i=0;i<n;i++)</p&

55、gt;<p><b>  {</b></p><p>  for(j=0;j<n;j++)</p><p>  scanf("%d",&a[i][j]);</p><p>  if(a[i][j]>n)</p><p><b>  {k=0;</b&g

56、t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(i=0;i<n;i++)</p><p>  { printf("\n");</p><p>  for(j=0;j<n;j++)

57、</p><p>  printf("%d",a[i][j]);</p><p><b>  }</b></p><p>  s=panduan2(a,n);</p><p>  m=panduan3(a,n);</p><p>  printf("\n%d %d %

58、d\n",k,s,m);</p><p>  if(k==1&&s==1)</p><p><b>  {</b></p><p><b>  if(m==0)</b></p><p>  {printf("\n2:此方陣是標(biāo)準(zhǔn)拉丁方陣");}</

59、p><p><b>  else </b></p><p>  {printf("\n1:此方陣是拉丁方陣!");}</p><p><b>  }</b></p><p><b>  else </b></p><p>  {print

溫馨提示

  • 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)論