有3个学生,学生信息有学号,姓名,每个学生选修3门课,所有数据要求输入,按总成绩排名,并输出所有学生的信息。 输出来不是按总分排序的,我这里的排序可能有问题但是我也不知道怎么改,求大佬们帮忙看看
#include<bits/stdc++.h>
using namespace std;
struct student{
string name;
int sno;
float yu,shu,ying;
float sum,avg;
};
bool cmp(student a,student b){//排序函数
if(a.sum>b.sum){
return a.sum;
}
else{
return b.sum;
}
}
int main(){
student s[3];
for(int i=0;i<3;i++){
cin>>s[i].name>>s[i].sno>>s[i].yu>>s[i].shu>>s[i].ying;
}
for(int i=0;i<3;i++){
s[i].sum=s[i].yu+s[i].shu+s[i].ying;
s[i].avg=s[i].sum/3;
}
for(int j=0;j<3;j++){//排序,每次将总分最大者放在最前面,剩下的再次排序
sort(s+j,s+3,cmp);
}
for(int i=0;i<3;i++){
cout<<s[i].name<<" "<<s[i].sno<<" "<<s[i].yu<<" "<<s[i].shu<<" "<<s[i].ying<<" "<<s[i].avg<<" "<<s[i].sum<<endl;
}
return 0;
}