c語言課程設(shè)計 矩陣運算.doc_第1頁
c語言課程設(shè)計 矩陣運算.doc_第2頁
c語言課程設(shè)計 矩陣運算.doc_第3頁
c語言課程設(shè)計 矩陣運算.doc_第4頁
c語言課程設(shè)計 矩陣運算.doc_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.課程設(shè)計 精選word范本!課程設(shè)計任務(wù)書一、課程設(shè)計題目:矩陣運算二、課程設(shè)計工作自2008年9月8日起至2008年9月12日止三、課程設(shè)計內(nèi)容:運用所學(xué)的C語言知識,編制和調(diào)試程序,具有如下功能:(1)兩個矩陣加、減、乘等運算(2)對某一矩陣增加一行或一列(3) 對某一矩陣減少一行或一列(4) 自己再增加一項或兩項功能四、課程設(shè)計要求:程序質(zhì)量:l 貫徹結(jié)構(gòu)化程序設(shè)計思想。l 用戶界面友好,功能明確,操作方便;可以加以其它功能或修飾。l 用戶界面中的菜單至少應(yīng)包括“輸入數(shù)據(jù)”、“算術(shù)運算”、“增行”、“減行”、“退出”5項。l 代碼應(yīng)適當縮進,并給出必要的注釋,以增強程序的可讀性。課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書(打印稿和電子稿),其內(nèi)容如下:l 封面l 課程設(shè)計任務(wù)書l 目錄l 需求分析(分析題目的要求)l 程序流程圖(總體流程圖和主要功能模塊流程圖)l 核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段l 個人總結(jié)l 參考資料l 源程序及適當?shù)淖⑨屩笇?dǎo)教師:_學(xué)生簽名:_成績: 教師評語: .目錄一、需求分析1二、程序流程圖2三、核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段8四、個人總結(jié)18五、參考資料19六、源程序19精選word范本!一、需求分析經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為六個模塊,其中每一個模塊對應(yīng)一個函數(shù),他們的功能分別是:加運算函數(shù)(jia),減運算函數(shù)(jian),乘運算函數(shù)(cheng),增行函數(shù)(jiahang),減列函數(shù)(jianlie)以及求最大值函數(shù)(fun)。在這些函數(shù)當中,前五個函數(shù)的實現(xiàn)嚴格按照題目的要求,而最后一個函數(shù)為自行設(shè)計的函數(shù)。1、增加運算函數(shù) 主要實現(xiàn)將兩矩陣相加的功能;2、減運算函數(shù) 實現(xiàn)的功能是將兩矩陣相減;3、乘運算函數(shù) 主要實現(xiàn)將兩矩陣相乘的功能;4、增行函數(shù) 實現(xiàn)的是在所選的矩陣中增加一行的功能;5、減列函數(shù) 實現(xiàn)的是在所選的矩陣中減掉一列的功能; 6、求取最大值函數(shù) 實現(xiàn)的功能是找到并輸出所給矩陣最大值。 程序的一次運行當中可以循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。在這個程序中,將各個功能以子程序模塊的形式編寫。這樣使所編寫的程序簡單,明了,邏輯性思維表達明確,具有很強的可讀性。二、程序流程圖1. 程序總體結(jié)構(gòu)圖 While(1) flag=1 1 真 假加運算函數(shù)jiaflag=2 真 假減運算函數(shù)jianflag=3 真 假乘運算函數(shù)cheng flag=4 真 假增行運算函數(shù)jiahang flag=5 真 假減列運算函數(shù)jianlie flag=6 真 假求最大值函數(shù)fun flag=0 真 假退出exit(0)圖(一)程序總體結(jié)構(gòu)圖2、具體功能框圖(1) 加運算函數(shù)jia int i.j a1=b1&a2=b2? 否 是提示錯誤退出 i=0 ia1? 否 是i=0 j=0 ia1? 否 是 ja2? 是 否 j=0cij=aij+bijj+i+ ja2?否 是i+輸出cij圖(二)加運算函數(shù)(2) 減運算函數(shù)jian int i.j a1=b1&a2=b2? 否 是提示錯誤退出 i=0 ia1? 否 是i=0 j=0 ia1? 否 是 ja2? 否 j=0cij=aij-bijj+i+ ja2?否 是i+輸出cij圖(三)減運算函數(shù)(3)乘運算函數(shù)cheng Int I,j,k a2=b1? 否 是輸出sorrycantmul-tiply I=0 ia1 否 是 j=0 jb2? 否 是 i+Cij=0;j+ i=0 ia1? 否 是 j=0 jb2? 否 是i+ k=0 ka2? 否 是j+cij=aik*bkj;k+ i!=o ia1? 否 是 j=o ja1+1? 是 否提示錯誤退出 m=0 mx-1? 否 是 n=0 na2? 否 是m+cmn=ann;n+Printf(“please input number you add”) j=0 ja2? 否 是scanf(“%d”),&cx-1j;j+m=aa ma1? 否 是 n=0 na2? 否 是m+cmn=am-1n;n+i=0 i=a1? 否 是 j=0 ja2? 是 否提示錯誤退出 j=0 jx-1? 否 是 i=0 ia1? 否 是j+cij=aij;i+j=x ja1? 否 是 i=0 ia1? 否 是j+cij-1=aij;i+ i=0 ja1-1? 否 是 i=0 ia1? 否 是printf(“n”)j+printf(“%4d”,cij);i+圖(六)減列函數(shù)(6)求最大值函數(shù)funint i,j; max=a00i=0 ia1? 否 是 j=0 jmax否 是j+max=aij;j+printf(“max=%4dn”,max); 圖(七)求最大值函數(shù)三、核心技術(shù)的實現(xiàn)說明及相應(yīng)程序段本程序主要由六個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實現(xiàn)要求的所有功能。在這些函數(shù)當中,加運算函數(shù),減運算函數(shù),乘運算函數(shù),加行函數(shù),減列函數(shù)是程序中較為核心的部分,下面分別進行說明。1、加運算函數(shù) 在進行矩陣相加前要判斷兩矩陣是否能夠相加,如果能就按照矩陣的相加方式進行運算并輸出結(jié)果。若不能則提示錯誤并返回。具體的程序段如下:void jia(int aNN,int bNN,int a1,int a2,int b1,int b2) int i,j; if(a1=b1&a2=b2) for(i=0;ia1;i+) for(j=0;ja2;j+) cij=aij+bij; for(i=0;ia1;i+) for(j=0;ja2;j+) printf(%4d,cij); printf(n); elseprintf(兩矩陣不能相加n); 運行圖有如下:2、減運算函數(shù)在進行矩陣相減運算前要判斷兩矩陣是否能夠相減,如果能就按照矩陣的相減方式進行運算并輸出結(jié)果。若不能則提示錯誤并返回。具體的程序段如下:void jian(int aNN,int bNN,int a1,int a2,int b1,int b2) int i,j; if(a1=b1&a2=b2) for(i=0;ia1;i+) for(j=0;ja2;j+) cij=aij-bij; for(i=0;ia1;i+) for(j=0;ja2;j+) printf(%4d,cij); printf(n); else printf(兩矩陣不能相減n); 運行圖有如下:3、乘運算函數(shù) 該段程序的核心問題是矩陣的乘法運算的邏輯性的編寫,在進行矩陣相乘時要合理,正確的編寫出矩陣相乘的邏輯方式。首先要判斷兩矩陣是否能夠相乘,如果能就按照矩陣的相乘方式進行運算并輸出結(jié)果。若不能則提示錯誤并返回。具體的程序段如下void cheng(int aNN,int bNN,int a1,int a2,int b1,int b2) int i,j,k; if(a2=b1) for(i=0;ia1;i+) for(j=0;jb2;j+) cij=0; for(i=0;ia1;i+) for(j=0;jb2;j+) for(k=0;ka2;k+) cij+=aik*bkj; printf(運算結(jié)果為:n); for(i=0;ia1;i+) for(j=0;ja1+1) printf(不能加入到此行 n);return; for(m=0;mx-1;m+) for(n=0;na2;n+) cmn=amn; printf(請輸入要加的數(shù)); for(j=0;ja2;j+) scanf(%d,&cx-1j); for(m=x;m=a1;m+) for(n=0;na2;n+) cmn=am-1n; for(i=0;i=a1;i+)for(j=0;ja1) printf(不能減去此列n); for(j=0;jx-1;j+) for(i=0;ia1;i+) cij=aij; for(j=x;ja2;j+) for(i=0;ia1;i+) cij-1=aij; for(i=0;ia1;i+)for(j=0;ja2-1;j+)printf(%4d,cij);printf(n); 四、個人總結(jié)在這次C語言課程設(shè)計過程,我更好的掌握了C語言課程中的基礎(chǔ)知識,同時也對所學(xué)知識的掌握有所加深。通過這次自己動手編制、調(diào)試程序,讓我學(xué)到了很多理論課上無法體會到的知識,特別的知道了一些關(guān)于“stdlib.h”頭文件的使用,而且我也遇到并解決了很多編程中常出現(xiàn)的錯誤。自己獨立的編寫出了各個子程序,如加運算函數(shù)、減運算函數(shù)、乘運算函數(shù)、加行函數(shù)、減行列函數(shù)等。通過編程讓我深深的體會到C語言的方便性和可用性。自身覺得不足的是在使用增行、減列運算函數(shù)時還要輸入不必要的另一數(shù)組,但它不可少,有它可以在此程序源中增加新的運算函數(shù)。五、參考文獻1 譚浩強 C程序設(shè)計教程 北京:清華大學(xué)出版社 20082 劉成等 C語言程序設(shè)計實驗指導(dǎo)與習(xí)題集 北京:中國鐵道出版社 2008六、源程序#include#include#define N 50int cNN;void jia(int aNN,int bNN,int a1,int a2,int b1,int b2) int i,j; if(a1=b1&a2=b2) for(i=0;ia1;i+) for(j=0;ja2;j+) cij=aij+bij; for(i=0;ia1;i+) for(j=0;ja2;j+) printf(%4d,cij); printf(n); else printf(兩矩陣不能相加n); void jian(int aNN,int bNN,int a1,int a2,int b1,int b2) int i,j; if(a1=b1&a2=b2) for(i=0;ia1;i+) for(j=0;ja2;j+) cij=aij-bij; for(i=0;ia1;i+) for(j=0;ja2;j+) printf(%4d,cij); printf(n); else printf(兩矩陣不能相減n); void cheng(int aNN,int bNN,int a1,int a2,int b1,int b2) int i,j,k; if(a2=b1) for(i=0;ia1;i+) for(j=0;jb2;j+) cij=0; for(i=0;ia1;i+) for(j=0;jb2;j+) for(k=0;ka2;k+) cij+=aik*bkj; printf(運算結(jié)果為:n); for(i=0;ia1;i+) for(j=0;ja1+1) printf(不能加入此行 n);return; for(m=0;mx-1;m+) for(n=0;na2;n+) cmn=amn; printf(請輸入要加的數(shù):); for(j=0;ja2;j+) scanf(%d,&cx-1j); for(m=x;m=a1;m+) for(n=0;na2;n+) cmn=am-1n; for(i=0;i=a1;i+) for(j=0;ja1) printf(不能減去此列n); for(j=0;jx-1;j+) for(i=0;ia1;i+) cij=aij; for(j=x;ja2;j+) for(i=0;ia1;i+) cij-1=aij; for(i=0;ia1;i+) for(j=0;ja2-1;j+) printf(%4d,cij); printf(n); void fun(int aNN,int a1,int a2) int i,j; int max; max=a00; for(i=0;ia1;i+) for(j=0;jmax) max=aij; printf(max=%4dn,max); main() int aNN,bNN,i,j,m,n,p,q,flag; printf(請輸入矩陣 a 的行數(shù)和列數(shù):n); scanf(%d %d,&m,&n); printf(請輸入矩陣a:n); for(i=0;im;i+) for(j=0;jn;j+) scanf(%d,&aij); printf(a矩陣為:n); for(i=0;im;i+) for(j=0;jn;j+) printf(%4d,aij); printf(n); printf(請輸入矩陣b的行數(shù)和列數(shù):n); scanf(%d%d,&p,&q); printf(請輸入 b 矩陣:n); for(i=0;ip;i+) for(j=0;jq;j+) scanf(%d,&bij); printf(b 矩陣為:n); for(i=0;ip;i+) for(j=0;jq;j+) printf(%4d,bij); printf(n); while(1) printf(請選擇:n 1: 矩陣相加n 2: 矩陣相減n 3: 矩陣相乘n 4: 矩陣加一行n 5: 矩陣減一列n 6

溫馨提示

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

最新文檔

評論

0/150

提交評論