解析:相比于HDU的排序题来说,很简单了。秒过。

   启示:按照某一元素排序可以用结构体,甚至可以把每一个单元看成一个对象。

1 #include <stdio.h>
 2 #include <string.h>
 3 struct zifu{
 4     char ch;
 5     int num;
 6 }a[26];
 7 int main()
 8 {
 9     int n, i, j, t;
10     char c, temp;
11     scanf("%d", &n);
12     for(i = 0; i < 26; i++){
13         a[i].ch = i + 'a';
14         a[i].num = 0;
15     }
16     while((c = getchar()) != EOF){
17         if(c >= 'A' && c <= 'Z')
18             c += 32; 
19         if(c >= 'a' && c <= 'z')
20             a[c-'a'].num++;
21     }
22     for(i = 0; i < 26; i++)
23         for(j = i + 1; j < 26; j++){
24             if(a[i].num < a[j].num){
25                 t = a[i].num;
26                 a[i].num = a[j].num;
27                 a[j].num = t;
28                 temp = a[i].ch;
29                 a[i].ch = a[j].ch;
30                 a[j].ch = temp;
31             }
32             if(a[i].num == a[j].num)
33                 if(a[i].ch > a[j].ch){
34                     t = a[i].num;
35                     a[i].num = a[j].num;
36                     a[j].num = t;
37                     temp = a[i].ch;
38                     a[i].ch = a[j].ch;
39                     a[j].ch = temp;
40                 }
41         }
42     for(i = 0; i < 26; i++)
43         if(a[i].num > 0)
44             printf("%c %d\n", a[i].ch-32, a[i].num);
45     return 0;
46 }