Marc206721 @ 2024-12-09 08:45:21
明明是按照题目要求先按照总得分再按照语文分数再按照学号,为什么还会#8WA
#include<stdio.h>
struct inf {
int sc[3];
int sum;
int r;
}stu[301];
int main(){
int num;
scanf("%d",&num);
//input
for(int i=0;i<num;i++){
scanf("%d %d %d",&stu[i].sc[0],&stu[i].sc[1],&stu[i].sc[2]);
stu[i].sum=(stu[i].sc[0]+stu[i].sc[1]+stu[i].sc[2]);
stu[i].r=i+1;
}
//sort
for(int i=0;i<num-1;i++){
for(int j=0;j<num-1-i;j++){
if(stu[j].sum>stu[j+1].sum||(stu[j].sum==stu[j+1].sum&&stu[j].sc[0]>stu[j+1].sc[0])||(stu[j].sum==stu[j+1].sum&&stu[j].sc[0]==stu[j+1].sc[0]&&stu[j].r>stu[j+1].r)){
struct inf tmp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=tmp;
}
}
}
//output
for(int i=num-1;i>=num-5;i--){
printf("%d %d\n",stu[i].r,stu[i].sum);
}
return 0;
}
by markeoeitwupp @ 2024-12-09 11:55:21
我看的你这个样例2就不对啊
你把特别长的if的
stu[j].r>stu[j+1].r
改成
stu[j].r<stu[j+1].r
先输出学号小的
by Marc206721 @ 2024-12-09 18:37:30
@markeoeitwuppokok,谢谢