1004 成绩排名(20 分)

每个测试输入包含 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;
}
posted @ 2018-09-08 23:48  black_hole6  阅读(99)  评论(0编辑  收藏  举报