1. 程式人生 > >資料結構第二週 專案2程式的多組織檔案

資料結構第二週 專案2程式的多組織檔案

**問題及程式碼:

/*
*(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()函式,用於呼叫相關函式,實現問題求解目標。