数据结构:pta计算总分
时间: 2024-01-12 17:03:15 浏览: 90
题目描述:
给定 N 个学生的信息,包括他们的姓名、成绩。请你写一个程序,按照成绩从高到低的顺序输出每个学生的姓名和成绩。
输入格式:
输入第一行包含一个整数 N(1<=N<=1000),表示学生数。
接下来的 N 行包含每个学生的信息,包括他们的姓名(长度不超过 8 且不包含空格的字符串)和成绩(整数),中间用空格隔开。
输出格式:
按照成绩从高到低的顺序输出每个学生的姓名和成绩,每行一个学生信息,姓名和成绩之间用一个空格隔开。如果两名学生的成绩相同,则按照他们的姓名的字典序从小到大排列。
输入样例:
3
Joe 95
Mike 95
Mary 90
输出样例:
Joe 95
Mike 95
Mary 90
解题思路:
本题需要按照成绩从高到低排序,如果成绩相同则按照姓名的字典序从小到大排序。可以使用结构体来存储每个学生的信息,然后使用 sort 函数进行排序。
C++ 代码实现如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
struct Student
{
string name;
int score;
bool operator< (const Student& t) const
{
if (score != t.score) return score > t.score;
return name < t.name;
}
}stu[N];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++ )
cin >> stu[i].name >> stu[i].score;
sort(stu, stu + n);
for (int i = 0; i < n; i ++ )
cout << stu[i].name << ' ' << stu[i].score << endl;
return 0;
}
```
阅读全文