c語言課程設(shè)計(jì)--矩陣問題_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)(論文)</b></p><p>  題 目 名 稱 矩陣問題 </p><p>  課 程 名 稱 C語言程序課程設(shè)計(jì) </p><p>  學(xué) 生 姓 名

2、 </p><p>  學(xué) 號(hào) </p><p>  系 、專 業(yè) 信息工程系、網(wǎng)絡(luò)工程專業(yè) </p><p>  指 導(dǎo) 教 師 </p><p>  2013年

3、 6月 6 日</p><p><b>  目 錄</b></p><p><b>  1 前言2</b></p><p><b>  2 需求分析2</b></p><p>  2.1 課程設(shè)計(jì)目的2</p><p>  2.2 課程設(shè)計(jì)任務(wù)2

4、</p><p>  2.3 設(shè)計(jì)環(huán)境2</p><p>  2.4 開發(fā)語言2</p><p><b>  3 分析和設(shè)計(jì)2</b></p><p>  3.1 模塊設(shè)計(jì)2~3</p><p>  3.2 系統(tǒng)流程圖3</p><p>  3.3 主要模塊的流程

5、圖4~10</p><p>  4 具體代碼實(shí)現(xiàn)11~16</p><p>  5 課程設(shè)計(jì)總結(jié)16</p><p>  5.1 程序運(yùn)行結(jié)果 / 預(yù)期運(yùn)行結(jié)果16~17</p><p>  5.2 課程設(shè)計(jì)體會(huì)17~18</p><p><b>  參考文獻(xiàn)18</b></p&

6、gt;<p><b>  致 謝18</b></p><p><b>  1 前言</b></p><p>  從C語言產(chǎn)生到現(xiàn)在,它已經(jīng)成為最重要和最流行的編程語言之一。在各種流行編程語言中,都能看到C語言的影子,如Java的語法與C語言基本相同。所以可以看出學(xué)習(xí)C語言的重要性。我們在c語言課程中學(xué)習(xí)了矩陣的的運(yùn)用,在本次課程

7、設(shè)計(jì)中我們需要編寫一個(gè)程序存放一個(gè)5*5的矩陣,然后通過調(diào)用兩個(gè)函數(shù)找到該矩陣的鞍點(diǎn)和最大最小值。</p><p><b>  2 需求分析</b></p><p>  2.1 課程設(shè)計(jì)目的</p><p>  學(xué)生在教師指導(dǎo)下運(yùn)用所學(xué)課程的知識(shí)來研究、解決一些具有一定綜合性問題的專業(yè)課題。通過課程設(shè)計(jì)(論文),提高學(xué)生綜合運(yùn)用所學(xué)知識(shí)來解決實(shí)

8、際問題、使用文獻(xiàn)資料、及進(jìn)行科學(xué)實(shí)驗(yàn)或技術(shù)設(shè)計(jì)的初步能力,為畢業(yè)設(shè)計(jì)(論文)打基礎(chǔ)。</p><p>  2.2 課程設(shè)計(jì)任務(wù)</p><p>  已知一個(gè)5×5矩陣,用函數(shù)實(shí)現(xiàn):(1)找出該矩陣中的鞍點(diǎn),“鞍點(diǎn)”指的是一個(gè)位置,該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點(diǎn)。(2)將矩陣中最大的元素放在中心,四個(gè)角分別放四個(gè)最小的元素(按從左到右,從上到下順序依次從小

9、到大存放)。</p><p><b>  2.3 設(shè)計(jì)環(huán)境</b></p><p> ?。?)WINDOWS 2000/2003/XP/7/Vista系統(tǒng)</p><p> ?。?)Visual C++或TC集成開發(fā)環(huán)境</p><p><b>  2.4 開發(fā)語言</b></p>&

10、lt;p><b>  C語言</b></p><p><b>  3 分析和設(shè)計(jì)</b></p><p><b>  3.1 模塊設(shè)計(jì)</b></p><p>  定義一個(gè)二維數(shù)組a[5][5]存放一個(gè)矩陣,用for循環(huán)輸入25個(gè)數(shù)據(jù)到a[5][5]。</p><p> 

11、 定義一個(gè)f()函數(shù)用來查找矩陣中的鞍點(diǎn),存放到a[N][M]數(shù)組中,應(yīng)用flag標(biāo)識(shí)變量,并用maxj存放某行中最大數(shù)組元素的列下標(biāo),若有鞍點(diǎn)則輸出鞍點(diǎn)的位置和值,否則輸出沒有鞍點(diǎn)。</p><p>  定義一個(gè)fun()用來查找矩陣中的最大數(shù)和4個(gè)最小數(shù),存放到b[5]數(shù)組中,b[0]存放最大值放到5*5列表的最中間,即a[2][2],b[1]存放第一小數(shù)放到左上角,b[2]存放第二小數(shù)放到右上角,b[3]存

12、放第三小數(shù)放到左下角,b[4]存放第四小數(shù),放到右下角。 </p><p><b>  3.2 系統(tǒng)流程圖</b></p><p>  圖3.1 系統(tǒng)流程圖 1</p><p>  3.3 主要模塊的流程圖</p><p> ?、?② ③</p><p>

13、  圖3.2 f()函數(shù)流程圖 1</p><p> ?、?② ③</p><p>  圖 3.3 f()函數(shù)流程圖2 </p><p><b> ?、?lt;/b></p><p>  圖3.4 fun()函數(shù)流程圖1</p><p><b&g

14、t; ?、?lt;/b></p><p><b> ?、?lt;/b></p><p>  圖3.5 fun()函數(shù)流程圖2</p><p><b> ?、?lt;/b></p><p><b> ?、?lt;/b></p><p>  圖3.6 fun()函數(shù)

15、流程圖3</p><p><b> ?、?lt;/b></p><p><b>  ⑦</b></p><p>  圖3.7 fun()函數(shù)流程圖4</p><p><b> ?、?lt;/b></p><p>  圖3.8 fun函數(shù)流程圖5</p>

16、<p><b>  4 具體代碼實(shí)現(xiàn)</b></p><p>  #include"stdio.h"</p><p>  #include"math.h"</p><p>  #include"string.h"</p><p>  #includ

17、e"stdlib.h"</p><p>  #define N 5</p><p>  #define M 5</p><p>  void f(int a[N][M]);</p><p>  void fun(int a[5][5]);</p><p>  void main()</p>

18、;<p><b>  { </b></p><p>  int i,j,a[5][5];</p><p>  printf("請輸入矩陣:\n");</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p>

19、;<p>  for(j=0;j<5;j++)</p><p><b>  {</b></p><p>  scanf("%d",&a[i][j]);</p><p><b>  }</b></p><p><b>  }</b>

20、</p><p>  f(a);//調(diào)用f函數(shù)求鞍點(diǎn)</p><p>  fun(a);//調(diào)用fun函數(shù)求最大最小值</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p><p>  for(j=0;j<5;j++)</p>

21、<p><b>  {</b></p><p>  printf("%5d",a[i][j]);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b>

22、</p><p><b>  } </b></p><p>  void f(int a[N][M])</p><p><b>  {</b></p><p>  int i,j,k; //循環(huán)變量</p><p>  int flag; //標(biāo)識(shí)變量,表示整個(gè)矩陣是否有鞍點(diǎn)

23、</p><p>  int max,min;</p><p>  int maxj; //存當(dāng)前行中最大數(shù)組元素的列下標(biāo)</p><p><b>  flag=0;</b></p><p>  for(i=0;i<N;i++)</p><p><b>  {</b>&

24、lt;/p><p>  max=a[i][0];</p><p>  for(j=0;j<M;j++) //尋找第i行中的最大值的列下標(biāo)</p><p>  if(max<a[i][j])</p><p><b>  {</b></p><p>  max=a[i][j];<

25、;/p><p><b>  maxj=j;</b></p><p><b>  }</b></p><p><b>  min=max;</b></p><p>  for(k=0; k<N; k++) //如不是maxj列中的最小值,則標(biāo)識(shí)flag=0,此循環(huán)可退出<

26、;/p><p>  if(min>a[k][maxj])</p><p><b>  break;</b></p><p><b>  if(k==N)</b></p><p><b>  {</b></p><p>  flag=1; //有鞍點(diǎn),輸

27、出鞍點(diǎn)位置和值</p><p>  printf("\na[%d][%d]=%d\n",i,maxj,a[i][maxj]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag!=1)</p><

28、;p>  printf("沒有鞍點(diǎn)\n");</p><p><b>  }</b></p><p>  void fun(int a[5][5])</p><p><b>  {</b></p><p>  int i,j,k,l,b[5],t,max,min;</

29、p><p>  max=a[0][0];//先假定其為最大值</p><p><b>  k=0;l=0;</b></p><p>  for(i=0;i<5;i++)</p><p><b>  { </b></p><p>  for(j=0;j<5;j++)&l

30、t;/p><p><b>  {</b></p><p>  if(a[i][j]>max)//用i,j存儲(chǔ)最大數(shù)的列下標(biāo)</p><p><b>  {</b></p><p>  max=a[i][j];</p><p><b>  k=i;</b>

31、;</p><p><b>  l=j;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  b[0]=a[k][l];//將最大數(shù)放到

32、最中間即a[2][2]</p><p>  a[k][l]=a[2][2];</p><p>  a[2][2]=b[0];</p><p>  min=a[0][0];k=l=0;</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p&g

33、t;<p>  for(j=0;j<5;j++)//尋找所有數(shù)中的最小數(shù)</p><p><b>  {</b></p><p>  if(min>a[i][j])</p><p><b>  {</b></p><p>  min=a[i][j];</p>

34、<p><b>  k=i;</b></p><p><b>  l=j;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

35、<p>  b[1]=a[k][l];//將最小數(shù)放到a[0][0]</p><p>  a[k][l]=a[0][0];</p><p>  a[0][0]=b[1];</p><p>  min=a[0][1];k=0;l=1;//排除a[0][0],尋找第二小數(shù)</p><p>  for(i=0;i<5;i++)&l

36、t;/p><p><b>  {</b></p><p>  for(j=0;j<5;j++)</p><p><b>  {</b></p><p>  if((i==0)&&(j==0))</p><p><b>  {</b>&l

37、t;/p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if(a[i][j]<mi

38、n)</p><p><b>  {</b></p><p>  min=a[i][j];</p><p><b>  k=i;</b></p><p><b>  l=j;</b></p><p><b>  }</b></

39、p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  b[2]=a[k][l];//將找到第二小數(shù)放到右上角,即a[0][4]</p><p>  a[k][l]=a[0][4

40、];</p><p>  a[0][4]=b[2];</p><p>  min=a[0][1];k=0;l=1;</p><p>  for(i=0;i<5;i++)//從a[0][1]點(diǎn)開始尋找第三小數(shù)</p><p><b>  {</b></p><p>  for(j=0;j<

41、;5;j++)</p><p><b>  {</b></p><p>  if((i==0)&&(j==0))</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b&

42、gt;  }</b></p><p>  else if((i==0)&&(j==4))//排除a[0][4]來尋找</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }</b>

43、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  if(a[i][j]<min)</p><p><b>  {</b></p><p>  min=a[i][j];</p>

44、<p><b>  k=i;</b></p><p><b>  l=j;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

45、<p><b>  }</b></p><p>  b[3]=a[k][l];//將第三小數(shù)放到左下角,即a[4][0]</p><p>  a[k][l]=a[4][0];</p><p>  a[4][0]=b[3];</p><p>  min=a[0][1];k=0;l=1;//從a[0][1]開始

46、尋找第四小的數(shù)</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p><p>  for(j=0;j<5;j++)</p><p><b>  {</b></p><p>  if((i==0)&&(

47、j==0))</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p>  else if(((i==0)&&(j==4))||((i==4)&&(j=

48、=0)))//排除已找到的最小數(shù)a[0][4]與a[4][0]的干擾</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  else</b><

49、;/p><p><b>  {</b></p><p>  if(a[i][j]<min)</p><p><b>  {</b></p><p>  min=a[i][j];</p><p><b>  k=i;</b></p><

50、;p><b>  l=j;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

51、>  b[4]=a[k][l];//將第四小的數(shù)放到右下角,即位置a[4][4]</p><p>  a[k][l]=a[4][4];</p><p>  a[4][4]=b[4];</p><p><b>  }</b></p><p><b>  5 課程設(shè)計(jì)總結(jié)</b></p>

52、;<p>  5.1 程序運(yùn)行結(jié)果 </p><p>  圖3.9.1 錄入的矩陣</p><p>  輸入如圖中的矩陣,輸出其鞍點(diǎn),其最大數(shù)為35,放到矩陣最中間,最小的數(shù)為11,12,13,14,分別放到左上角,右上角,左下角和右下角。</p><p>  圖 3.9.2 程序運(yùn)行結(jié)果</p><p>  5.2 課程

53、設(shè)計(jì)體會(huì)</p><p>  課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題。鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。經(jīng)過一個(gè)學(xué)期的學(xué)習(xí),我對C語言有了一定的了解。C語言是學(xué)習(xí)計(jì)算機(jī)科學(xué)的基礎(chǔ),作為一名計(jì)算機(jī)專業(yè)學(xué)生,掌握C語言更是毋庸置疑。在上課之前,就經(jīng)常聽同學(xué)說,C語言很難學(xué),確實(shí),剛開始聽課時(shí)覺得老師不知所云。不過,發(fā)現(xiàn)對后續(xù)內(nèi)容的預(yù)習(xí)后,前面的疑團(tuán)都迎刃而解

54、,這讓我對C語言的學(xué)習(xí)更有信心。并且我們學(xué)習(xí)的不僅是科學(xué)的方法,還包括用什么樣的態(tài)度去對待這門課程,并且讓自理論性和實(shí)踐性在自身得到充分的發(fā)揮,用細(xì)心嚴(yán)謹(jǐn)?shù)膽B(tài)度去認(rèn)識(shí)事物,且希望通過這次的實(shí)踐操作可以讓我更好地學(xué)習(xí)vb程序設(shè)計(jì)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]黃同成,周紅波.程序設(shè)計(jì)基礎(chǔ)教程(C語言)[M].湖南人民出版社,2

55、011.</p><p>  [2]黃同成,黃磊.程序設(shè)計(jì)實(shí)踐教程(C語言)[M].湖南人民出版社,2011.</p><p>  [3]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2005.</p><p><b>  致 謝</b></p><p>  本課程設(shè)計(jì)報(bào)告是在的**老師悉心指導(dǎo)下完成的,老

56、師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,一絲不茍的工作作風(fēng),平易近人的性格都是我學(xué)習(xí)的楷模。在設(shè)計(jì)報(bào)告的撰寫及整理期間,老師給了我很大的講解與幫助,才使得報(bào)告得以順利的完成,在此謹(jǐn)向老師表示忠心的感謝和崇高的敬意。</p><p>  同時(shí)還要感謝**等同學(xué),他們在我迷惑的也給了我很大的支持和幫助。</p><p>  感謝我的室友們,我一生都不會(huì)忘記。 </p><p>  最后感謝我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論