春节至,亲朋好友聚会忙,聚会之人有时会说到自己的生肖。对于给定的 若干人的生肖,请统计各种生肖的人数,并按人数从多到少输出各种出现的生肖及其人数。 若有多种生肖的人数相同,则按生肖英文单词(详见最后的提示)的字典顺序输出。 输入:首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试先输入1 个整数n(1<=n<=100)表示聚会人数,再输入n个字符串(长度不超过7且仅包含小写字 母),每个字符串表示一个人的生肖。 输出:对于每组测试,按描述要求输出结果,每种出现的生肖及其人数占一行,每行的两个 数据之间以一个空格间隔。每两组测试数据之间留一个空行。 16 提示:鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪等十二生肖相应的英文单词如 下:rat、ox、tiger、rabbit、dragon、snake、horse、goat、monkey、rooster、dog、pig 用C语言
时间: 2023-07-04 15:05:24 浏览: 375
妇女节是什么生肖.doc
```c
#include <stdio.h>
#include <string.h>
struct animal {
char name[10];
int count;
};
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n;
scanf("%d", &n);
struct animal a[12] = {{"rat", 0}, {"ox", 0}, {"tiger", 0}, {"rabbit", 0}, {"dragon", 0}, {"snake", 0}, {"horse", 0}, {"goat", 0}, {"monkey", 0}, {"rooster", 0}, {"dog", 0}, {"pig", 0}};
for (int i = 0; i < n; ++i) {
char s[10];
scanf("%s", s);
for (int j = 0; j < 12; ++j) {
if (strcmp(s, a[j].name) == 0) {
a[j].count++;
break;
}
}
}
// 冒泡排序
for (int i = 0; i < 11; ++i) {
for (int j = i + 1; j < 12; ++j) {
if (a[i].count < a[j].count || (a[i].count == a[j].count && strcmp(a[i].name, a[j].name) > 0)) {
struct animal tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for (int i = 0; i < 12; ++i) {
printf("%s %d\n", a[i].name, a[i].count);
}
if (T > 0) {
printf("\n");
}
}
return 0;
}
```
阅读全文