c语言:输入20个字符串到字符数组str[20][30],统计其中相同字符串个数的最大数。
时间: 2023-11-13 18:03:20 浏览: 136
可以使用一个嵌套循环遍历字符数组中的每一个字符串,再使用另一个循环统计与该字符串相同的字符串数量。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STR_LEN 30
#define MAX_STR_NUM 20
int main() {
char str[MAX_STR_NUM][MAX_STR_LEN]; // 字符数组
int count[MAX_STR_NUM] = {0}; // 用于统计相同字符串数量的数组
int max_count = 0; // 最大相同字符串数量
int i, j;
// 输入字符串
printf("请输入20个字符串(每行一个,不超过%d个字符):\n", MAX_STR_LEN - 1);
for (i = 0; i < MAX_STR_NUM; i++) {
scanf("%s", str[i]);
}
// 统计相同字符串数量
for (i = 0; i < MAX_STR_NUM; i++) {
if (count[i] > 0) { // 如果已经统计过该字符串,则跳过
continue;
}
// 统计与当前字符串相同的数量
for (j = i + 1; j < MAX_STR_NUM; j++) {
if (strcmp(str[i], str[j]) == 0) {
count[i]++;
count[j]++;
}
}
// 更新最大相同字符串数量
if (count[i] > max_count) {
max_count = count[i];
}
}
// 输出结果
printf("最大相同字符串数量为:%d\n", max_count);
return 0;
}
```
在这个程序中,我们首先定义了一个字符数组 `str` 和一个用于统计相同字符串数量的数组 `count`,并将后者所有元素初始化为 0。然后,使用一个循环遍历字符数组中的每一个字符串,再使用另一个循环统计与该字符串相同的字符串数量。具体来说,对于字符串数组中的第 `i` 个字符串,我们在后续的循环中从字符串数组的第 `i+1` 个字符串开始遍历,如果发现有相同的字符串,就将两个字符串在 `count` 数组中的对应元素的值都加一。这样,在遍历完所有的字符串后,`count` 数组中的每个元素就表示对应字符串在字符数组中出现的次数。最后,再遍历一遍 `count` 数组,找到其中的最大值即可。
阅读全文