【练习】
题目要求:
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩。
从键盘输入N个学生的数据。
要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
#include <stdio.h>
#define N 100
struct Student
{
char id[10];
char name[10];
int g1;
int g2;
int g3;
int grade;
};
int main()
{
void input(struct Student *s,int n);
int average(struct Student *s,int n);
int n,m;
struct Student s[N];
scanf("%d",&n);
input(s,n);
m = average(s,n);
printf("%s %s %d %d %d",s[m].id,s[m].name,s[m].g1,s[m].g2,s[m].g3);
return 0;
}
void input(struct Student *s,int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%s%s%d%d%d",&s[i].id,&s[i].name,&s[i].g1,&s[i].g2,&s[i].g3);
s[i].grade = s[i].g1+s[i].g2+s[i].g3;
}
}
int average(struct Student *s,int n)
{
int k,m,max;
int s1=s[0].g1,s2=s[0].g2,s3=s[0].g3;
max=s[0].grade;
for(k=1;k<n;k++)
{
if(max<s[k].grade)
{
max= s[k].grade;
m = k;
}
s1+= s[k].g1;
s2+= s[k].g2;
s3+= s[k].g3;
}
printf("%d %d %d\n",s1/n,s2/n,s3/n);
return m;
}