c語(yǔ)言課程設(shè)計(jì) 矩陣運(yùn)算.doc_第1頁(yè)
c語(yǔ)言課程設(shè)計(jì) 矩陣運(yùn)算.doc_第2頁(yè)
c語(yǔ)言課程設(shè)計(jì) 矩陣運(yùn)算.doc_第3頁(yè)
c語(yǔ)言課程設(shè)計(jì) 矩陣運(yùn)算.doc_第4頁(yè)
c語(yǔ)言課程設(shè)計(jì) 矩陣運(yùn)算.doc_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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)介

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

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論