大家可以看看这道结构体问题吗

题目内容:

有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生数据,要求输出3门课总平均成绩,以及分数最高的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。

输入格式:

每行输入一个学生的学号、姓名和三门课成绩,用空格分隔,一共输入5个学生信息。

输出格式:

第一行输出3门课总平均成绩,成绩小数点后保留两位。

第二行输出分数最高的学生的数据,成绩小数点后保留两位。

输入样例:

2020001 李文祥 90 98 90

2020002 于刚 85 93 88

2020003 王伟 60 80 70

2020004 丁杰 96 98 85

2020005 沈帆 76 85 90

输出样例:

85.60

2020004 丁杰 96.00 98.00 85.00 93.00


#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#pragma warning(disable:4996)

typedef struct
{
    int mark[3];
    char stuNum[10];
    char stuName[15];
}StudentInfoTypedef;
int main() {
    StudentInfoTypedef student[5];
    StudentInfoTypedef bestStudent = { 0 };
    int i = 0,j = 0, sum = 0, maxMark = 0;
    float average = 0;
    for (i = 0; i < 5; i++)
    {
        scanf("%s %s %d %d %d", student[i].stuNum, student[i].stuName,
            &student[i].mark[0], &student[i].mark[1], &student[i].mark[2]);
        for (j = 0; j < 3; j++)
        {
            sum += student[i].mark[j];
        }
        average += sum;
        if (sum > maxMark)
        {
            maxMark = sum;
            memcpy(&bestStudent, &student[i], sizeof(StudentInfoTypedef));
        }
        sum = 0;
    }
    average /= 15.0;
    printf("%.2f\n%s %s %.2f %.2f %.2f %.2f", average, bestStudent.stuNum, bestStudent.stuName,
        (float)bestStudent.mark[0], (float)bestStudent.mark[1], (float)bestStudent.mark[2],
        ((float)bestStudent.mark[0] + (float)bestStudent.mark[1] + (float)bestStudent.mark[2]) / 3.0);

}

img