题目:有N名同学,四个科目,按总分排出前三名,不考虑总分相同的情况
输入格式:输入N+1行,第一行正整数N,表示班里同学人数
后面几行 小写字母输入同学名字(不超过十个字母),后面分别是四门科目成绩(小于150的非负整数),用空格隔开
#include <cstdio>
#include <algorithm>
using namespace std;
struct Student{ //定义结构体
char name[15]; //姓名
int score[4]; //四门科目分数
};
bool cmp(Student x,Student y){ //排序函数
int sumx=x.score[0]+x.score[1]+x.score[2]+x.score[3]; //算出总分
int sumy=y.score[0]+y.score[1]+y.score[2]+y.score[3];
return sumx>sumy;
}
Student stu[50]; //调用结构体
int main(){
int N;
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%s",stu[i].name);
for(int j=0;j<4;j++){
scanf("%d",&stu[i].score[j]);
}
}
sort(stu,stu+N,cmp); //调用排序函数
for(int i=0;i<3;i++){
printf("%s\n",stu[i].name); //输出前三名姓名
}
return 0;
}
输出结果