解题思路:定义一个学生结构,以及一个学生结构数组,循环动态复制到结构数组中

注意事项:

参考代码:

#include <stdio.h>

#include <stdlib.h>

//学生结构

typedef struct _student{

    char id[50];       //学生的学号

    char name[50]; //学生的姓名

    double chinese;//学生的三科成绩

    double math;

    double english;

}Students;

int main()

{

    /*

    * 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,

    * 从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,

    * 以及最高分的学生的数据(包括学号、姓名、3门课成绩)

    * 输入

    * 2

    * 1 blue 90 80 70

    * b clan 80 70 60

    * 输出

    * 85 75 65

    * 1 blue 90 80 70

    */

    int n,i,j,temps,number;

    double sum1 = 0,sum2 = 0,sum3 = 0;//用来存放某一科成绩的总和

    int temp[50];

    scanf("%d",&n);

    Students students[n];//结构数组

    for(i = 0;i < n;i++)//动态赋值

    {

        /*

        scanf("%d",&students[i].id);

        scanf("%s",&students[i].name);

        scanf("%lf",&students[i].chinese);

        scanf("%lf",&students[i].math);

        scanf("%lf",&students[i].english);

        */

        scanf("%s %s %lf %lf %lf",&students[i].id,&students[i].name,&students[i].chinese,&students[i].math,&students[i].english);

    }



    for(i = 0;i < n;i++)

    {//通过遍历结构数组计算各科的总和

        sum1 += students[i].chinese;

        sum2 += students[i].math;

        sum3 += students[i].english;

        number = students[i].chinese + students[i].math + students[i].english;//存放某个学生三科成绩总和,并且存到整型数组中

        temp[i] = number;

        number = 0;

    }

    sum1 /= n;//计算各科的平均分

    sum2 /= n;

    sum3 /= n;

    printf("%.0lf %.0lf %.0lf\n",sum1,sum2,sum3);

    for(i = 0;i < n-1;i++)//冒泡排序算法,排序完后最大的总分在第一个元素

        for(j = 0;j < n - i - 1;j++)

        {

            if(temp[j] < temp[j+1])

            {

                temps = temp[j];

                temp[j] = temp[j + 1];

                temp[j + 1] = temps;

            }


        }

    for(i = 0;i < n;i++)//遍历结构数组查找哪个学生的总分最高

    {

        if(temp[0] == students[i].chinese + students[i].math + students[i].english)

        {

           printf("%s %s %.0lf %.0lf %.0lf\n",students[i].id,students[i].name,students[i].chinese,students[i].math,students[i].english);

        }

    }











    return 0;

}


点赞(1)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论