C語言程序設(shè)計(jì)報(bào)告_第1頁
C語言程序設(shè)計(jì)報(bào)告_第2頁
C語言程序設(shè)計(jì)報(bào)告_第3頁
C語言程序設(shè)計(jì)報(bào)告_第4頁
C語言程序設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計(jì)報(bào)告1 題 目: 學(xué)生成績管理系統(tǒng) 姓 名: 許寧馨 學(xué) 院: 信息科學(xué)與技術(shù)學(xué)院 專 業(yè): 電氣信息類 班 級: 電信1207 學(xué) 號: 1、 設(shè)計(jì)目的-2、 總體設(shè)計(jì)-3、 詳細(xì)設(shè)計(jì)-4、 調(diào)試與測試-5、 源程序清單和執(zhí)行結(jié)果-一、設(shè)計(jì)目的通過親自設(shè)計(jì)程序,令我們更加熟悉和掌握c語言。初步體會編程的過程,為將來的程序深入學(xué)習(xí)打下基礎(chǔ)和培養(yǎng)興趣。2、 總體設(shè)計(jì)【一】、學(xué)生成績排名主函數(shù)輸入學(xué)生成績組成框圖采用冒泡法,將學(xué)生成績按照從高到低進(jìn)行排序?qū)⒊煽冞M(jìn)行反向存放流程圖假真i=i+1Input aii=aii10-j?i=1jaii12?i=1Input:a11Printf:

2、請?jiān)佥斎胍粋€(gè)學(xué)生的成績假真i=i+1Printf:aii10?i=1Printf:學(xué)生成績按照從高到低的排序j=j+1t=ai+1ai+1=aiai=ti=i+1 假真假真假j=11t=a11i12?假真真i=1i=i+1j=j-1t=aiai=ajaj=tii 假真Printf:ai終止i=i+1 3、 詳細(xì)設(shè)計(jì)模塊功能說明1.該函數(shù)無子函數(shù),首先用for語句通過循環(huán)運(yùn)用數(shù)組做為變量來存儲各信息。2.根據(jù)題目要求用冒泡法排序。3.用scanf函數(shù)輸入學(xué)生成績。4.利用for語句排序。 4、 調(diào)試與測試測試過程中遇到的主要問題及采取的解決措施在測試中,我遇到的主要問題是“;”的漏打以及對于j為

3、11或12的判斷?!?;”漏打后在調(diào)試過程中系統(tǒng)會提示我進(jìn)行修正,而j的選擇則是在一次次的嘗試中發(fā)現(xiàn)正確的數(shù)字從而進(jìn)行運(yùn)用。5、 源程序清單和執(zhí)行結(jié)果程序#includevoid main() int a11; int i,j,t; printf(請輸入10個(gè)學(xué)生成績:n); for(i=1;i11;i+) scanf(%d,&ai); for(j=1;j11;j+) for(i=1;i11-j;i+) if(aiai+1) t=ai; ai=ai+1; ai+1=t;printf(學(xué)生成績按照從高到低的排序:n);for(i=1;i11;i+) printf(%4d,ai);printf(n)

4、;printf(請?jiān)佥斎肓硪粋€(gè)學(xué)生成績:);scanf(%d,&a11);for(i=1;iai)t=a11; for(j=12;ji;j-) aj=aj-1; aj=t;for(i=0;i11;i+)printf(n);printf(反向排序結(jié)果為: n);for(i=1,j=11;ij;i+,j-)t=ai;ai=aj;aj=t;for(i=1;i12;i+) printf(%3d ,ai);printf(n);執(zhí)行結(jié)果2、 總體設(shè)計(jì)【二】、根據(jù)條件進(jìn)行學(xué)生成績排名1) 在函數(shù)中進(jìn)行10個(gè)學(xué)生成績從高到低排名 sort(int a10)2) 改進(jìn)第一步的函數(shù)為sort(int a,int

5、n),進(jìn)行n個(gè)學(xué)生成績從高到低排名,3) 改進(jìn)第二步的函數(shù)為sort(int a,int n, char style), 將n個(gè)學(xué)生成績從高到低排名,排名方式根據(jù)sort()函數(shù)的style參數(shù)進(jìn)行,如style為a按升序排,style為d按降序排。(a:ascending 升,d:descending 降)組成框圖主函數(shù)Sort函數(shù) 流程圖i=0Printf:input errori=0elsebastylePrintf:Please input a(means ascending) or d(means descending)Input:s假真i=i+1Input:aiinPrintf:請

6、輸入同學(xué)的數(shù)目nInput:n=10i=0開始 inin假假真真j=0j=0假假真真jn-1-ijn-1-iajaj+1假假真真t=ajaj=aj+1aj+1=tt=ajaj=aj+1aj+1=t 假真終止i=i+1Printf:aiini=0i=i+1j=j+1i=i+1j=j+1 三、詳細(xì)設(shè)計(jì)模塊功能說明主函數(shù):用for語句通過循環(huán)運(yùn)用數(shù)組做為變量來存儲各信息。子函數(shù):根據(jù)兩種排序情況確定用switch語句。4、 調(diào)試與測試測試過程中遇到的主要問題及采取的解決措施在測試中,我遇到的主要問題是“;”的漏打?!?;”漏打后在調(diào)試過程中系統(tǒng)會提示我進(jìn)行修正。5、 源程序清單和執(zhí)行結(jié)果程序#incl

7、ude#includevoid sort (int a,int n, char style)int i,j,t;switch(style)case a:for(i=0;in;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;break;case d:for(i=0;in;i+)for(j=0;jn-1-i;j+)if(ajaj+1)t=aj;aj=aj+1;aj+1=t;break;default :printf(Input error.n);exit (0);void main()int a10,n,i;char s;printf(Please input the n

8、umber you want to rank(n=10) : );scanf(%d,&n);printf( Please input %d dates:n,n);for(i=0;in;i+)scanf(%d,&ai);printf(Please input a(means ascending) or d(means descending):);getchar();scanf(%c,&s);sort (a,n,s);for(i=0;in;i+)printf(%d ,ai);printf(n);執(zhí)行結(jié)果輸入a時(shí):輸入d時(shí):2、 總體設(shè)計(jì)【三】、用指針優(yōu)化學(xué)生成績排名1) 定義一個(gè)數(shù)組stu10存放

9、10個(gè)學(xué)生的成績,從鍵盤輸入數(shù)據(jù),要求用指針實(shí)現(xiàn)2) 將數(shù)組stu10的內(nèi)容輸出到屏幕上,要求用指針實(shí)現(xiàn)3) 將成績數(shù)組按照從高到低進(jìn)行排序,要求用指針實(shí)現(xiàn)4) 將第三步內(nèi)容放在函數(shù)中實(shí)現(xiàn),在主函數(shù)中調(diào)用實(shí)現(xiàn)排序,用指針實(shí)現(xiàn),輸出排序后的成績單5) 采用指針方法,輸入字符串“student score ”,復(fù)制該字符串并輸出(復(fù)制字符串采用庫函數(shù)或用戶自定義函數(shù))組成框圖Stuscore函數(shù)輸入數(shù)據(jù)Strs函數(shù)排序Sort函數(shù)復(fù)制字符串主函數(shù) 流程圖假真終止Printf:Copy the string and output string srt2 is: ,str2)strcpy(str2,s

10、tr1)*pstr=ch;pstr+(ch=getchar()!=nInput:chPrintf:input a string假真假真i=i+1p=p+1Printf:*pi10p=stu,i=0Printf:output the scoresi=i+1p=p+1Input:pi10p=stu,i=0Printf:請輸入10個(gè)學(xué)生成績:char*pstr;char str180,str280,ch;pstr=str1;intstu10;int*p;int i開始 假真終止i=i+1,p=p+1Printf:*pi10p=stu,i=0Printf:Output the score after

11、sort:真真假假假真i=i+1j=j+1t=stuistui=stujstuj=tstuistujj10j=j+1i9i=0 3、 詳細(xì)設(shè)計(jì)模塊功能說明開始聲明后續(xù)程序中所要使用的子函數(shù)。主函數(shù):調(diào)用函數(shù)。子函數(shù):輸入信息并根據(jù)提議復(fù)制用strcpy語句。子函數(shù):用for語句通過循環(huán)運(yùn)用數(shù)組做為變量來存儲各信息。并在此函數(shù)中再調(diào)用一個(gè)函數(shù)。子函數(shù):用冒泡法排序。4、 調(diào)試與測試五、源程序清單和執(zhí)行結(jié)果程序#include#includemain()void sort(int stu); void stuscore(); void strs(); strs(); printf(nn); stu

12、score(); void sort(int stu)int i,j,t;for(i=0;i9;i+)for(j=i+1;j10;j+) if(stuistuj) t=stui, stui=stuj; stuj=t;void strs()char *pstr;char str180,str280,ch;pstr=str1;printf(Input a string:n);while(ch=getchar()!=n)*pstr=ch;pstr+;strcpy(str2,str1);printf(Copy the string and output:n);printf(string srt2 is

13、:%sn,str2);void stuscore()int stu10;int *p;int i;printf(請輸入10個(gè)學(xué)生成績:n);for(p=stu,i=0;i10;i+,p+) scanf(%d,p);printf(Output the scores:n);for(p=stu,i=0;i10;i+,p+) printf(%3d,*p);printf(n);sort(stu);printf(Output the score after sort:n);for(p=stu,i=0;i10;i+,p+) printf(%3d,*p);printf(nnn);執(zhí)行結(jié)果:2、 總體設(shè)計(jì)【四】

14、學(xué)生成績單制作1) 定義一個(gè)結(jié)構(gòu)體數(shù)組,存放10個(gè)學(xué)生的學(xué)號,姓名,三門課的成績2) 從鍵盤輸入10個(gè)學(xué)生的以上內(nèi)容3) 輸出單門課成績最高的學(xué)生的學(xué)號、姓名、以及該門課程的成績4) 輸出三門課程的平均分?jǐn)?shù)最高的學(xué)生的學(xué)號、姓名及其平均分5) 將10個(gè)學(xué)生按照平均分?jǐn)?shù)從高到低進(jìn)行排序,輸出結(jié)果,格式如下所示:number name math Chinese English average103 tom 90 90 100 95101 alice 90 80 70 80組成框圖主函數(shù) 利用stu_max函數(shù)求單門成績最高的同學(xué)。利用stu_aver函數(shù)求平均分,求最高平均分并排序。 流程圖j3j

15、=0i=i+1j=j+1Printf:scoreInput:stui.scorejj3j=0Printf:請輸入學(xué)生學(xué)號Input:stui.numPrintf:請輸入學(xué)生姓名Input:INi=0 N=10開始 真假假真i=0iN假真終止Sum=0假真假真j3j=0i=0m=0,max=stu0.score0;假假真真i=i+1max=averagei;n=i;maxaveragein=0,max=average0i10i=0i=i+1averagei=sum/3j=j+1sum+=stui.scorej假假真真j=j+1輸出:第%d門功課獲得最高成績的同學(xué)是:stum.n

16、ame,stum.num,maxi=i+1max=stui.scorej;m=i;maxstui.scoreiaveragejjNj=0n=0;m=oi10 假假真m=5假真m=4e=iPrintf:stua.num,,stua.score0,stua.score1,stua.score2,averagea stub.num,,stub.score0,stub.score1,stub.score2,averageb stuc.num,,stuc.score0,stuc.score1,stuc.score2,averagec stud.num

17、,,stud.score0,stud.score1,stud.score2,averaged stue.num,,stue.score0,stue.score1,stue.score2,averagee, stuf.num,,stuf.score0,stuf.score1,stuf.score2,averagef);stug.num,,stug.score0,stug.score1,stug.score2,averageg)stuh.num,,stuh.score0,stuh.score1,stuh.sc

18、ore2,averageh)stuk.num,,stuk.score0,stuk.score1,stuk.score2,averagek) stul.num,,stul.score0,stul.score1,stul.score2,averagel);i=i+1假l=i真k=im=1假真假h=im=2真假h=im=2真g=im=3f=i 終止 三、詳細(xì)設(shè)計(jì)模塊功能說明主函數(shù):用for語句通過循環(huán)運(yùn)用數(shù)組做為變量來存儲各信息。子函數(shù):stu max函數(shù)求每門課程的最高成績并輸出第一名的信息。所用的是stu_ave函數(shù),功能是求出各個(gè)學(xué)生平均分,輸出第一名的信息

19、然后排序并輸出信息。4、 調(diào)試與測試五、源程序清單和執(zhí)行結(jié)果程序#include#define N 10struct studentchar num11;float score4;float sum; char name11;stuN;int main() void max(struct student stu11); void aver(struct student stu11); int i,j; for(i=0;iN;i+) printf(輸入學(xué)生姓名:);scanf(%s,); printf(輸入學(xué)生學(xué)號:); scanf(%s,stui.num); for(j=0;

20、j3;j+)printf(score %d:,j+1);scanf(%f,&stui.scorej); printf(n);aver(stu);max(stu);return 0;void max(struct student stu11)int i,j,m;float max;for(j=0;j3;j+)m=0,max=stu0.score0;for(i=0;iN;i+)if(maxstui.scorej)max=stui.scorej; m=i; printf(第%d門功課獲得最高成績的同學(xué)是:%s, %s , %5.2fn,j+1,,stum.num,max);void

21、 aver(struct student stu11) int i,j,n,a,b,c,d,e,f,g,h,k,l,m,average10;float sum,t,max; for (i=0;iN;i+)sum=0;for (j=0;j3;j+)sum+=stui.scorej;averagei=sum/3; for(i=0;i10;i+) n=0,max=average0; if(maxaveragei) max=averagei; n=i; printf(平均分最高的同學(xué)是:% s,% s,% 5.2dn,stun.num,,averagen); printf( numb

22、er. name math Chinese English averagen); for(i=0;i10;i+) n=0,m=0; for(j=0;javeragej) m+; if(m=9) a=i; else if(m=8) b=i; else if(m=7) c=i; else if(m=6) d=i; else if(m=5) e=i; else if(m=4) f=i; else if(m=3) g=i; else if(m=2) h=i; else if(m=1) k=i; else l=i;printf(%s,%s,%5.2f,%5.2f,%f,%dn,stua.num,,stua.score0,stua.score1,stua.score2,averagea);printf(%s,%s,%5.2f,%5.2f,%f,%dn,stub.num,,stub.score0,stub.score1,stub.score2,averageb);printf(%s,%s,%5.2f,%5.2f,%f,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論