03:成绩排序 个人博客:doubleq.win

个人博客:doubleq.win

03:成绩排序

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入
第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。
输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
样例输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
样例输出
Joey 92
Hanmeimei 90 
Kitty 80
Tim 28
来源
习题(14-1)
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 using namespace std;
 6 int n,k;
 7 struct s
 8 {
 9     char xh[1001];
10     int cj;
11 }a[1001];
12 int comp(const s &a,const s &b)
13 {
14     if(a.cj>b.cj)return 1;
15     if(a.cj<b.cj)return 0;
16     if(strcmp(a.xh,b.xh)<0)
17     return 1;
18     //if(a.xh<b.xh)return 0;
19     if(strcmp(a.xh,b.xh)>0)
20     return 0;
21 }
22 int main()
23 {
24     cin>>n;
25     for(int i=1;i<=n;i++)
26     {
27         scanf("%s",&a[i].xh);
28         cin>>a[i].cj;
29     }
30     sort(a+1,a+n+1,comp);
31     /*printf("%s",a[k].xh);
32     printf("%d",a[k].cj);*/
33     for(int i=1;i<=n;i++)
34     {
35         printf("%s ",a[i].xh);
36         cout<<a[i].cj<<endl;
37     }
38     return 0;
39 }

 

posted @ 2017-03-21 14:36  自为风月马前卒  阅读(473)  评论(0编辑  收藏  举报

Contact with me