浙大 PAT 甲级 1028 List Sorting

分析

继1027题之后第二水的一道题。整道题啥也没考,单纯考察一个sort函数用法而已。

sort函数是包含在algorithm.h头文件中的一个函数,可以对数组以及STL中的容器排序。

用法也很简单,代码一看就知道了~

#include
#include
#include
#include
using namespace std;

struct Record
{
    int id;
    char name[9];
    int grade;
};

vector records;

bool cmpById(Record r1, Record r2)
{
    return (r1.id < r2.id);
}

bool cmpByName(Record r1, Record r2)
{
    if (strcmp(r1.name, r2.name) == 0)
    {
        return (r1.id < r2.id);
    }
    return (strcmp(r1.name, r2.name) < 0);
}

bool cmpByGrade(Record r1, Record r2)
{
    if (r1.grade != r2.grade)
    {
        return (r1.grade < r2.grade);
    }
    else
    {
        return (r1.id < r2.id);
    }
}

int main()
{
    int N, C;
    scanf("%d %d", &N, &C);
    for (int i = 0; i < N; i++)
    {
        Record r;
        scanf("%d%s%d", &r.id, r.name, &r.grade);
        records.push_back(r);
    }
    switch (C)
    {
    case 1:sort(records.begin(), records.end(), cmpById); break;
    case 2:sort(records.begin(), records.end(), cmpByName); break;
    case 3:sort(records.begin(), records.end(), cmpByGrade); break;
    }
    for (int i = 0; i < N; i++)
    {
        printf("%06d %s %d\n", records[i].id, records[i].name, records[i].grade);
    }
    return 0;
}

 

你可能感兴趣的:(PAT)