编写一个程序读取未指定个数的字符串(以空格隔开),找出出现次数最多的字符串及其出现次数。 如果出现次数最多的有多个字符串,按照字符串升序输出所有出现次数最多的字符串。 例如输入abc bcd abc bcd bbb,那么字符串"abc"和"bcd"出现的次数最多,2次,先输出abc 2,再输出bcd 2。 【样例输入】 abc bcd abc bcd bbb 【样例输出】 abc 2 bcd 2 【样例说明】 输入为一行,分别是以空格分隔开的未指定个数的字符串 输出为不定行,按照字符串升序排列的出现次数最多的字符串及其出现次数
时间: 2023-05-15 16:07:44 浏览: 238
以下是C知道的回答:
可以使用哈希表来记录每个字符串出现的次数,然后遍历哈希表找出出现次数最多的字符串及其出现次数。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 1000
int main() {
char str[MAXN], word[MAXN];
int cnt[MAXN], n = 0;
// 读入字符串
while (scanf("%s", word) == 1) {
int found = 0;
for (int i = 0; i < n; i++) {
if (strcmp(word, str[i]) == 0) {
cnt[i]++;
found = 1;
break;
}
}
if (!found) {
strcpy(str[n], word);
cnt[n] = 1;
n++;
}
}
// 找出出现次数最多的字符串
int max_cnt = 0;
for (int i = 0; i < n; i++) {
if (cnt[i] > max_cnt) {
max_cnt = cnt[i];
}
}
// 按照字符串升序输出所有出现次数最多的字符串
for (int i = 0; i < n; i++) {
if (cnt[i] == max_cnt) {
printf("%s %d\n", str[i], cnt[i]);
}
}
return 0;
}
```
对于输入"abc bcd abc bcd bbb",输出为:
```
abc 2
bcd 2
```
阅读全文