#include <stdio.h>
#define SIZE 3
struct student {
int num;
char name[20];
float score[3];
float aver;
};
void input(struct student stu[], int size)
{
int i;
printf("请输入各学生的信息:学号、姓名、3门课成绩:\n");
for (i = 0; i < size; i++)
{
scanf("%d %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
}
struct student max(struct student stu[], int size) {
int i, m = 0;
for (i = 1; i < size; i++) {
if (stu[i].aver > stu[m].aver)
m = i;
}
return stu[m];
}
void print(struct student stud) {
printf("\n成绩最高的学生是:\n");
printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",
stud.num, stud.name, stud.score[0], stud.score[1], stud.score[2], stud.aver);
}
int main() {
char n;
int flag = 0;
struct student stu[SIZE]; // 定义一个student结构体数组stu
struct student *st = stu; // 定义一个指向student结构体变量的指针st
printf("1--输入学生信息\n");
printf("2--输出平均分最高的学生信息\n");
printf("3--退出程序\n");
printf("请选择\n");
while (1) {
n = getchar();
// 清除输入缓冲区
while (getchar() != '\n');
switch (n) {
case '1':
input(st, SIZE);
printf("请选择\n");
flag = 1;
break;
case '2':
if (flag == 1) {
struct student highest = max(st, SIZE);
printf("平均成绩最高的学生信息为:\n");
print(highest);
printf("请选择\n");
} else {
printf("请先输入学生信息!\n");
printf("请选择\n");
}
break;
case '3':
printf("退出程序\n");
return 0;
default:
printf("输入错误,请重新选择!\n");
printf("请选择\n");
break;
}
}
return 0;
}