a. 期末考试成绩排名
题目描述
期末考试结束了,数学成绩已经出来。
数学老师请你帮忙编写一个程序,可以帮助老师对班级所有同学的考试分数按照由高到低进行排序,并输出按照成绩排序后每个同学的学号、姓名、数学成绩。
输入
第一行是一个整数 n( n≤100 ),代表班级的总人数;
接下来 n行,每行有 3 个数据,第一个数据是某个同学的学号,第二个数据是该同学的姓名的拼音(拼音不含空格),第三个数据是该同学的数学成绩(成绩是整数);
输出
按照数学成绩由高到低输出每个同学的学号、姓名、数学成绩,每行含 1 个同学的 3 个数据,3 个数据用空格隔开。(如果出现多个同学数学成绩相同,则按照学号由小到大输出,不存在多个同学学号相同的情况)
样例
输入
复制
3 1 zhangfang 98 2 liming 100 3 sunhua 99
输出
复制
2 liming 100 3 sunhua 99 1 zhangfang 98
输入
复制
3 1 zhangfang 95 3 sunhua 100 2 liming 100
输出
复制
2 liming 100 3 sunhua 100 1 zhangfang 95
#include<bits/stdc++.h> using namespace std; struct pp{ int num; string xm; int fs; }a[110]; bool comp(pp x,pp y){ bool b1=x.fs>y.fs; bool b2=x.fs==y.fs&&x.num<y.num; return b1||b2; } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].num; cin>>a[i].xm; cin>>a[i].fs; } sort(a+1,a+n+1,comp); for(int i=1;i<=n;i++) cout<<a[i].num<<" "<<a[i].xm<<" "<<a[i].fs<<endl; return 0; }