#include #include using namespace std; struct node//定义结构体 { int id;//学号 int score;//成绩 }a[1005]; bool cmp(node x,node y)//自定义比较函数 { if(x.score==y.score)//如果成绩相等,按学号从小到大排序 return x.id<y.id; return x.score>y.score;//按成绩从高到低排序 } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { a[i].id=i; cin>>a[i].score; } sort(a+1,a+n+1,cmp);//排序 int rank=1;//排名 cout<<a[1].id<<" "; for(int i=2;i<=n;i++) { if(a[i].score==a[i-1].score)//如果成绩相同,排名不变 cout<<a[i].id<<" "; else { rank=i;//排名更新 cout<<a[i].id<<" "; } } cout<<endl; rank=1;//排名重新从1开始 cout<<rank<<" "; for(int i=2;i<=n;i++) { if(a[i].score==a[i-1].score)//如果成绩相同,排名不变 cout<<rank<<" "; else { rank=i;//排名更新 cout<<rank<<" "; } } cout<<endl; return 0; }

输入N再输入N个同学的成绩可知第i个输入的同学的学号是i请你按分数从高到低输出学号如两人分数一样则学号小优先再按学号从小到大输出分数排名最后按样例输入490 90 92 88输出3 1 2 42 2 1 4给出c++代码

原文地址: http://www.cveoy.top/t/topic/bk2v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录