zoukankan      html  css  js  c++  java
  • PAT 1004 成绩排名

    PAT 1004 成绩排名

    题目:

    读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

    输入格式:

    每个测试输入包含 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 <iostream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    struct Student{
        string name;
        string course;
        int grade;
    }input;
    
    bool cmp(Student a, Student b){
        return a.grade > b.grade;//按照成绩排序
    }
    int main()
    {
        int numStu;
    
        vector<Student> students;
        cin>>numStu;
        int last = numStu-1;
        for(int i = 0;i < numStu;++i){
            cin>>input.name>>input.course>>input.grade;
            students.push_back(input);
        }
        sort(students.begin(),students.end(),cmp);
        cout<<students[0].name<<" "<<students[0].course<<endl;
        cout<<students[last].name<<" "<<students[last].course;
        return 0;
    }
    

    解析:

    使用sort()函数对结构体数组进行排序,输出结果即可.

    关于sort():

    sort(begin,end,cmp) 适用于数组对象,传入三个参数,分别为头指针 尾指针以及cmp函数

    beginend是指针,可以随意规划

    sort(a,a+5,cmp);
    sort(a+3,a+5,cmp);
    

    如果不带cmp函数,默认为非降序排序

    bool cmp(类型 input1,类型 input2){
    	return a>b;//从大到小
    //a和b可以为input本身,也可以是其中的一项参数 如a.val之类的
    	return a<b;//从小到大
    }
    
  • 相关阅读:
    LIN总线学习-总线逻辑
    使用万用表测量CAN总线电压及实际电压与逻辑电瓶关系
    汽车网络和控制单元的安全威胁研究
    [CANopen] SDO的命令字
    新起点,新开始
    Git Commands
    Obsessive String
    The E-pang Palace
    最长递增子序列(LIS)
    Valid Sets
  • 原文地址:https://www.cnblogs.com/EPZ11/p/12275760.html
Copyright © 2011-2022 走看看