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
- 通过率
- ?
- 上传者