資料結構第二週 專案2程式的多組織檔案
阿新 • • 發佈:2018-12-13
**問題及程式碼:
/* *(1) .h 標頭檔案:定義資料型別、宣告自定義函式、定義巨集等 *(2).cpp 原始檔1:用於實現標頭檔案中宣告的自定義函式 *(3).cpp 原始檔2:定義main()函式,用於呼叫相關函式,實現問題求解目標。 *標頭檔案:tou.h *原始檔1:hssm.cpp *原始檔2:main.cpp */ #include <stdio.h> using namespace std; #define MaxStud 50 //學生人數最多為50 #define MaxCour 300 //學生成績記錄數最多為50*6 struct stud1 { int no; //學號 char name[10]; //姓名 int bno; //班號 }; struct stud2 { int no; //學號 int cno; //課程編號 int deg; //分數 }; double studavg(struct stud2 s2[], int m, int i); //求學號為i的學生的平均分 double couravg(struct stud2 s2[], int m, int i); //求編號為i的課程的平均分 void allavg(struct stud1 s1[], int n, struct stud2 s2[], int m); //求學生平均分和課程平均分
#include"tou.h" double studavg(struct stud2 s2[], int m, int i) //求學號為i的學生的平均分 { int j, n = 0; //n為學號為i的學生選學課程數 double sum = 0; //學號為i的學生總分 for (j = 0; j<m; j++) if (s2[j].no == i) //學號為i時統計 { n++; sum += s2[j].deg; } return(sum / n); } double couravg(struct stud2 s2[], int m, int i) //求編號為i的課程的平均分 { int j, n = 0; //n為編號為i的課程選修人數 double sum = 0; //編號為i的課程總分 for (j = 0; j<m; j++) { if (s2[j].cno == i) //課程編號為i時統計 { n++; sum += s2[j].deg; } } return(sum / n); } void allavg(struct stud1 s1[], int n, struct stud2 s2[], int m) //求學生平均分和課程平均分 { int i, j; printf("學生平均分:\n"); printf(" 學號 姓名 平均分\n"); i = 0; while (i<n) { j = s1[i].no; printf("%4d %10s %g\n", s1[i].no, s1[i].name, studavg(s2, m, j)); i++; } printf("課程平均分:\n"); for (i = 1; i <= 6; i++) printf(" 課程%d:%g\n", i, couravg(s2, m, i)); }
#include"tou.h" int main() { int n = 7; //學生記錄人數 int m = 21; //學生成績記錄數 struct stud1 s1[MaxStud] = { { 1,"張斌",9901 }, { 8,"劉麗",9902 }, { 34,"李英",9901 }, { 20,"陳華",9902 }, { 12,"王奇",9901 }, { 26,"董強",9902 }, { 5,"王萍",9901 } }; struct stud2 s2[MaxCour] = //規定課程的編號從1到6,同一學生成績記錄連續存放 { { 1,1,67 }, { 1,2,98 }, { 1,4,65 }, { 8,1,98 }, { 8,3,90 }, { 8,6,67 }, { 34,2,56 }, { 34,4,65 }, { 34,6,77 }, { 20,1,68 }, { 20,2,92 }, { 20,3,64 }, { 12,4,76 }, { 12,5,75 }, { 12,6,78 }, { 26,1,67 }, { 26,5,78 }, { 26,6,62 }, { 5,1,94 }, { 5,2,92 }, { 5,6,89 } }; allavg(s1, n, s2, m); return 0; }
執行結果:
知識點總結:** 最簡單的多檔案組織,一個專案中有3個檔案: (1) .h 標頭檔案:定義資料型別、宣告自定義函式、定義巨集等 (2).cpp 原始檔1:用於實現標頭檔案中宣告的自定義函式 (3).cpp 原始檔2:定義main()函式,用於呼叫相關函式,實現問題求解目標。