解题思路:

注意事项:

参考代码:

#include<stdio.h>

struct student {                                                           //定义结构体,字符串表示学号和名字,整型数组储存三科成绩

        char ID[80];

        char name[80];

        int score[3];

};

void input(struct student stu[], int N);

void Max(struct student stu[], int N);

int main()

{

        int N;

        scanf("%d", &N);

        struct student stu[100];                                           //结构体数组代表每个学生

        int sum1 = 0, sum2 = 0, sum3 = 0;                         //各科总成绩初始化为0

        input(stu, N);

        for (int i = 0; i < N; i++)

       {

             sum1 += stu[i].score[0];

             sum2 += stu[i].score[1];

             sum3 += stu[i].score[2];

       }

       sum1 /= N, sum2 /= N, sum3 /= N;                          //各科成绩平均值

       printf("%d %d %d\n", sum1, sum2, sum3);

       Max(stu, N);

       return 0;

}

void input(struct student stu[], int N)                                   //定义输入函数

{

       for (int i = 0; i < N; i++)

      {

             scanf("%s%s", stu[i].ID, stu[i].name);                             //先输入学号和名字

             for (int j = 0; j < 3; j++)

            {

                  scanf("%d", &stu[i].score[j]);                                   //用循环输入三科成绩

            }

      }

}

void Max(struct student stu[], int N)                                  //定义函数Max,找出最高分并输出该学生信息

{

       int sum[100] = { 0 };                                                     //定义数组储存每个学生总成绩

       for (int i = 0; i < N; i++)

      {

            for (int j = 0; j < N; j++)

           {

                 sum[i] += stu[i].score[j];

           }

      }

      int max = 0;                                                          //将第一个学生假设为最高分

      for (int i = 0; i < N; i++)

     {

           if (sum[i] > sum[max])

          {

                max = i;                                                   //获得最高分学生的编号

          }

     }

     printf("%s %s", stu[max].ID, stu[max].name);                //打印该学生信息

     for (int i = 0; i < 3; i++)

     {

           printf(" %d", stu[max].score[i]);

     }

}

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论