c++程序设计,求完整程序参考

有3个学生stu[3],每个学生的数据包括学号、姓名、3门课的成绩(声明struct student结构体类型),从键盘输入3个学生的数据,要求调用子函数average求出3门课的总平均成绩(函数首部:int average(struct student *ps),函数返回值为3个学生3门课的总平均成绩,即9个成绩的平均值),调用子函数getMax找出所有成绩中最高分的学生序号,在主函数中输出三门课的总平均成绩,以及最高分学生的数据(包括学号、姓名、3门课成绩)。运行结果如图1所示,程序结构如下,请完善程序。
#include
struct student
{//成员列表
int num; //学号
char name[20]; //姓名
float score[3]; //存放3门课成绩
};
float average(struct student *ps) // 返回3个学生的3门课的总平均成绩
{
}
int getMax(struct student *ps)// 返回3个学生3门课成绩中最高分的学生序号
{
}
void main()
{

struct student stu[3];
//定义其他变量

//从键盘输入3个学生的学号、姓名、3门课的成绩
//调用子函数average求出3个学生3门课的总平均成绩
//输出总平均成绩
//调用子函数getMax找出最高分的学生序号
//输出最高分学生的数据(包括学号、姓名、3门课成绩)
}
图片说明

 float average(struct student *ps) // 返回3个学生的3门课的总平均成绩
{
float sum = 0;
for (int i = 0; i < 3; i++)
{
sum += (*ps + i) -> score[0];
sum += (*ps + i) -> score[1];
sum += (*ps + i) -> score[2];
}
return sum / 9.0;
}
int getMax(struct student *ps)// 返回3个学生3门课成绩中最高分的学生序号
{ 
float max = 0;
for (int i = 0; i < 3; i++)
{
if (max < (*ps + i) -> score[0]) max = (*ps + i) -> score[0];
if (max < (*ps + i) -> score[1]) max = (*ps + i) -> score[1];
if (max < (*ps + i) -> score[2]) max = (*ps + i) -> score[2];
}
return (int)max;
}
float average(struct student* ps) {
int tmp;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
tmp += ps[i].score[j];
}}
return (tmp / 9);
int getMax(struct student *ps) {
int a = ps[1].score[1] + ps[1].score[2] + ps[1].score[3];
int b = ps[2].score[1] + ps[2].score[2] + ps[2].score[3];
int c = ps[3].score[1] + ps[3].score[2] + ps[3].score[3];
if (a > b) {
    if (c > a) return ps[3].id;
    else        return ps[1].id;
}
else {
    if (c > b) return ps[3].id;
    else         return ps[2].id;
}
}

这个你能更好理解吧,望采纳