题目描述
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
输入
学生数量N占一行。每个学生的学号、姓名、三科成绩占一行,空格分开。
输出
各门课的平均成绩(整型数据),及总分最高的学生的数据(包括学号、姓名、3门课成绩)
样例输入
2 1 blue 90 80 70 b clan 80 70 60
样例输出
85 75 65 1 blue 90 80 70
#include<stdio.h>
struct student
{
char num[6];
char name[8];
int score[3];
} stu[100];
void print(struct student st)
{
int j;
printf("%s %s",st.num,st.name);
for(j=0; j<3; j++)
printf(" %d",st.score[j]);
printf("\n");
}
void input(struct student *Pst)
{
int i = 0, j;
scanf("%s",Pst[i].num);
scanf("%s",Pst[i].name);
for(j=0; j<3; j++)
scanf("%d",&Pst[i].score[j]);
}
int main()
{
int k, flag, max = 0;
int i, j, sum[3] = {0};
int N;
scanf ("%d",&N);
int summ[N];
for(i = 0; i < N; i++)
summ[i] = 0; //初始化数组
for(k = 0; k < N; k++)
input(&stu[k]); //输入
for(j = 0; j < 3; j++)
for(i = 0; i < N; i++)
sum[j] += stu[i].score[j]; //单科分数综和
for(j = 0; j < N; j++)
summ[j] += (stu[j].score[0] + stu[j].score[1] + stu[j].score[2]); //个人总分数组
for(k = 0; k < N; k++)
if(summ[k] > max)
{
max = summ[k];
flag = k; //选出总分最高的学生
}
printf("%d %d %d\n", sum[0]/N, sum[1]/N, sum[2]/N);
print(stu[flag]);
return 0;
}