• 牛客网计算机考研复试-KY9-成绩排序


    题目链接:点这里


    题目描述:
    用一维数组存储学号和成绩,然后,按成绩排序输出。


    思路:
    对结构体排序就行了。
    这里自己第一遍写的犯了一个错,对把学号id定义为了string类型,在排序的时候导致了错误,因为字符串比较的时候是从左到右按照ASCII码比较,当比较"13"和"9"的时候,反而"9">"13",所以如果题目里的学生id长度相同的时候,定义成string比较也可以,如果不同,则需要用int。

    另外“asdf”<“asdfer”,因为字符串结尾多余的一个字节用来保存一个空字节,也就是ASCII等于0的字符‘’,用于表示字符串的结尾,在比较第4字符时,‘e’的ASCII大于0,故第二个字符串大。


    代码:

    #include <bits/stdc++.h>
    using namespace std;
    struct student{
        int id;
        int score;
    }s[102];
    
    bool cmp(student a,student b){
        if(a.score<b.score)
            return true;
        else if(a.score==b.score && a.id<b.id)
            return true;
        else
            return false;
    }
    
    int main(){
        string s1 = "9";
        string s2 = "90";
        int n;
        cin >> n;
        for(int i=0;i<n;i++)
            cin >> s[i].id >> s[i].score;
        sort(s,s+n,cmp);
        for(int i=0;i<n;i++)
            cout << s[i].id << " " << s[i].score << endl;
        return 0;
    }
    
  • 相关阅读:
    bzoj1797
    bzoj1266
    bzoj1497
    bzoj1412
    bzoj3156
    JSOI2014第三轮总结
    bzoj1855
    bzoj1044
    codeforces 371D
    codeforces 371B
  • 原文地址:https://www.cnblogs.com/123-wind/p/14316842.html
Copyright © 2020-2023  润新知