题目:
有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩。从键盘中输入N个学生的信息, 要求输出平均成绩最高的学生信息,包括 学号、性别、姓名、平均成绩。
#include<stdio.h>
#define N 3
struct StuScore{
float firstGrade;
float secondGrade;
float thirdGrade;
float fourthGrade;
};
struct Student{
char stuNum[20];//学号
char stuSex[10];//性别
char stuName[20];//姓名
struct StuScore score;//四门课的成绩结构体
};
int main(){
struct Student students[N];
float avgGrade[N];
int index = 0;//用于记录成绩数组中成绩最大的下标,此处假设第一个学生的平均成绩最高
printf("请输入学生的信息: 姓名: 性别: 学号: 四门课的成绩:");
for(int i = 0; i <= N; i ++){
scanf("%s %s %s %lf %lf %lf %lf", students[i].stuName, students[i].stuSex, students[i].stuNum,
&students[i].score.firstGrade, &students[i].score.secondGrade, &students[i].score.thirdGrade, &students[i].score.fourthGrade);
avgGrade[i] = (students[i].score.firstGrade + students[i].score.secondGrade + students[i].score.thirdGrade + students[i].score.fourthGrade) / N;
}
//用于找到平均成绩最大的元素数组下标
for(int i = 0; i < N; i ++){
if(avgGrade[i] > avgGrade[index]){
index = i;//记录平均值最大的数组元素下标,采用哨兵
}
}
printf("平均成绩最高的学生的信息为: 姓名 :%s 性别: %s 学号:%s 平均成绩: %lf", students[index].stuName, students[index].stuSex, students[index].stuNum, avgGrade[index]);
return 0;
}