排序问题C++中提供sort()函数,默认是从小到大排序
目前编写的这个要求: 1.当分数不同,按照成绩从大到小排序
2.当成绩相同,则按照准考证号从大到小排序
1.比较函数的编写
bool comp(Student a,Student b){
if(a.score!=b.score){
return a>b; //这里的'>'就是从大到小,如果是'<'就是从小到大
}else{
return strcmp(a.id,b.id)<0;//如果是'<0'就是按照id从小到大.'>0'就是从大到小了
}
}
2.Rank的实现
stu[0].rank=1;
for(int i=1;i<n;i++){
if(stu[i].score==stu[i-1].score){//成绩与上一位相等,则排名一样
stu[i].rank=stu[i-1].rank;
}else{//不一样则+1
stu[i].rank=i+1;
}
}