按身高和体重排队,运动会(C 语言)

题目

某学校举行运动会,学生们按编号(1、2、3.....n)进行标识,
现需要按照身高由低到高排列,
对身高相同的人,按体重由轻到重排列,
对于身高体重都相同的人,维持原有的编号顺序关系。
请输出排列后的学生编号

输入

两个序列,每个序列由N个正整数组成,(0 < n <= 100)
第一个序列中的数值代表身高,第二个序列中的数值代表体重。

输出

排列结果,每个数据都是原始序列中的学生编号,编号从1开始。

示例一

输入
4
100 100 120 130
40 30 60 50
输出
2 1 3 4

示例一

输入
3
90 110 90
45 60 45
输出
1 3 2

代码

#include <stdio.h>
#include <stdlib.h>
typedef struct {
   
    int id;     // 学生编号
    int height; // 学生身高
    int weight; // 学生体重
} Student;

// 定义比较函数,用于qsort排序。根据题目要求,先按身高由低到高排序,
// 身高相同时按体重由轻到重排序,体重再相同时维持原有的编号顺序关系。
int cmp(const void *a, const void *b) {
   
    Student *s1 = (Student *)a;
    Student *s2 = (Student *)b;

    // 比较身高,若身高不同则按照身高大小返回结果
    if (s1->height != s2->height) {
   
        return s1->height - s2->height;
    }
    // 身高相同的情况下,比较体重,若体重不同则按照体重大小返回结果
    else if ((s1->height == s2->height) && (s1->weight != s2->weight)) {
   
        return s1->weight - s2->weight;
    }
    // 当身高和体重都相同时,保持原始编号顺序,即按照id从小到大排序
    else {
   
        return s1->id - s2->id;
    }
}

int main() {
   
    int n;           // 学生人数
    scanf("%d", &n); // 读取学生人数

    // 初始化学生结构体数组
    Student stu[100];
    for (int i = 0; i < n; i++) {
   
        stu[i].id = i + 1;           // 学生编号从1开始
        scanf("%d", &stu[i].height); // 读取学生的身高信息
    }

    // 读取学生的体重信息
    for (int i = 0; i < n; i++) {
   
        scanf("%d", &stu[i].weight);
    }

    // 使用qsort进行排序,传入学生结构体数组、学生数量、单个元素大小及比较函数
    qsort(stu, n, sizeof(Student), cmp);

    // 输出排序后学生的编号
    for (int i = 0; i < n; i++) {
   
        printf("%d ", stu[i].id);
    }

    return 0;
}

相关推荐

  1. 身高体重排队运动会C 语言

    2024-02-21 08:10:04       28 阅读
  2. (55)身高排序

    2024-02-21 08:10:04       19 阅读
  3. leetcode2418.身高排序

    2024-02-21 08:10:04       8 阅读
  4. C语言:国家名称字母表排序

    2024-02-21 08:10:04       29 阅读
  5. 整型数组个位值排序/最低位排序C语言

    2024-02-21 08:10:04       33 阅读
  6. 冒泡排序选择排序--C语言

    2024-02-21 08:10:04       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 08:10:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 08:10:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 08:10:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 08:10:04       18 阅读

热门阅读

  1. 寄存器 Flip-Flop

    2024-02-21 08:10:04       20 阅读
  2. 拍立淘助力电商新趋势:以图搜图购物成主流

    2024-02-21 08:10:04       30 阅读
  3. LeetCode 56 合并区间

    2024-02-21 08:10:04       31 阅读
  4. ddp是什么意思

    2024-02-21 08:10:04       29 阅读
  5. Rust语言之多线程

    2024-02-21 08:10:04       21 阅读
  6. 【编程】C++语言编程规范-2

    2024-02-21 08:10:04       26 阅读