码迷,mamicode.com
首页 > 其他好文 > 详细

PAT 甲级 A1062 (2019/02/15)

时间:2019-02-24 10:58:47      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:使用   函数返回   计算   cst   scanf   algorithm   i++   bool   函数   

#include<cstdio>
#include<cstring>
#include<algorithm> // STL  使用相关的函数需要include进来 
using namespace std;
struct Stu_info{
    char id[10]; 
    int de, cai, sum;
    int flag;
}stu[100010];
//此函数返回值为bool型,相应的返回 true 或者 false 
bool cmp(Stu_info a, Stu_info b) {
    if(a.flag != b.flag) return a.flag < b.flag;
    else if(a.sum != b.sum) return a.sum > b.sum;
    else if(a.de != b.de) return a.de > b.de;
    else return strcmp(a.id, b.id) < 0;
}
int main(){
    int n, L, H;
    scanf("%d%d%d", &n, &L, &H);
    int m = n;
    for(int i = 0; i < n; i++) {
        scanf("%s%d%d", stu[i].id, &stu[i].de, &stu[i].cai);
        //总分计算 
        stu[i].sum = stu[i].de + stu[i].cai;
        //判断类别,等地越高,分数越低 
        if(stu[i].de < L || stu[i].cai < L) {
            stu[i].flag = 5;
            m--;
        }
        else if(stu[i].de >= H && stu[i].cai >= H) stu[i].flag = 1;
        else if(stu[i].de >= H && stu[i].cai < H) stu[i].flag = 2;
        else if(stu[i].de >= stu[i].cai) stu[i].flag = 3;
        else stu[i].flag = 4;
    }
    //通过cmp函数返回的值,来进行 (从大到小) 或者 (从小到大)的排序 
    sort(stu, stu + n, cmp);
    // sort()见sort详解 
    printf("%d\n", m);
    for(int i = 0; i < m; i++) {
        printf("%s %d %d\n", stu[i].id, stu[i].de, stu[i].cai);
    }
    return 0;
}

sort()函数

bool compare(int a,int b){
    return a < b;    //从小到大升序排列,如果改为return a > b,则为降序
}
int main(){
    int a[20] = {2, 4, 1, 23, 5, 76, 0, 43, 24, 65}, i;
    for(i = 0; i < 20; i++)
        printf("%d", a[i]);
    sort(a, a + 20, compare);
    for(i = 0; i < 20; i++)
        printf("%d", a[i]);
    return 0;
}

PAT 甲级 A1062 (2019/02/15)

标签:使用   函数返回   计算   cst   scanf   algorithm   i++   bool   函数   

原文地址:https://www.cnblogs.com/zjsaipplp/p/10425256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!