深圳大學C程序設計LabAssignment4試驗報告文件操作_第1頁
深圳大學C程序設計LabAssignment4試驗報告文件操作_第2頁
深圳大學C程序設計LabAssignment4試驗報告文件操作_第3頁
深圳大學C程序設計LabAssignment4試驗報告文件操作_第4頁
深圳大學C程序設計LabAssignment4試驗報告文件操作_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、附件(四)本文檔僅限于學習交流,禁止抄襲。程序結 果截圖非本人信息,請自行修改。深 圳 大學實 驗 報 告課程名稱:C程序設計實驗名稱:Lab Assi gnment 4學 院:信息工程學院專 業(yè):指導教師:報告人:報告人學號:班級:實驗時間:報告提交時間:教務處制、實驗目的與要求1. 實驗目的:(1) 進一步掌握C語言的編程方法;進一步掌握數(shù)組的定義與使用;進一步掌握函數(shù)的定義和函數(shù)調用方法;(2) 學習和掌握結構體的定義和使用方法。(3) 學習和掌握文件的基本輸入輸出方法。2. 實驗要求:編寫一個通過鍵盤或文件輸入學生信息,并將學生信息輸出到文件和屏幕的程序。1) 定義一個 student

2、結構體如下:struct stude nt char name20; / 姓名float score4; /四門功課的成績float average; /四門功課的平均成績;其中,name中存放同學的姓名;score4數(shù)組中存放同學的英語、數(shù)學、物理、化學成 績;average中存放上述四門功課的平均成績。2) 編寫下面六個函數(shù)。其中6個函數(shù)中的后2個函數(shù)是文件操作函數(shù)。函數(shù)的具體要求:void in putFromKeyboard(struct stude nt stu, int num)從鍵盤輸入學生信息的函數(shù)。stu為結構體數(shù)組,num為數(shù)組中元素的個數(shù)。void outputToScr

3、ee n( struct stude nt stu, int num)將學生信息輸出到屏幕的函數(shù)。stu為結構體數(shù)組,num為數(shù)組中元素的個數(shù)。void averageScore(struct stude nt stu, int num)計算學生平均成績的函數(shù)。stu為結構體數(shù)組,num為數(shù)組中元素的個數(shù)。void sortByAverageScore(struct stude nt stu, int num)根據(jù)學生的平均成績對學生信息整體排序的函數(shù)。stu為結構體數(shù)組,num為數(shù)組中元素的個數(shù)。void in putFromFile(struct stude nt stu, int num

4、, FILE *fp)從文件輸入學生信息的函數(shù)。stu為結構體數(shù)組,num為數(shù)組中元素的個數(shù),fp為以"讀” 方式打開的文本文件的指針。void outputToFile(struct stude nt stu, int num, FILE *fp)將學生信息輸出到文件的函數(shù)。stu為結構體數(shù)組,num為數(shù)組中元素的個數(shù),fp為以“寫”方式打開的文本文件的指針。3)編寫主函數(shù)對你所編寫的上述六個函數(shù)進行調用驗證。主函數(shù)可分下面幾個階段編寫:第1個階段(可參考在第11章的實驗作業(yè)):定義 3個學生的結構體 數(shù)組,編寫函數(shù)in putFromKeyboard、outputToScree

5、n和 averageSco©調用函數(shù)inputFromKeyboard由鍵盤輸入學生的信息(姓名、英語、數(shù)學、物理、化學 成績),調用函數(shù)outputToScreen將輸入的信息顯示到屏幕上;上述兩個函數(shù)調試正確后,編寫函數(shù)averageScore并調用,計算每個同學的平均成績,然后調用函數(shù)outputToScree n,將計算后的數(shù)據(jù)信息顯示到屏幕上 第2個階段:編寫函數(shù) outputToFile。調用函數(shù)inputFromKeyboard由鍵盤輸入3個學生的信息(姓名、英語、數(shù)學、物理、化學成績),并以文本“寫”方式打開文本student1.txt文件,調用函數(shù)outputToF

6、ile,將這3個同學的信息存入 student1.txt文本文件,關閉該文件;使用 windows XP的“記事 本”文本編輯器打開文本文件student1.txt查看是否正確。其中,在程序運行后文本文件student1.txt中可能的內容及格式為:劉翔 88.0 76.0 78.0 70.0 -107374176.0姚明 98.0 67.0 79.0 65.0 -107374176.0李娜 89.0 79.0 85.0 79.0 -107374176.02第3個階段:編寫函數(shù) inputFromFile。將上面兩個階段中調用函數(shù)inputFromKeyboard的語句變成注釋行。以文本“讀”

7、方式打開文本student1.txt文件,調用函數(shù)inputFromFile,將這3個同學的信息讀入并存放到學生信息結構體數(shù)組中,關閉該文件;調用函數(shù)averageScore計算每個同學的平均成績,并將平均成績存儲在結構數(shù)組的相應 位置處。調用函數(shù)outputToScreen將學生的完整的信息顯示到屏幕上;以文本"寫”方式打開文本student2.txt文件,調用函數(shù) outputToFile,將這3個同學的計算有平均成績的所有信息存入student2.txt文本文件,關閉該文件;在這段程序運行后文本文件student2.txt中可能的內容及格式為:文U翔 88.0 76.0 78.

8、0 70.0 78.0姚明 98.0 67.0 79.0 65.0 77.3李娜 89.0 79.0 85.0 79.0 83.0第4個階段,完整調試6個函數(shù):編寫函數(shù) sortByAverageScore。在第3階段編寫的程序段后面添加下面的語句:調用函數(shù)sortByAverageScore根據(jù)學生的平均成績對學生信息整體排序。調用函數(shù)outputToScreen將學生的完整的信息顯示到屏幕上;以文本"寫”方式打開文本 student3.txt文件,調用函數(shù)outputToFile,將排序后的這 3個同學的所有信息存入student3.txt文本文件,關閉該文件;在程序運行后文本文

9、件student3.txt中可能的內容及格式為:李娜 89.0 79.0 85.0 79.0 83.0文U翔 88.0 76.0 78.0 70.0 78.0姚明 98.0 67.0 79.0 65.0 77.3結束主程序。二、實驗步驟與過程:1.試驗流程圖設計:開始in putStude ntlnform函數(shù),用于輸入學生的信息定義一個結構體,類型是stude nt編寫 outputToFile函數(shù),用于向文件中輸入數(shù)據(jù)編寫 averageScore函數(shù),用于計算學 生的平均成績編寫 in putFromFile函數(shù),用于向文件 中讀取數(shù)據(jù)編寫outputStude ntl nform函數(shù),

10、用于輸出 學生的信息寫主函X, 調I用in putStude ntlnform 函 outputStudentlnform數(shù)并從鍵盤輸入和輸出調用 outputToFile函數(shù),用于將輸入的數(shù)據(jù)存入stude nt1.txt文件中先注釋掉上面的代碼,然后調用 outputStude ntlnform文件中讀取上一步驟中輸入的數(shù)據(jù)in putFromFile和函數(shù),用于從 居和輸出數(shù)據(jù)stude nt1.txt編與-sortByAverageScore函數(shù),用于對學生的成績排序調用 averageScore函數(shù)和outputStude ntln form函數(shù)用于計算各位同學的平均成績,然后將新的

11、數(shù)據(jù)寫入到stude nt2.txt文件中調用 sortByAverageScore函數(shù)和outputStude ntlnform,分別用于對成績排序和將新的數(shù)據(jù)寫入到stude nt3.txt文件中結束2.本實驗的代碼:#include "stdio.h"#include"stdlib.h"#define NUM 4struct student char name20; int score4; float average;void inputStudentlnform(struct student stugint num)int k = 0;for(;

12、k < num;k +)printf("請輸入第%d個同學的姓名:”,k + 1);gets();fflush(stdin);printf("請輸入第%d個同學的英語成績:”,k + 1);scanf("%d", &stuk.score0);printf("請輸入第%d個同學的數(shù)學成績:",k + 1);scanf("%d", &stuk.score1);printf("請輸入第%d個同學的物理成績:",k + 1);scanf("%d"

13、;, &stuk.score2);printf("請輸入第%d個同學的化學成績:”,k + 1);scanf("%d", &stuk.score3);fflush(stdin); void averageScore(struct student stu, int num) int k = 0;for(;k < num;k +)stuk.average = 0;for(int i = 0; i < 4;i +)stuk.average += stuk.scorei;stuk.average /= 4.0; void outputStude

14、ntlnform(struct student stu, int num) int k = 0;for(;k < num;k +)printf("n第%d個同學的信息如下:n",k +1); printf(” 姓名:%sn",);printf(” 英語成績:%dn",stuk.score0); printf("數(shù)學成績:%dn",stuk.score1); printf("物理成績:%dn",stuk.score2); printf("化學成績:%dnn",stuk.sc

15、ore3); printf("平均成績:%.2fnn",stuk.average);void outputToFile(struct student stu, int num,FILE *fp)int k;for(k = 0; k < num; k +)fprintf(fp,"%s",); fprintf(fp,"t%d",stuk.score0); fprintf(fp,"t%d",stuk.score1); fprintf(fp,"t%d",stuk.score2);

16、 fprintf(fp,"t%d",stuk.score3); fprintf(fp,"t%f",stuk.average); fprintf(fp,"n"); fclose(fp);void inputFromFile(struct student stu, int num,FILE *fp) int k;for(k = 0; k < num; k +)fscanf(fp,"%s", &);fscanf(fp,"%d", &stuk.score0);fs

17、canf(fp,"%d", &stuk.score1);fscanf(fp,"%d", &stuk.score2);fscanf(fp,"%d", &stuk.score3); fscanf(fp,"%f", &stuk.average);void sortByAverageScore(struct student stu, int num)int k=0;struct student temp;for(int i=0;ivnum-1;i+)k=i;for(int j=i+1;jvn

18、um;j+) if(stuk.average>stuj.average) k=j;if(k!=j)temp = stui;stui=stuk; stuk=temp;void main()FILE *fp1,*fp2,*fp3;struct student stuNUM;/*-輸入學生的成績數(shù)據(jù)并存入student1文件中*/inputStudentInform(stu,NUM);fp1 = fopen("student1.txt","w+");if(fp1 = NULL)printf(” 打不開 student1 文件:n");exit(

19、0);outputToFile(stu,NUM,fp1);fclose(fp1);/*打開student文件并計算各位同學成績的平均數(shù)并將新的數(shù)據(jù)存入student2文件中-*/fp1 = fopen("student1.txt","r+");if(fp1 = NULL)printf("不存在 student1 文件:n");exit(0);inputFromFile(stu,NUM,fp1);fclose(fp1);averageScore(stu,NUM);outputStudentInform(stu,NUM);fp2 = fo

20、pen("student2.txt","w");if(fp2 = NULL)printf(” 打不開 student2 文件:n"); exit(0);outputToFile(stu,NUM,fp2);fclose(fp2);student3文件中/*-將各位同學按照平均成績由小到大的順序排列并將新的數(shù)據(jù)存入 去-*/sortByAverageScore(stu,NUM);outputStudentlnform(stu,NUM);fp3 = fopen("student3.txt","w");if(fp

21、3 = NULL)printf(” 打不開 student3 文件:n"); exit(0);outputToFile(stu,NUM,fp3);fclose(fp3);:n:p成專成成:專成成3 B 6 9 ? 2 9 0 9787rinu雖 半yy?881«fi988帥東t : I娶績績第績績績績m績績績績Je績績績績咸成e子理子理各苕匿于理嚴哮直-T-理沖子nt 'y.IIrT'p一. “E- “o'!l;iJ.J,'r.L L “ LL 一 丄 *1Iu'nl81 II 'p一.丿E-,一 “ 4'4'

22、八I 11 gr,L【'LL 一GssJssiTi tanliglIHI_ 一 口司司Rglfg司司可司liglfg司司司Rw司司eJJ 4:;.c:;Lnf:;L:;.cf-:;Ln-r k 11111222223333344444 I 第第第算算第第第第算第第第需第幣第第幣幣 A-.XVI-.八入入入入吐 .-八八I-.AAAA 請請請請謂請請請請請請請請請士冃ig請請工平均咸績B7.5W書暫卜股學的信總如下,F均用細 BV.5WH4.5W屮站咸績,93V8Rfi7V卷戳監(jiān)卸證如下,»9 .00Hb 9-1 RfiWV平対咸Pi*<* s a nn ><

23、c y tn cnnClmic<:ststOebMgst-exe "下 D女程彌嚴下' liii: 勺信息如下,第3個冋學 英語成績: 藪孚成績. 楊理成績, 4仝I物理 花學平均成績,H9.004均成績,«7.50F均成績:84.50第丄個同學的信息如下: 姓各TomI r±i q平坨成漬2«9.5H9193868Hirw l$*>*Y -tt. ri VifTT 比學成績gi著咸綺»9隸學戒篇:92枷瑁成績.79化片咸績.VU欲宇應纟責:78 物王里成績:88 彳丘學成績:"第2, 姓務 -xtx-1-gstu

24、dent2.txt 記事本15 3 99 8 9 8文件(D 扁輯 格式(Q) W(V)耕助但)8889. 5000008929. 0000007984. 5000009087. 500000Toro文件(D 錨 匡)格式(Q)童看世)幫助(W9378887984. 5000008992799087.5000008594888989.0000009193868889.500000student3.txt -記事本四、實驗結果與數(shù)據(jù)分析:1. 首先,這次實驗讓我進一步掌握C語言的編程方法;進一步掌握數(shù)組的定義與使用;進一步掌握函數(shù)的定義和函數(shù)調用方法;學習和掌握結構體的定義和使用方法以及文件的基本輸入輸岀方法。2. 其次,這次實驗鍛煉了我的邏輯思維能力,第一次寫完代碼之后心里很得意,但是運行之后我就發(fā)現(xiàn)不用管我輸入什么坐標,結果都是“您在A區(qū)”,這令我很郁悶,因為代碼編譯沒有錯誤啊。后來我發(fā)現(xiàn)有幾句判斷的語句我放的位置不對,我就把不同程序段的代碼調換了一下順序就好了。通過這個錯誤我體會到了結構化程序設計語言的執(zhí)行特點了:從上往下依次執(zhí)行。3. 我認

溫馨提示

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

評論

0/150

提交評論