成绩排序,相同成绩并列
#include<stdio.h>
#include<algorithm>
using namespace std;
int n;
struct node{
int num;
int score;
int rank;
}stu[1000];
bool cmp(struct node x,struct node y){
return x.score>y.score;
}
int main(){
int sco;
n=0;
printf("请输入学生成绩(结束输入-1):\n");
while(scanf("%d",&sco)!=EOF&&sco!=-1){
stu[n].num=n+1;
stu[n].score=sco;
n++;
}
sort(stu,stu+n,cmp);
for(int i=0;i<n;i++){
if(stu[i].score==stu[i-1].score){
stu[i].rank=stu[i-1].rank;
}
else{
stu[i].rank=i+1;
}
}
printf("学号\t成绩\t排名\n");
for(int i=0;i<n;i++){
printf("%d\t%d\t%d\n",stu[i].num,stu[i].score,stu[i].rank);
}
return 0;
}