2174. 【一命通关】之结构体
1000ms
512MB
简单
一命通关系列
题目描述
欢迎来到"一命通关"系列第五关!本关考验你对结构体(struct)的定义与使用能力。
某班级有 n 名学生,每位学生包含以下信息:姓名(字符串)、语文成绩、数学成绩、英语成绩。请完成以下五个任务:
任务1:定义与输入输出
定义一个名为 Student 的结构体,包含姓名和三科成绩。读入所有学生信息后,按输入顺序逐行输出每位学生的完整信息。
任务2:计算总分并输出
为每位学生计算三科总分,并按输入顺序逐行输出:姓名 总分。
任务3:查找最高总分
找出总分最高的学生,输出其姓名和总分。如果有多个学生总分相同且都是最高,输出第一个出现的。
任务4:按总分降序排序
将所有学生按总分从高到低排序。如果总分相同,则按姓名字典序升序排列。输出排序后的结果,每行格式为:姓名 总分。
任务5:统计优秀人数
统计总分 ≥ 270 的学生人数并输出。
输入格式
第一行输入一个正整数 n(1 ≤ n ≤ 100)。
接下来 n 行,每行包含一个字符串和三个整数,分别表示姓名、语文、数学、英语成绩。姓名长度不超过 20,各科成绩在 0~100 之间。
输出格式
按照上述五个任务的顺序依次输出,每个任务的结果前加一行标题提示(见样例输出),各任务之间用空行分隔。
样例 1
输入 (Input)
3 Alice 90 95 88 Bob 85 90 95 Charlie 92 88 90
输出 (Output)
=== Task 1 === Alice 90 95 88 Bob 85 90 95 Charlie 92 88 90 === Task 2 === Alice 273 Bob 270 Charlie 270 === Task 3 === Alice 273 === Task 4 === Alice 273 Bob 270 Charlie 270 === Task 5 === 3
- 结构体定义:
struct Student { string name; int chinese, math, english; int total; // 可以在结构体中直接存储总分 }; - 数组存储:
Student stu[105]; - 自定义排序:使用
sort函数配合比较函数或 lambda 表达式。bool cmp(Student a, Student b) { if (a.total != b.total) return a.total > b.total; // 总分降序 return a.name < b.name; // 字典序升序 } sort(stu + 1, stu + n + 1, cmp); - 字典序比较:C++ 中
string类型可以直接用<>进行比较,默认即为字典序。 - 头文件:记得包含
<algorithm>以使用sort。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功