03:成績排序 個人部落格:doubleq.win

自為風月馬前卒發表於2017-03-21

個人部落格: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 }

 

相關文章