數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)成績分析問題用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)成績分析問題用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)成績分析問題用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)成績分析問題用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)成績分析問題用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、山東建筑大學(xué)課 程 設(shè) 計(jì) 成 果 報(bào) 告題 目: 1.用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘運(yùn)算 2. 成績分析問題課 程: 數(shù)據(jù)結(jié)構(gòu)A課程設(shè)計(jì)院 部: 管理工程學(xué)院專 業(yè): 信息管理與信息系統(tǒng)班 級(jí): 信管112學(xué)生姓名: 王楷仁學(xué) 號(hào): 2021021686指導(dǎo)教師: 陳 兆 柱完成日期: 2014年1月1日目錄 TOC o 1-3 h z u HYPERLINK l _Toc344731779 一、課程設(shè)計(jì)概述 PAGEREF _Toc344731779 h 3 HYPERLINK l _Toc344731780 二、課程設(shè)計(jì)題目一 PAGEREF _Toc344731780 h 3 HYPERLI

2、NK l _Toc344731781 問題描述 PAGEREF _Toc344731781 h 3 HYPERLINK l _Toc344731782 詳細(xì)設(shè)計(jì) PAGEREF _Toc344731782 h 3 HYPERLINK l _Toc344731783 調(diào)試分析 PAGEREF _Toc344731783 h 4 HYPERLINK l _Toc344731784 運(yùn)行結(jié)果及分析 PAGEREF _Toc344731784 h 4 HYPERLINK l _Toc344731785 三、課程設(shè)計(jì)題目二 PAGEREF _Toc344731785 h 5 HYPERLINK l _T

3、oc344731786 問題描述 PAGEREF _Toc344731786 h 5 HYPERLINK l _Toc344731787 需求分析 PAGEREF _Toc344731787 h 5 HYPERLINK l _Toc344731788 概要設(shè)計(jì) PAGEREF _Toc344731788 h 5 HYPERLINK l _Toc344731789 存儲(chǔ)結(jié)構(gòu) PAGEREF _Toc344731789 h 6 HYPERLINK l _Toc344731790 流程圖 PAGEREF _Toc344731790 h 7 HYPERLINK l _Toc344731791 詳細(xì)設(shè)計(jì)

4、 PAGEREF _Toc344731791 h 7 HYPERLINK l _Toc344731792 調(diào)試分析 PAGEREF _Toc344731792 h 21 HYPERLINK l _Toc344731793 運(yùn)行結(jié)果及分析 PAGEREF _Toc344731793 h 21 HYPERLINK l _Toc344731794 四、參考文獻(xiàn): PAGEREF _Toc344731794 h 27課程設(shè)計(jì)報(bào)告一、課程設(shè)計(jì)概述本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)共完成三個(gè)題:1、用數(shù)組實(shí)現(xiàn)兩個(gè)矩陣的相乘問題;2、成績分析問題。使用語言:C編譯環(huán)境:二、課程設(shè)計(jì)題目一問題描述程序結(jié)構(gòu): #includ

5、e “stdio.h int r66; void mult(int a66 , int b66) main() int i,j; int num166,num266; printf(“請(qǐng)輸入第一個(gè)矩陣的值:,); for(i=1;i=6;i+) for(j=1;j=6;j+) scanf(“%d,&num1ij); printf(“請(qǐng)輸入第二個(gè)矩陣的值:,); for(i=1;i=6;i+) for(j=1;j=6;j+) scanf(“%d,&num2ij); mult(num1,num2); printf(“n兩個(gè)矩陣相乘后的結(jié)果為:); for(i=1;i=6;i+) for(j=1;j

6、=6;j+) printf(“%4d,rij); printf(“n);要求及提示:要求完善函數(shù)mult( ),現(xiàn)有A,B兩個(gè)矩陣,要求用上述程序求出A與B相乘后的運(yùn)行結(jié)果,詳細(xì)設(shè)計(jì)#include int r66; void mult(int a66 , int b66) int m,n; for(m=0;m6;m+) for(n=0;n6;n+) rmn=amn*bnm; main() int i,j; int num166,num266; printf(請(qǐng)輸入第一個(gè)矩陣的值: n ); for(i=0;i6;i+) for(j=0;j6;j+) scanf(%d,&num1ij); pr

7、intf(請(qǐng)輸入第二個(gè)矩陣的值: n ); for(i=0;i6;i+) for(j=0;j6;j+) scanf(%d,&num2ij); mult(num1,num2); printf(n兩個(gè)矩陣相乘后的結(jié)果為:n); for(i=0;i6;i+) for(j=0;jnext;while(p)if(strcmp(p-no,no)=0)return p;p=p-next;return NULL; /查找指定學(xué)號(hào)的學(xué)生,返回該結(jié)點(diǎn)的地址,用于檢驗(yàn)該組數(shù)據(jù)是否存在linklist *findm(linklist *head,char *name)linklist *p;p=head-next;w

8、hile(p)if(strcmp(p-name,name)=0)return p;p=p-next;return NULL;/查找指定姓名的學(xué)生,返回該結(jié)點(diǎn)的地址,用于檢驗(yàn)是否存在該數(shù)據(jù)流程圖int Partition(KeyWord* RL, int low, int high) /快速排序第一趟用第一個(gè)記錄做樞軸記錄;while (lowhigh)while(low=keypivot)-high;高端記錄下移;while (lowhigh & RLlow.score=keypivot)+low;低端記錄上移;將樞軸放到適當(dāng)位置return low;詳細(xì)設(shè)計(jì)#include #include

9、 #include struct STUDENTchar no7;char name9;int math;int eng;int com;struct STUDENT *next;typedef struct STUDENT linklist;linklist *head=NULL;void initlinklist() /單鏈表的初始化,生成一個(gè)空的單鏈表head=(linklist *)malloc(sizeof(linklist); /生成頭結(jié)點(diǎn)head-next=NULL;linklist *findm(linklist *head,char *name)/查找指定姓名的學(xué)生,返回該結(jié)

10、點(diǎn)的地址,用于檢驗(yàn)是否存在該數(shù)據(jù)linklist *p;p=head-next;while(p)if(strcmp(p-name,name)=0)return p;p=p-next;return NULL;linklist *findn(linklist *head,char *no) /查找指定學(xué)號(hào)的學(xué)生,返回該結(jié)點(diǎn)的地址linklist *p;p=head-next;while(p)if(strcmp(p-no,no)=0)return p;p=p-next;return NULL;void creat()/錄入學(xué)生信息struct STUDENT *p;while(1)p=(struct

11、 STUDENT *)malloc(sizeof(struct STUDENT);printf(學(xué)號(hào):);fflush(stdin);/去除緩存gets(p-no);printf(姓名:);fflush(stdin);gets(p-name);printf(數(shù)學(xué)成績:);fflush(stdin);scanf(%d,&(p-math);printf(英語成績:);fflush(stdin);scanf(%d,&(p-eng);printf(計(jì)算機(jī)成績:);fflush(stdin);scanf(%d,&(p-com);p-next=head-next;head-next=p;printf(是否

12、要繼續(xù)錄入?(y/n);fflush(stdin);if(getchar()=n)break;void prnt(linklist *p) /輸出單條記錄printf(n-n);printf( 學(xué)號(hào):%s,p-no);printf(t姓名:%s,p-name);printf(t數(shù)學(xué):%d,p-math);printf(t英語:%d,p-eng);printf(t計(jì)算機(jī):%d,p-com);printf(n-n);void search() /查找指定學(xué)號(hào)或姓名的學(xué)生char no7;char name9;linklist *p=NULL;printf(學(xué)號(hào)查詢請(qǐng)輸入1,姓名查詢輸入0: );f

13、flush(stdin);if(getchar()=1)printf(按學(xué)號(hào)查詢:n);printf(請(qǐng)輸入要查詢的學(xué)號(hào):);fflush(stdin);gets(no);p=findn(head,no);if(p=NULL)printf(對(duì)不起,沒有找到滿足條件記錄!n);p=head-next;while(p!=NULL)if(strcmp(p-no,no)=0)printf(n-n); printf( 學(xué)號(hào):%s,p-no); printf(t姓名:%s,p-name);printf(t數(shù)學(xué):%d,p-math);printf(t英語:%d,p-eng);printf(t計(jì)算機(jī):%d,p

14、-com);printf(n-n);p=p-next;elseprintf(按姓名查詢:n);printf(請(qǐng)輸入要查詢的姓名:);fflush(stdin);gets(name);/=p=findm(head,name);if(p=NULL)printf(對(duì)不起,沒有找到滿足條件記錄!n);p=head-next;while(p!=NULL)if(strcmp(p-name,name)=0)printf(n-n); printf( 學(xué)號(hào):%s,p-no); printf(t姓名:%s,p-name);printf(t數(shù)學(xué):%d,p-math);printf(t英語:%d,p-eng);pri

15、ntf(t計(jì)算機(jī):%d,p-com);printf(n-n);p=p-next;void mathp(linklist *p) /輸出數(shù)學(xué)printf( 學(xué)號(hào):%s,p-no);printf(t姓名:%s,p-name);printf(t數(shù)學(xué):%d,p-math);void engp(linklist *p)/輸出英語printf( 學(xué)號(hào):%s,p-no);printf(t姓名:%s,p-name);printf(t英語:%d,p-eng);void comp(linklist *p)/輸出計(jì)算機(jī)printf( 學(xué)號(hào):%s,p-no);printf(t姓名:%s,p-name);printf(

16、t計(jì)算機(jī):%d,p-com);void g_d()/從高到低成績排序int i,j,temp,N=0;linklist *p;/數(shù)學(xué)p=head-next;int a1000; /調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放for(i=0;p!=NULL;i+)ai=p-math;p=p-next;ai=999;/存放結(jié)束標(biāo)志for(i=0;ai!=999;i+) N+;N=N-1;for(j=0;jN-1;j+) /jN /冒泡排序,由大到小for(i=0;iN-j-1;i+) /iN-jif(ainext;for(i=0;p!=NULL;i+)ai=p-eng;p=p-next;ai=100

17、0;/調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放for(i=0;ai!=1000;i+) N+;/冒泡排序,由大到小N=N-1;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(ainext;for(i=0;p!=NULL;i+)ai=p-com;p=p-next;ai=1000;/調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放for(i=0;ai!=1000;i+) N+;/冒泡排序,由大到小N=N-1;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(ainext;while(p)add+=p-math;n+;p=p-next;printf(數(shù)學(xué)

18、平均成績:%d,add/n);printf(tt);n=0;add=0;p=head-next;while(p)add+=p-eng;n+;p=p-next;printf(英語平均成績:%d,add/n);printf(tt);n=0;add=0;p=head-next;while(p)add+=p-com;n+;p=p-next;printf(計(jì)算機(jī)平均成績:%d,add/n);printf(tt);void mathinfo()int n=0,m=0,k=0,l=0,o=0;linklist *p;p=head-next;while(p!=NULL)if(p-math=90)n+;else

19、 if(p-math=80)m+;else if(p-math=70)k+;else if(p-math=60)l+;else o+;p=p-next;printf(數(shù)學(xué)成績?cè)?0分以上的人數(shù):%dn,n);printf(數(shù)學(xué)成績?cè)?0-90分 的人數(shù):%dn,m);printf(數(shù)學(xué)成績?cè)?0-80分 的人數(shù):%dn,l);printf(數(shù)學(xué)成績?cè)?0-70分 的人數(shù):%dn,k);printf(數(shù)學(xué)成績?cè)?0分以下的人數(shù):%dn,o);void enginfo()int n=0,m=0,k=0,l=0,o=0;linklist *p;p=head-next;while(p!=NULL)if

20、(p-eng=90)n+;else if(p-eng=80)m+;else if(p-eng=70)k+;else if(p-eng=60)l+;else o+;p=p-next;printf(英語成績?cè)?0分以上的人數(shù):%dn,n);printf(英語成績?cè)?0-90分 的人數(shù):%dn,m);printf(英語成績?cè)?0-80分 的人數(shù):%dn,l);printf(英語成績?cè)?0-70分 的人數(shù):%dn,k);printf(英語成績?cè)?0分以下的人數(shù):%dn,o);void cominfo()int n=0,m=0,k=0,l=0,o=0;linklist *p;p=head-next;wh

21、ile(p!=NULL)if(p-com=90)n+;else if(p-com=80)m+;else if(p-com=70)k+;else if(p-com=60)l+;else o+;p=p-next;printf(計(jì)算機(jī)成績?cè)?0分以上的人數(shù):%dn,n);printf(計(jì)算機(jī)成績?cè)?0-90分 的人數(shù):%dn,m);printf(計(jì)算機(jī)成績?cè)?0-80分 的人數(shù):%dn,l);printf(計(jì)算機(jī)成績?cè)?0-70分 的人數(shù):%dn,k);printf(計(jì)算機(jī)成績?cè)?0分以下的人數(shù):%dn,o);void sortmath()int i,j,N=0;linklist *p;p=head

22、-next;linklist a1000,temp; /調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放for(i=0;p!=NULL;i+)strcpy(ai.no,p-no);strcpy(,p-name);ai.math=p-math;ai.eng=p-eng;ai =p-com;p=p-next;ai.math=999;for(i=0;ai.math!=999;i+) N+;/通過N確定總共有多少學(xué)生的成績信息for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(ai.math=ai+1.math)temp=ai;ai=ai+1;ai+1=temp;prin

23、tf(數(shù)學(xué):n);for(i=0;inext;linklist b1000,temp; /調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放for(i=0;p!=NULL;i+)strcpy(bi.no,p-no);strcpy(,p-name);bi.math=p-math;bi.eng=p-eng;bi =p-com;p=p-next;bi.eng=999;for(i=0;bi.eng!=999;i+) N+;/冒泡排序,由大到小for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(bi.eng=bi+1.eng)temp=bi;bi=bi+1;bi+1=temp

24、;printf(英語:n);for(i=0;inext;linklist c1000,temp; /調(diào)用了一個(gè)足夠大的一維數(shù)組作為臨時(shí)數(shù)據(jù)存放for(i=0;p!=NULL;i+)strcpy(ci.no,p-no);strcpy(,p-name);ci.math=p-math;ci.eng=p-eng;ci =p-com;p=p-next;ci =999;for(i=0;ci !=999;i+) N+;/冒泡排序,由大到小for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(ci =ci+1 )temp=ci;ci=ci+1;ci+1=temp;printf

25、(計(jì)算機(jī):n);for(i=0;inext; /p指向首元結(jié)點(diǎn)if(fp=fopen(d:input.dat,wb+)=NULL) /翻開磁盤文件 d:input.datprintf(不能翻開文件!n);exit(0);while(p) /如果結(jié)點(diǎn)不為空fwrite(p,sizeof(linklist),1,fp); /將當(dāng)前節(jié)點(diǎn)p,寫入磁盤文件中p=p-next; /p指向下一個(gè)結(jié)點(diǎn)printf(存盤成功!n);fclose(fp); /關(guān)閉磁盤文件void load()FILE *fp;struct STUDENT *p;if(fp=fopen(d:input.dat,rb+)=NULL)

26、printf(不能翻開文件!n);exit(0);int i=0; /?/頭結(jié)點(diǎn)已經(jīng)生成了while(!feof(fp)p=(struct STUDENT *)malloc(sizeof(struct STUDENT);fread(p,sizeof(struct STUDENT),1,fp);if(feof(fp)break;p-next=head-next;head-next=p;fclose(fp);void main()printf(t *成績分析記錄表*n);initlinklist();int sel,sel2,sel1;doprintf(nttn);printf(ttt1 學(xué)生信息

27、錄入n);printf(ttt2 學(xué)生信息查找n);printf(ttt3 最高最低 n);printf(ttt4 平均成績 n);printf(ttt5 各科排序 n);printf(ttt6 各科成績分段n);printf(ttt7 信息存盤 n);printf(ttt8 信息讀取 n); printf(ttn);printf(ttt0 退出系統(tǒng)n);printf(ttn);printf(請(qǐng)選擇:);scanf(%d,&sel);switch(sel)case 1:creat();break; case 2:search();break;case 3:g_d();break;case 4:

28、aver();break;case 5:doprintf(請(qǐng)輸入你要查詢的科目:n1、數(shù)學(xué)n2、英語n3、計(jì)算機(jī)n0、退出n); scanf(%d,&sel1);switch(sel1)case 1:sortmath();break;case 2:sorteng();break;case 3:sortcom();break;case 0:break;default:printf(輸入指令非法);break;while(sel1!=0);break; case 6:doprintf(請(qǐng)輸入你要查詢的科目:n1、數(shù)學(xué)n2、英語n3、計(jì)算機(jī)n0、退出n); scanf(%d,&sel2);switch(sel2)case 1:mathinfo();break;case 2:enginfo();break;case 3:cominfo();break;case 0:break;default:printf(輸入指令非法);break;whil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論