HM071 英雄按年龄升序

HM071 英雄按年龄升序

HM071 英雄按年龄升序

来源: 第 71 集 结构体-结构体案例2

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

设计英雄结构体,成员为:姓名(字符串)、年龄(整数)、性别(字符串,如 )。把若干名英雄放进结构体数组。

不要只把五个人展示完就结束。必须用冒泡排序,按年龄**升序**重排整个数组,再打印排序后的结果。交换时交换的是整份英雄结构体(姓名、年龄、性别一起走),不能只交换年龄,否则会出现「刘备变成 19 岁」这种人和数据对不上的错误。

冒泡排序约定:

  • 外层循环 \(i\) 从 \(0\) 到 \(n-2\)。
  • 内层循环 \(j\) 从 \(0\) 到 \(n-i-2\)(次数随外层递减)。
  • arr[j].age > arr[j+1].age,用一个临时英雄变量完成交换。

再封装两个函数:bubbleSort 接收英雄数组和长度;printHero 同样接收数组和长度,按当前顺序输出。数组以首地址传入函数。

读入 \(n\) 名英雄,排序后输出。

输入格式

第一行一个整数 \(n\)(\(1 \le n \le 100\))。

接下来 \(n\) 行,每行一个不含空白的姓名、一个整数年龄、一个不含空白的性别(\(1 \le |name| \le 20\),\(1 \le age \le 200\),性别长度为 \(1\) 到 \(4\))。

输出格式

共 \(n\) 行,按年龄从小到大输出。每行:姓名、年龄、性别,相邻之间一个空格,行末换行。年龄相同则保持原来的相对顺序(稳定比较:仅当左边年龄严格更大时才交换)。

样例

输入 #1

5
刘备 23 男
关羽 22 男
张飞 20 男
赵云 21 男
貂蝉 19 女

输出 #1

貂蝉 19 女
张飞 20 男
赵云 21 男
关羽 22 男
刘备 23 男

输入 #2

2
甲 30 男
乙 30 女

输出 #2

甲 30 男
乙 30 女

说明

样例 1 排序前年龄是 \(23,22,20,21,19\),排完后必须是貂蝉、张飞、赵云、关羽、刘备,且每人的性别仍与本人对应。样例 2 年龄相等,不交换,相对顺序不变。必须用结构体数组加冒泡排序实现。

信息

ID
1070
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者