没啥说的,注意输出格式就行
#include <cstdio>
#include <vector>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
struct student{
char name[9];
int xuehao;
int chengji;
}stu;
bool cmp1(student a,student b){
return a.xuehao < b.xuehao;
}
bool cmp2(student a,student b){
if(strcmp(a.name, b.name)!=0) return strcmp(a.name, b.name)<0;
else return a.xuehao < b.xuehao;
}
bool cmp3(student a,student b){
if(a.chengji!=b.chengji) return a.chengji<b.chengji;
else return a.xuehao < b.xuehao;
}
int main(){
int N, C,n = 1, i = 0;
vector<student>vec;
while(scanf("%d %d", &N, &C),N){
for(i=0; i<N; i++){
cin >> stu.xuehao >> stu.name >> stu.chengji;
vec.push_back(stu);
}
switch(C){
case 1:sort(vec.begin(), vec.end(), cmp1);
break;
case 2: sort(vec.begin(), vec.end(), cmp2);
break;
case 3: sort(vec.begin(), vec.end(), cmp3);
};
printf("Case %d:\n",n++);
for(vector<student>::iterator it=vec.begin(); it!=vec.end(); it++){
printf("%06d %s %d\n", it->xuehao,it->name,it->chengji);
}
vec.clear();
}
return 0;
}
还请大家多多指出代码冗余之处以及题目的新思路。
转载请注明出处。