資源描述:
《C語言程序設計A綜合程序設計》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、C語言程序設計A實驗綜合程序設計桂林電子科技大學教學實踐部秦興國Email:xgqin@guet.edu.cnOutline實驗目的和實驗要求綜合程序設計實驗要求實驗提示實驗目的和實驗要求利用所學過的C語言編程的基礎知識如綜合順序、分支、循環(huán)結構和函數(shù),以及數(shù)組、指針、結構體和共用體、文件等進行編程,較全面地掌握C語言的知識;初步掌握輸入、輸出、查找、排序的編程方法;逐步掌握C語言編程基本方法和技能。綜合程序設計實驗要求-1綜合程序設計實驗(對應指導書上實驗13)由同學們在課外完成;綜合程序設計實驗內(nèi)容涉及文件、結構體、指針等概念;對這些概念不熟悉的同學了解相關理
2、論知識或者對照實驗指導書中相關內(nèi)容進行學習;實驗內(nèi)容為1~3(任選一題),實驗內(nèi)容4不要求;綜合程序設計實驗要求-2提交報告時間為第18周周3;過期未提交者則該次實驗為0分;提交報告時,請將源代碼與實驗報告分別單獨提交;不要抄襲,報告提交系統(tǒng)有檢測抄襲功能;實驗提示:水費電費問題-1題目及要求如實驗指導書p69所述提示所有輸入數(shù)據(jù)均從文件input.dat中讀取,注意input.dat為文本文件,讀取該文件時,應采文本文件格式讀取(fp=fopen(“input.dat”,“r”));input.dat文件第一行分別為水費和電費的單價;讀取文件時應注意文件指針是否
3、已經(jīng)到達文件尾;實驗提示:水費電費問題-2提示對于住戶地址、水耗、電耗等信息可以采用多種形式進行存儲:以下列出2種使用三個數(shù)組分別存儲住戶地址、水耗、電耗三個數(shù)組(例如a[N],b[N],c[N])的長度分別為總的用戶數(shù),可以通過#defineN6等宏定義進行定義使用結構體數(shù)組存儲住戶地址、水耗、電耗定義的結構體應該至少包含3個成員,例如:structinfo{intaddress;intwater_consume;intelec_consume;}arrary[N];//定義長度為N的結構數(shù)組實驗提示:水費電費問題-3提示所編寫的程序,應該給出足夠的提示信息,以
4、便程序運行者能知道程序的功能,以及程序的狀態(tài)和完成的工作。程序編寫應該具有擴展性,能針對同一格式的輸入數(shù)據(jù)文件,產(chǎn)生一致的結果。程序應該能夠?qū)γ黠@的數(shù)據(jù)錯誤進行檢查。讀寫文件可考慮使用fscanf、fprintf等文件操作函數(shù)。實驗提示:學生課程信息管理-1題目及要求如實驗指導書p70所述提示input函數(shù)要自己編寫,其功能是從鍵盤中輸入所有學生的課程信息(包括:學號、姓名、5門課程成績);保存鍵盤輸入的學生數(shù)據(jù)至文件cj.dat中;PrintScore函數(shù)要自己編寫,其功能是輸出每一門課程的成績表,注意其輸出按照學號從小到大的順序輸出;PrintScore函數(shù)還
5、負責輸出全班成績的統(tǒng)計信息,具體信息如p70最后5行所述;實驗提示:學生課程信息管理-2提示學生信息的描述,可以采用與“水電費問題”中關于用戶信息描述相類似的做法:定義3個數(shù)組用于描述學生的相關信息,例如:charid[N][20];charname[N][20];intscore[N][7];其中N代表學生總數(shù),對于某一個學生的id,姓名可以通過scanf(“%s”,id[i]);scanf(“%s”,name[i]);進行輸入;實驗提示:學生課程信息管理-3提示score數(shù)組則用于存儲學生的成績和總分以及平均分;對于某一個學生而言,其對應score[i]開始的
6、數(shù)組元素;則score[i][0]~score[i][4]可用于保存學生的5門課程成績;score[i][5]、score[i][6]則可分別用于保存總分和平均分;通過這樣,則可在每輸入完一個學生的成績后即可算出其總分和平均分,并將其保存至score數(shù)組相應元素中,方便后續(xù)操作使用;注意輸入成績應使用類似的格式:scanf(“%d”,&score[i][j]);其中0<=j<=4,0<=i7、trcmp(id[i],id[j])>0){//說明id[i]對應的學號比id[j]對應的學號要大…}else{//說明id[i]對應的學號比id[j]對應的學號要小…}實驗提示:學生課程信息管理-5提示課程成績表按學號大小進行排序時,可采用簡單的排序算法,但應該注意在排序算法中進行元素交換時,不應該只是某2個學生的學號進行交換,而應該包括與這2個學號對應的學生的所有信息都進行交換。if(strcmp(id[i],id[j])>0){//說明id[i]對應的學號比id[j]對應的學號要大//學號對應的位置進行交換strcpy(temp_id,id[i]);//te
8、mp_id