春节至,亲朋好友聚会忙,聚会之人有时会说到自己的生肖。对于给定的若干人的生肖,请统计各种生肖的人数,并按人数从多到小输出各种出现的生肖及其人数。若有多种生肖的人数相同,则按生肖英文单词(详见最后的提示)的字典序输出。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试先输入1个整数n(1<=n<=100)表示聚会人数,再输入n个字符串(长度不超过7且仅包含小写字母),每个字符串表示一个人的生肖。 输出格式: 对于每组测试,按描述要求输出结果,每种出现的生肖及其人数占一行,每行的两个数据之间以一个空格间隔。每两组测试数据之间留一个空行。 输入样例: 2 4 tiger rabbit dragon rabbit 5 tiger rabbit dragon rabbit dragon 输出样例: rabbit 2 dragon 1 tiger 1 dragon 2 rabbit 2 tiger 1 提示: 鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪等十二生肖相应的英文单词如下: rat、ox、tiger、rabbit、dragon、snake、horse、goat、monkey、rooster、dog、pig 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB用C语言
时间: 2023-06-12 19:04:28 浏览: 1571
前段时间有人发贴说用树莓派可以发射FM收音机信号, 于是便整来玩玩
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
char *aa = *(char **)a;
char *bb = *(char **)b;
if (strcmp(aa, bb) > 0) return 1;
else if (strcmp(aa, bb) < 0) return -1;
else return 0;
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n;
char s[100][10];
int cnt[12] = {0};
char *name[12] = {"rat", "ox", "tiger", "rabbit", "dragon", "snake", "horse", "goat", "monkey", "rooster", "dog", "pig"};
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", s[i]);
if (strcmp(s[i], "rat") == 0) cnt[0]++;
else if (strcmp(s[i], "ox") == 0) cnt[1]++;
else if (strcmp(s[i], "tiger") == 0) cnt[2]++;
else if (strcmp(s[i], "rabbit") == 0) cnt[3]++;
else if (strcmp(s[i], "dragon") == 0) cnt[4]++;
else if (strcmp(s[i], "snake") == 0) cnt[5]++;
else if (strcmp(s[i], "horse") == 0) cnt[6]++;
else if (strcmp(s[i], "goat") == 0) cnt[7]++;
else if (strcmp(s[i], "monkey") == 0) cnt[8]++;
else if (strcmp(s[i], "rooster") == 0) cnt[9]++;
else if (strcmp(s[i], "dog") == 0) cnt[10]++;
else if (strcmp(s[i], "pig") == 0) cnt[11]++;
}
for (int i = 0; i < 12; i++) {
for (int j = i + 1; j < 12; j++) {
if (cnt[j] > cnt[i]) {
int tmp = cnt[j];
cnt[j] = cnt[i];
cnt[i] = tmp;
char *s_tmp = name[j];
name[j] = name[i];
name[i] = s_tmp;
} else if (cnt[j] == cnt[i]) {
if (strcmp(name[j], name[i]) < 0) {
char *s_tmp = name[j];
name[j] = name[i];
name[i] = s_tmp;
}
}
}
}
for (int i = 0; i < 12; i++) {
if (cnt[i] > 0) {
printf("%s %d\n", name[i], cnt[i]);
}
}
if (T) printf("\n");
}
return 0;
}
```
阅读全文