如图,求助
  • 板块学术版
  • 楼主魑魅魍魉唬
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/3/3 14:56
  • 上次更新2024/3/3 16:28:27
查看原帖
如图,求助
317218
魑魅魍魉唬楼主2024/3/3 14:56

有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;
}
2024/3/3 14:56
加载中...