美文网首页
成绩排序

成绩排序

作者: JuGyang | 来源:发表于2019-01-05 12:57 被阅读0次

    题目链接
    题目描述
    查找和排序

    题目
    输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。

    输入描述
    输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

    输出描述
    按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

    示例1

    输入
    3
    0
    fang 90
    yang 50
    ning 70
    
    输出
    fang 90
    ning 70
    yang 50
    

    代码实现

    #include <stdio.h>
    #include <algorithm>
    
    using namespace std;
    
    struct STUDENT {
        char name[20];
        int score;
    }buf[1000];
    
    bool cmp1(STUDENT a, STUDENT b) { //升序排列
        return a.score < b.score;
    }
    
    bool cmp2(STUDENT a, STUDENT b) { //降序排列
        return a.score > b.score;
    }
    
    int main(void){
        int n;
        while (scanf("%d", &n) != EOF) {
            int x;
            scanf("%d", &x);
            for (int i = 0; i < n; i++) {
                scanf("%s%d", buf[i].name, &buf[i].score);
            }
            if (x == 0) {
                stable_sort(buf, buf + n, cmp2);
            }
            else {
                stable_sort(buf, buf + n, cmp1);
            }
            for (int i = 0; i < n; i++) {
                printf("%s %d\n", buf[i].name, buf[i].score);
            }
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:成绩排序

          本文链接:https://www.haomeiwen.com/subject/tqprrqtx.html