新手上路


私信TA

用户名:uq_88669182401

访问量:207

签 名:

等  级
排  名 19247
经  验 722
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:注意题目要求,先比总成绩,在总成绩相同的情况下比较语文成绩,在语文成绩相同的情况下比较学号,学号小的排名在前。

参考代码:

#include <stdio.h>

#include <stdlib.h>

struct stu

{

    int num;

    int a, b, c;

    int sum;

};

 

void sort(int n,struct stu arr[])

{

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

    {

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

        {

            if(arr[j].sum<arr[j+1].sum)

            {

                struct stu temp=arr[j];

                arr[j]=arr[j+1];

                arr[j+1]=temp;

            }

            else if(arr[j].sum==arr[j+1].sum)

            {

                if(arr[j].a<arr[j+1].a)

                {

                    struct stu temp=arr[j];

                    arr[j]=arr[j+1];

                    arr[j+1]=temp;

                }

                else if(arr[j].a==arr[j+1].a)

                {

                    if(arr[j].num>arr[j+1].num)

                    {

                        struct stu temp=arr[j];

                        arr[j]=arr[j+1];

                        arr[j+1]=temp;

                    }

                }

            }

        }

    }

}

 

int main()

{

    int n;

    scanf("%d", &n);

    struct stu st[n];

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

    {

        scanf("%d %d %d", &st[i].a, &st[i].b, &st[i].c);

        st[i].num = i+1;

        st[i].sum = st[i].a + st[i].b + st[i].c;

    }

    sort(n,st);

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

    {

        printf("%d %d\n",st[i].num,st[i].sum);

    }

 

    return 0;

}


 

0.0分

3 人评分

  评论区

  • «
  • »