Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71325
  • 博文数量: 41
  • 博客积分: 1475
  • 博客等级: 上尉
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 22:49
文章分类
文章存档

2012年(8)

2011年(1)

2009年(32)

我的朋友
最近访客

分类:

2009-04-16 22:13:50

/*
 ***************************************************************************
 * Filename: 10008.c
 *
 * Description:
 *
 * Version: 0.1
 * Created: 4/16/2009 9:17:41 PM
 *
 * Author: Ye Xiaofeng, yexfeng # gmail.com
 *
 ***************************************************************************
 */



#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct item {
    char c;
    int num;
};

int compare(void *v1, void *v2);

int main(int argc, char **agv)
{
    int line_num = 0;
    char line_buffer[1024];
    char *ptr;
    int i = 0;
    struct item item_array[26];


    for (i = 0; i < 26; i++) {
        item_array[i].c = 'A' + i;
        item_array[i].num = 0;
    }
    
    while (scanf("%d\n", &line_num) != -1) {
        for (i = 0; i < line_num; i++) {
            gets(line_buffer);
            for (ptr = line_buffer; *ptr != '\0'; ptr++) {
                if (isalpha(*ptr)) {
                    *ptr = toupper(*ptr);
                    item_array[*ptr-'A'].num++;
                }
            }
        }
    }
    
    qsort(item_array, 26, sizeof(struct item), compare);

    for (i = 0; i < 26; i++) {
        if (item_array[i].num != 0) {
            printf("%c %d\n", item_array[i].c, item_array[i].num);
        }
    }
}

int compare(void *v1, void *v2)
{
    struct item *it1 = v1;
    struct item *it2 = v2;

    if (it1->num != it2->num) {
        return it2->num - it1->num;
    }
    return it1->c - it2->c;
}

阅读(430) | 评论(0) | 转发(0) |
0

上一篇:ACM UVA (10026)

下一篇:ACM UVA (10009)

给主人留下些什么吧!~~