有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出
#include <stdio.h>
#include <stdlib.h>
#define M 5
struct student{
int num;
char name[20];
float score[3];
float aver;
}stu[M];
struct student iNput()
{
int i;
printf("请输入学号、姓名、三门课程成绩:\n");
for(i=0;i<M;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]);
}
}
float averAge()
{
int i;
for(i=0;i<M;i++)
{
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
int mAx(float a[])
{
int n,cmd,max=0;
for (n=0;n<M;n++)
{
if(a[n]>max)
{
max=a[n];
cmd=n;
}
}
return cmd; //这一步能够返回最高分的学生是第几个
}
void main()
{
float m[M];
int i,cmd;
iNput(); //调用input来输入5组数据
averAge(); //调用averAge求出平均分数
for(i=0;i<M;i++)
{
m[i]=stu[i].aver; //把平均数输入到m数组里面去
}
cmd=mAx(m); //找到最大值所对应的那个学生
printf("最高平均分是%f\n",stu[cmd].aver);
for(i=0;i<M;i++)
{
printf("第%d个同学的总平均分是%f\n",i+1,stu[i].aver);
}
printf("最高分学生的数据如下:\n");
printf("学号:%d 姓名:%s A:%.1f B:%.1f C:%.1f 平均分:%.1f\n",stu[cmd].num,stu[cmd].name,stu[cmd].score[0],stu[cmd].score[1],stu[cmd].score[2],stu[cmd].aver);
}