每个测试输入包含 1 个测试用例,格式为
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
... ... ...
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名
和学号
均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
代码如下:
本题主要考察的是结构体的根据一定次序进行排序的方式。
其中主要运用的是#include<algorithm>库中的sort函数+自己定义的cmp函数;
这是一种比较常用的排序方式;其中cmp函数的‘>'和'x.t,y.t'决定了是以t为依据,并且是从大到小排的。
归根到底这题为水题,(很水)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{ char name[100];
char number[100];
int t;
}p[100];
int cmp(node x,node y)
{
return x.t>y.t;
}
int main()
{
int i;
cin >> i;
int m=0;
while(i--)
{
scanf("%s",p[m].name);
scanf("%s",p[m].number);
scanf("%d",&p[m].t);
m++;
}
sort(p,p+m,cmp);
cout << p[0].name<<" "<<p[0].number<<endl;
cout << p[m-1].name<<" "<<p[m-1].number<<endl;
return 0;
}