#include
#include
#include
using namespace std;
struct E{
char name[101];
int age;
int score;
}buff[1000];
bool cmp(E a,E b){
if(a.score!=b.score)
return a.score<b.score;
int temp=strcmp(a.name,b.name);
if(temp!=0)
return temp<0;
else
return a.age<b.age;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0; i<n;i++){
scanf("%s %d %d",buff[i].name,&buff[i].age,&buff[i].score);
}
sort(buff,buff+n,cmp);
for(int j=0;j<n;j++){
printf("%s %d %d\n",buff[j].name,buff[j].age,buff[j].score);
}
}
return 0;
}
这是输入后
这是输出后
上面的代码可读性太差,重新发一下
#include <stdio.h>
#include <algorithm>
#include<string.h>
using namespace std;
struct E{
char name[101];
int age;
int score;
}buff[1000];
bool cmp(E a,E b){
if(a.score!=b.score)
return a.score<b.score;
int temp=strcmp(a.name,b.name);
if(temp!=0)
return temp<0;
else
return a.age<b.age;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0; i<n;i++){
scanf("%s %d %d",buff[i].name,&buff[i].age,&buff[i].score);
}
sort(buff,buff+n,cmp);
for(int j=0;j<n;j++){
printf("%s %d %d\n",buff[j].name,buff[j].age,buff[j].score);
}
}
return 0;
}
while(scanf("%d",&n)!=EOF){
->
if(scanf("%d",&n)!=EOF){
另外
getchar(); //加上
scanf("%s %d %d",buff[i].name,&buff[i].age,&buff[i].score);
我测试好像没有什么问题啊。。。。。。。。。。