chuashifengz


私信TA

用户名:dotcpp0624709

访问量:398

签 名:

等  级
排  名 27290
经  验 554
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 宁波大学
专  业

  自我简介:

解题思路:把学号、三科成绩都储存到二维数组中,进行三次排序...

注意事项:每次排序时使用指针p去找,而不是arr, 其地址赋给指针p后我们便不再需要arr

参考代码:

#include <stdio.h>

int main()

{

    int arr[1000][5]={0}, n, i, sum;

    int *p[1000];

    scanf("%d", &n);

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

    {

        sum = 0;

        scanf("%d%d%d", &arr[i][1], &arr[i][2], &arr[i][3]);

        arr[i][0] = i;//学号, i=0时为1号

        p[i] = &arr[i][0];

        sum += arr[i][1] + arr[i][2] + arr[i][3];

        arr[i][4] = sum;

    }

    

    int j;

    

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

    {

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

        {

            if(p[i][4] > p[j][4])

            {

                int *t = p[i];

                p[i] = p[j];

                p[j] = t;

            }

        }

    }

    

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

    {

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

        {

            if(p[i][4] == p[j][4] && p[i][1] > p[j][1])

            {

                int *t = p[i];

                p[i] = p[j];

                p[j] = t;

            }

        }

    }

    

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

    {

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

        {

            if(p[i][4] == p[j][4] && p[i][1] == p[j][1] && p[i][0] < p[j][0])

            {

                int *t = p[i];

                p[i] = p[j];

                p[j] = t;

            }

        }

    }

    

    for(i=n; i>n-5; i--)

    {

        printf("%d %d\n", p[i][0], p[i][4]);

    }

    

    return 0;

}


 

0.0分

2 人评分

  评论区

  • «
  • »