AOI6 2021-09-15 18:10 采纳率: 92.3%
浏览 135
已结题

C语言求解排序123456

Problem Description
有n个无聊的人在比赛跳远,看谁跳的最远。每个人可以跳3次,这个人的成绩就是三次距离里面的最大值。例如,一个人跳3次的距离分别时10, 30和20,那么这个人的成绩就是30。给出每个人三次跳的距离,问最终每个人的排名是多少。
Input
输入文件的第一行有一个整数T (1≤T≤100),表示测试数据的组数。对于每组测试数据:第一行包括一个整数n (2≤n≤3), 表示人数. 接下来n行, 每行包含三个整数ai,bi 和 ci (1≤ai,bi,ci,≤300), 表示第i个人每次的跳的距离。输入数据保证每个人的成绩互不相同。
Output
对于每组数据,输出一行包含n个整数,用一个空格隔开。第i个数表示第i个人的最终名次。
SampleInput
2
3
10 10 10
10 20 30
10 10 20
2
3 4 1
1 2 1
SampleOutput
3 1 2
1 2

提示:
对于第一组数据,3个人的成绩分别时10, 30和20。因此他们最终排名依次是3, 1和2.

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-09-15 18:24
    关注

    对每个人成绩进行求出最大值,对三个人的最大值再进行排序

    int max(int a,int b)
    {
          if(a > b)
            return a;
          return b;
    }
    
    void sort(int a[],int n)
    {
        for(int i=0;i<n-1;i++)
            for(int j=0;j<n-i-1;j++)
                  if(a[j] < a[j+1])
                  {
                          int t = a[j];
                          a[j] = a[j+1];
                          a[j+1]  =t;
                  }
    }
    
    int main()
    {
        int n,m,i,j; 
        int s[3] = {0};
        int *max = NULL,*sortmax =  NULL;
        printf("请输入测试组数:");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
                printf("请输入第%d组的人数:",i+1);
                scanf("%d",&m);
                max = (int*)malloc(m*sizeof(int));
                sortmax = (int *)malloc(m*sizeof(int));
                for(j=0;j<m;j++)
                {
                        printf("请输入第%d个人的三组成绩:",j+1);
                        scanf("%d%d%d",&s[0],&s[1],&s[2]);
                        max[j] = max(max(a,b),c);
                        sortmax[j] = max[j];
                }
                sort(sortmax,3);
                for(i=0;i<2;i++)
                {
                      for(j=0;j<2;j++)
                      {
                              if(max[i] == sortmax[j])
                                      printf("%d ",j+1);
                      }
                }
                printf("\n");
                free(sortmax):
                free(max);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 创建了问题 9月15日

悬赏问题

  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改