题目内容:
有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);
}