输入学生学号,姓名,三个成绩,计算总和和平均成绩,输出学生信息,每行一个学生,然后按总成绩高低输出学生信息。 程序只有输出第一个是最高的,剩下的都是顺序都是乱的,不知道哪里错了,求大佬们帮忙看看
#include<bits/stdc++.h>
using namespace std;
struct student{
char name[10];
int sno;
float yu,shu,ying,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 j=0;j<3;j++){
s[j].sum=s[j].yu+s[j].shu+s[j].ying;
s[j].avg=s[j].sum/3;
}
sort(s,s+3,cmp);
for(int i=0;i<3;i++){
cout<<s[i].name<<" "<<"00"<<s[i].sno<<" "<<s[i].yu<<" "<<s[i].shu<<" "<<s[i].ying<<" "<<s[i].sum<<" "<<s[i].avg<<endl;
}
return 0;
}