1.實驗目的與要求css
⑴ 掌握用C語言編寫查詢統計程序。html
⑵ 掌握C語言的文件讀寫的基本操做。c++
2.實驗內容函數
⑴ 建立一個文本文件,含有若干班級的數據,要求其數據每一個班級至少有50位同窗,每位同窗至少學習10門課程學習
⑵ 寫出函數求出某一位的平均成績code
⑶ 寫出函數求出每一位的平均成績htm
⑷ 使用文件讀入相關數據,將運行結果送到文件中blog
3.實驗準備get
首先應明確建立文本文件的格式,數據協議等。input
其次根據文件讀取數據,並將結果送入結果文件中。
參閱C語言教材中的有關內容。
4.實驗方法
⑴ 用建立文本文件的格式建立數據。
⑵ 編制相應功能函數。
⑶ 讀取文件的數據(注意可能有不一樣的個數的數據)。
⑷ 整合相關函數構成完整的應用程序。
⑸ 輸出結果送入文件中。
代碼
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 153 struct student_type { char name[20];//姓名 int num;//學號 int hhh;//班級 float score1;//數學 float score2;//英語 float score3;//物理 float score4;//電路 float score5;//馬原 float score6;//離散 float score7;//Java float score8;//c語言 float score9;//c++ float score10;//HTML float score11;//CSS } stud[SIZE]; void menu() { printf("\t\t\t ********************************\n"); printf("\t\t\t 學生成績查詢系統1.0 \n"); printf("\t\t\t [1] 查看全部學生信息 \n"); printf("\t\t\t [2] 查詢學生我的成績 \n"); printf("\t\t\t [0] 退出 \n "); } void re_menu() { char c1, c2; printf("\n\n\n按回車鍵返回主菜單"); scanf("%c,%c", &c1, &c2); menu(); } int seek() { int i; float ave[SIZE]; FILE *fp = fopen("input.txt", "rw+"); FILE *fpWrite = fopen("out.txt", "a+"); if (fpWrite == NULL && fp == NULL) { printf("cannot open file\n"); return 0; } for (i = 1; i <= SIZE; i++) { fscanf(fp, " %s %d %d %f %f %f %f %f %f %f %f %f %f %f\n", stud[i].name, &stud[i].hhh, &stud[i].num, &stud[i].score1, &stud[i].score2, &stud[i].score3, &stud[i].score4, &stud[i].score5, &stud[i].score6, &stud[i].score7, &stud[i].score8, &stud[i].score9, &stud[i].score10, &stud[i].score11); } printf("姓名\t班級\t學號\t數學\t英語\t物理\t電路\t馬原\t離散\tJava\tc語言\tc++\tHTML\tcss\t平均分\n"); for (i = 1; i <= SIZE; i++) { ave[i] = (stud[i].score1 + stud[i].score2 + stud[i].score3 + stud[i].score4 + stud[i].score5 + stud[i].score6 + stud[i].score7 + stud[i].score8 + stud[i].score9 + stud[i].score10 + stud[i].score11) / 11; printf(" %s\t%d\t %d\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\n ", stud[i].name, stud[i].hhh, stud[i].num, stud[i].score1, stud[i].score2, stud[i].score3, stud[i].score4, stud[i].score5, stud[i].score6, stud[i].score7, stud[i].score8, stud[i].score9, stud[i].score10, stud[i].score11,ave[i]); fprintf(fpWrite, "%s" "平均分:" "%-7.1f\n", stud[i].name, ave[i]); } fclose(fp); fclose(fpWrite); return 0; } int seek1() { FILE *fp; int i; float ave; if ((fp = fopen("input.txt", "rw+")) == NULL) { printf("cannot open file\n"); return 0; } for (i = 1; i <= SIZE; i++) { fscanf(fp, " %s %d %d %f %f %f %f %f %f %f %f %f %f %f\n", stud[i].name,&stud[i].hhh, &stud[i].num, &stud[i].score1, &stud[i].score2, &stud[i].score3, &stud[i].score4, &stud[i].score5, &stud[i].score6, &stud[i].score7, &stud[i].score8, &stud[i].score9, &stud[i].score10, &stud[i].score11); } printf("請輸入你要查找的學生的班級+空格+學號"); int nub1; int nub2; int size; scanf("%d", &nub1); scanf("%d", &nub2); for (i = 1; i <= SIZE; i++) { if (stud[i].hhh == nub1 && stud[i].num == nub2) { size=i; ave = (stud[i].score1 + stud[i].score2 + stud[i].score3 + stud[i].score4 + stud[i].score5 + stud[i].score6 + stud[i].score7 + stud[i].score8 + stud[i].score9 + stud[i].score10 + stud[i].score11) / 11; printf("姓名\t班級\t學號\t數學\t英語\t物理\t電路\t馬原\t離散\tJava\tc語言\tc++\tHTML\tcss\t平均分\n"); printf(" %s\t%d\t %d\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t ", stud[i].name, stud[i].hhh, stud[i].num, stud[i].score1, stud[i].score2, stud[i].score3, stud[i].score4, stud[i].score5, stud[i].score6, stud[i].score7, stud[i].score8, stud[i].score9, stud[i].score10, stud[i].score11,ave); } } fclose(fp); FILE *fpWrite = fopen("out.txt", "a+"); if (fpWrite == NULL) { return 0; } fprintf(fpWrite, "%s" "平均分:" "%-7.1f\n", stud[size].name, ave); fclose(fpWrite); return 0; } int main() { menu(); int a; while (1) { scanf("%d", &a); switch (a) { case 1: seek(); break; case 2: seek1(); break; } if (a == 0) break; re_menu(); } return 0; }