解题思路:定义结构,然后是输入题目要求,然后是根据要求进行判断,然后是采用冒泡法解决排序问题,最后是输出前五个.

注意事项:一定要注意等于号和双等于号在c语言当中的区别

参考代码:

#include<stdio.h>


typedef struct student{

    int id;

    int yu,shu,ying;

    int sum;

}stu;

    stu a[301];

    stu temp[301];

int main()

{

    int n,i,k,j,ID,p;

    scanf("%d\n",&n);

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

    {

        scanf("%d %d %d\n",&a[i].yu,&a[i].shu,&a[i].ying);

        a[i].sum=a[i].yu+a[i].shu+a[i].ying;

        a[i].id=i+1;

    }


    for(j=1;j<i;j++)

    {

        for(k=0;k<i-j;k++)

        {

            if(a[k+1].sum>a[k].sum)

            {

                /*temp=a[k+1].sum;

                a[k+1].sum=a[k].sum;

                a[k].sum=temp;

                

                ID=a[k+1].id;

                a[k+1].id=a[k].id;

                a[k].id=ID;*/

                temp[5]=a[k+1];

                a[k+1]=a[k];

                a[k]=temp[5];

            }

            else if(a[k+1].sum==a[k].sum)

            {

                if(a[k+1].yu>=a[k].yu)

                {

                /*temp=a[k+1].sum;

                a[k+1].sum=a[k].sum;

                a[k].sum=temp;

                

                ID=a[k+1].id;

                a[k+1].id=a[k].id;

                a[k].id=ID;*/

               temp[5]=a[k+1];

                a[k+1]=a[k];

                a[k]=temp[5];

                }


            }

        }

        

    }


    

    for(p=0;p<5;p++)

    {

        printf("%d %d\n",a[p].id,a[p].sum);

    }


    return 0;

}


点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 1 条评论

有梦想的咸鱼 1年前 回复TA
/*temp=a[k+1].sum;
                a[k+1].sum=a[k].sum;
                a[k].sum=temp;
                ID=a[k+1].id;
                a[k+1].id=a[k].id;
                a[k].id=ID;*/                 大佬们这块代码为啥不能用