0
已解决
许孟星
高级守护
高级守护
1480 考试排排序
#include<bits/stdc++.h>
using namespace std;
struct score{ //定义结构体score
int c;
double e;//三科
}f[105];
/*
对于这样一个结构体,我们要想按照学生的总分从大到小排,总分相同的,按照语文成绩从大到小排,语文成绩相同的,按照数学成绩从大到小排序。需要用到以下的方法:
我们可以使用sort()来对结构体数组进行排序,排序规则可以在cmp函数里定义。
在结构体下方,主函数上方定义cmp函数。
cmp函数里的形参是两个结构体变量 ,返回值是bool类型的。
如:
*/
bool cmp (score a,score b){
return a.e>b.e;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>f[i].c>>f[i].e;
sort(f+1,f+1+n,cmp);
cout<<f[m].c<<" "<<f[m].e;
return 0;
}
写到这。
许孟星在2021-07-30 19:43:41追加了内容
更正:f[10000];
1
已采纳
李奕歌
初级天翼
初级天翼
结构体,cmp函数,剩下自己想
struct man{
long long name;
double cj;
};
man a[100005];
bool cmp(man x,man y){
if(x.cj==y.cj) return x.name<y.name;
else return x.cj>y.cj;
}
0
王文博
缔造者之神
缔造者之神
cmp函数出了点问题(马虎导致的)
c是学号,学号小的先输出(当一样的时候),而你这个并没有进行判断。
cmp改为以下核心即可AC:
bool cmp(score a,score b)
{
if(a.e!=b.e) return a.e>b.e;
return a.c<b.c;
}
望采纳!如果有问题记得找我!
0
许孟星
高级守护
高级守护
许孟星在2021-07-30 19:51:51追加了内容
Wrong Answer!
许孟星在2021-07-30 19:53:05追加了内容
@王文博
0