题目大意:
给出N个学生的成绩记录,每条记录包括学生编号,学生姓名,学生成绩,按照给定的方式排序
代码:
#include<cstdio>
#include<iostream>
#include<string.h>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct student
{
char ID[20], name[20];
int score;
};
bool cmp1(student s1, student s2)
{
return strcmp(s1.ID, s2.ID)<=0;
}
bool cmp2(student s1, student s2)
{
if (strcmp(s1.name, s2.name)!=0)
{
if (strcmp(s1.name, s2.name) < 0)
return true;
else
return false;
}
else
return strcmp(s1.ID, s2.ID) <= 0;//比较器返回的是true或false,必须这样写
}
bool cmp3(student s1, student s2)
{
if (s1.score != s2.score)
return s1.score < s2.score;
else
return strcmp(s1.ID, s2.ID) <= 0;
}
int main()
{
int N, C;
vector<student> v;
student s;
cin >> N >> C;
for (int i = 0; i < N; i++)
{
scanf("%s %s %d", s.ID, s.name,&s.score);
v.push_back(s);
}
switch (C)
{
case 1:sort(v.begin(), v.end(), cmp1); break;
case 2:sort(v.begin(), v.end(), cmp2); break;
case 3:sort(v.begin(), v.end(), cmp3); break;
default: break;
}
for (int i = 0; i < v.size(); i++)
{
cout << v[i].ID << " " << v[i].name << " " << v[i].score << endl;
}
return 0;
}