版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計(論文)</b></p><p> 題 目 名 稱 矩陣問題 </p><p> 課 程 名 稱 C語言程序課程設計 </p><p> 學 生 姓 名
2、 </p><p> 學 號 </p><p> 系 、專 業(yè) 信息工程系、網絡工程專業(yè) </p><p> 指 導 教 師 </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 課程設計目的2</p><p> 2.2 課程設計任務2
4、</p><p> 2.3 設計環(huán)境2</p><p> 2.4 開發(fā)語言2</p><p><b> 3 分析和設計2</b></p><p> 3.1 模塊設計2~3</p><p> 3.2 系統(tǒng)流程圖3</p><p> 3.3 主要模塊的流程
5、圖4~10</p><p> 4 具體代碼實現(xiàn)11~16</p><p> 5 課程設計總結16</p><p> 5.1 程序運行結果 / 預期運行結果16~17</p><p> 5.2 課程設計體會17~18</p><p><b> 參考文獻18</b></p&
6、gt;<p><b> 致 謝18</b></p><p><b> 1 前言</b></p><p> 從C語言產生到現(xiàn)在,它已經成為最重要和最流行的編程語言之一。在各種流行編程語言中,都能看到C語言的影子,如Java的語法與C語言基本相同。所以可以看出學習C語言的重要性。我們在c語言課程中學習了矩陣的的運用,在本次課程
7、設計中我們需要編寫一個程序存放一個5*5的矩陣,然后通過調用兩個函數找到該矩陣的鞍點和最大最小值。</p><p><b> 2 需求分析</b></p><p> 2.1 課程設計目的</p><p> 學生在教師指導下運用所學課程的知識來研究、解決一些具有一定綜合性問題的專業(yè)課題。通過課程設計(論文),提高學生綜合運用所學知識來解決實
8、際問題、使用文獻資料、及進行科學實驗或技術設計的初步能力,為畢業(yè)設計(論文)打基礎。</p><p> 2.2 課程設計任務</p><p> 已知一個5×5矩陣,用函數實現(xiàn):(1)找出該矩陣中的鞍點,“鞍點”指的是一個位置,該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點。(2)將矩陣中最大的元素放在中心,四個角分別放四個最小的元素(按從左到右,從上到下順序依次從小
9、到大存放)。</p><p><b> 2.3 設計環(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 分析和設計</b></p><p><b> 3.1 模塊設計</b></p><p> 定義一個二維數組a[5][5]存放一個矩陣,用for循環(huán)輸入25個數據到a[5][5]。</p><p>
11、 定義一個f()函數用來查找矩陣中的鞍點,存放到a[N][M]數組中,應用flag標識變量,并用maxj存放某行中最大數組元素的列下標,若有鞍點則輸出鞍點的位置和值,否則輸出沒有鞍點。</p><p> 定義一個fun()用來查找矩陣中的最大數和4個最小數,存放到b[5]數組中,b[0]存放最大值放到5*5列表的最中間,即a[2][2],b[1]存放第一小數放到左上角,b[2]存放第二小數放到右上角,b[3]存
12、放第三小數放到左下角,b[4]存放第四小數,放到右下角。 </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()函數流程圖 1</p><p> ?、?② ③</p><p> 圖 3.3 f()函數流程圖2 </p><p><b> ④</b></p><p> 圖3.4 fun()函數流程圖1</p><p><b&g
14、t; ④</b></p><p><b> ?、?lt;/b></p><p> 圖3.5 fun()函數流程圖2</p><p><b> ?、?lt;/b></p><p><b> ?、?lt;/b></p><p> 圖3.6 fun()函數
15、流程圖3</p><p><b> ?、?lt;/b></p><p><b> ?、?lt;/b></p><p> 圖3.7 fun()函數流程圖4</p><p><b> ⑦</b></p><p> 圖3.8 fun函數流程圖5</p>
16、<p><b> 4 具體代碼實現(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);//調用f函數求鞍點</p><p> fun(a);//調用fun函數求最大最小值</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; //標識變量,表示整個矩陣是否有鞍點
23、</p><p> int max,min;</p><p> int maxj; //存當前行中最大數組元素的列下標</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行中的最大值的列下標</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列中的最小值,則標識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; //有鞍點,輸
27、出鞍點位置和值</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("沒有鞍點\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存儲最大數的列下標</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];//將最大數放到
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++)//尋找所有數中的最小數</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];//將最小數放到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],尋找第二小數</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];//將找到第二小數放到右上角,即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]點開始尋找第三小數</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];//將第三小數放到左下角,即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、尋找第四小的數</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)))//排除已找到的最小數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];//將第四小的數放到右下角,即位置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 課程設計總結</b></p>
52、;<p> 5.1 程序運行結果 </p><p> 圖3.9.1 錄入的矩陣</p><p> 輸入如圖中的矩陣,輸出其鞍點,其最大數為35,放到矩陣最中間,最小的數為11,12,13,14,分別放到左上角,右上角,左下角和右下角。</p><p> 圖 3.9.2 程序運行結果</p><p> 5.2 課程
53、設計體會</p><p> 課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題。鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。經過一個學期的學習,我對C語言有了一定的了解。C語言是學習計算機科學的基礎,作為一名計算機專業(yè)學生,掌握C語言更是毋庸置疑。在上課之前,就經常聽同學說,C語言很難學,確實,剛開始聽課時覺得老師不知所云。不過,發(fā)現(xiàn)對后續(xù)內容的預習后,前面的疑團都迎刃而解
54、,這讓我對C語言的學習更有信心。并且我們學習的不僅是科學的方法,還包括用什么樣的態(tài)度去對待這門課程,并且讓自理論性和實踐性在自身得到充分的發(fā)揮,用細心嚴謹的態(tài)度去認識事物,且希望通過這次的實踐操作可以讓我更好地學習vb程序設計。</p><p><b> 參考文獻</b></p><p> [1]黃同成,周紅波.程序設計基礎教程(C語言)[M].湖南人民出版社,2
55、011.</p><p> [2]黃同成,黃磊.程序設計實踐教程(C語言)[M].湖南人民出版社,2011.</p><p> [3]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005.</p><p><b> 致 謝</b></p><p> 本課程設計報告是在的**老師悉心指導下完成的,老
56、師嚴謹的治學態(tài)度,一絲不茍的工作作風,平易近人的性格都是我學習的楷模。在設計報告的撰寫及整理期間,老師給了我很大的講解與幫助,才使得報告得以順利的完成,在此謹向老師表示忠心的感謝和崇高的敬意。</p><p> 同時還要感謝**等同學,他們在我迷惑的也給了我很大的支持和幫助。</p><p> 感謝我的室友們,我一生都不會忘記。 </p><p> 最后感謝我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論