C语言程序设计教程(第三版)课后习题11.5

Description
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
Input
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
Output
各门课的平均成绩 最高分的学生的数据(包括学号、姓名、3门课成绩)
Sample Input
2
1 blue 90 80 70
b clan 80 70 60
Sample Output
85 75 65
1 blue 90 80 70

在这里插入代码片
#include
struct chengji{
     
 char numble_call[100],name[50];
 int one,two,three,all;
};
void input(struct chengji *bg,int n);
void print(struct chengji *bg,int n);
void overage(struct chengji *bg,int n);
int main(void)
{
     
 int n;
 scanf("%d",&n);
 struct chengji bg[10000];
 input(bg,n);
 overage(bg,n);
 print(bg,n);
 return 0;
}
void input(struct chengji *bg,int n)
{
     
 for(int i = 0;i < n;i++)
 {
     
  scanf("%s%s%d%d%d",bg[i].numble_call,bg[i].name,&bg[i].one,&bg[i].two,&bg[i].three);
 }
}
void print(struct chengji *bg,int n)
{
     
 int sum;
 for(int i = 0;i < n;i++)
 {
     
  bg[i].all = bg[i].one + bg[i].two + bg[i].three;
  bg[n].all = bg[0].all;
  if(bg[i].all >= bg[n].all)
  {
     
   bg[n].all = bg[i].all;
   sum = i;
  }
 }
 printf("%s %s %d %d %d",bg[sum].numble_call,bg[sum].name,bg[sum].one,bg[sum].two,bg[sum].three);
}
void overage(struct chengji *bg,int n)
{
     
 double sum[3];
 for(int i = 0;i < n;i++)
 {
     
  sum[0] += bg[i].one;
 }
 for(int i = 0;i < n;i++)
 {
     
  sum[1] += bg[i].two;
 }
 for(int i = 0;i < n;i++)
 {
     
  sum[2] += bg[i].three;
 }
 printf("%.0f %.0f %.0f\n",sum[0] / n,sum[1] / n,sum[2] / n);
}

你可能感兴趣的:(c语言)