zoukankan      html  css  js  c++  java
  • 成绩排序

    描述:有N个学生的数据,将学生数据按照成绩高低排序,如果成绩相同则按照姓名首字母排序,若还相同,则按照年龄排序

    输入要求:第一行有一个整数N(N<=1000),表示一共有N个学生组数据。接下来的N行,每个学生包括姓名,(小于100的字符串)年龄(整型数),成绩(小于100整数)

    输出:输出排序后的学生信息,姓名,年龄,成绩

    最佳参考答案:此题主要考察对sort函数的自定义判定规则

    #include <iostream>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    
    struct Student{
        char name[100];
        int age;
        int grade;
    };
    
    Student student[1000];
    
    bool cmp(Student a, Student b){
        if(a.grade!=b.grade)
            return a.grade<b.grade;
        int tmp = strcmp(a.name, b.name);
        if(tmp != 0)
            return tmp < 0;
        else
            return a.age<b.age;
    }
    
    int main()
    {
        int stuN;
        cin >> stuN;
        for(int i=0;i<stuN;i++){
                cin >> student[i].name >> student[i].age >> student[i].grade;
            }
        sort(student,student+stuN,cmp);
        cout << "结果输出:
    "<<endl;
        for(int i=0;i<stuN;i++){
                cout << student[i].name <<" " << student[i].age <<" "<< student[i].grade<<endl;
            }
        return 0;
    }

    总结:如果有排序问题,推荐使用c++:

    #include<algorithm>
    
    int a[10]
    
    sort(a,a+10);

    Sort函数有三个参数:

    (1)第一个是要排序的数组的起始地址。

    (2)第二个是结束的地址(最后一位要排序的地址)

    (3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

    这种方法乱序数组排序,有没有相同的数值都是不影响的。

    第三个参数的用法遵照上方的代码函数cmp,那里是最明了的一个例子。

  • 相关阅读:
    bzoj2763 [JLOI]飞行路线 分层图最短路
    [模板]分块/可修改莫队 (数颜色种类)
    gcd步数
    洛谷2378 因式分解 字符串
    bzoj1090 字符串折叠
    洛谷1034 NOIP2002 矩形覆盖
    Codeforces#441 Div.2 四*题
    SPFA的小优化
    洛谷1073 NOIP2009 最优贸易
    bzoj2100 [Usaco2010 DEC]Apple Delivery苹果贸易
  • 原文地址:https://www.cnblogs.com/xym4869/p/8507931.html
Copyright © 2011-2022 走看看