/*
***************************************************************************
* 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;
}
|