C语言任意输入一段字符串,输出该字符串出现频率最高的字母及其出现的次数(不区分大小写)
时间: 2024-04-08 13:33:14 浏览: 106
为了解决这个问题,我们可以使用一个数组来统计每个字母出现的次数,然后找到出现频率最高的字母及其出现的次数。以下是一个示例的C语言代码:
```c
#include <stdio.h>
#include <ctype.h>
#define ALPHABET_SIZE 26
int main() {
char input[100];
printf("请输入一段字符串:");
fgets(input, sizeof(input), stdin);
int frequency[ALPHABET_SIZE] = {0};
for (int i = 0; input[i] != '\0'; i++) {
if (isalpha(input[i])) {
int index = tolower(input[i]) - 'a';
frequency[index]++;
}
}
int maxFrequency = 0;
int maxIndex = 0;
for (int i = 0; i < ALPHABET_SIZE; i++) {
if (frequency[i] > maxFrequency) {
maxFrequency = frequency[i];
maxIndex = i;
}
}
char mostFrequentLetter = 'a' + maxIndex;
printf("出现频率最高的字母是 %c,出现次数为 %d\n", mostFrequentLetter, maxFrequency);
return 0;
}
```
这段代码中,我们首先定义了一个大小为 26 的整型数组 `frequency`,用于统计每个字母出现的次数。然后,我们使用 `fgets()` 函数接受用户输入的字符串,并遍历字符串中的每个字符。如果字符是字母,则将其转换为小写字母,并根据其 ASCII 值计算出在 `frequency` 数组中的索引,然后将对应位置的计数器加一。
接下来,我们遍历 `frequency` 数组,找到出现频率最高的字母及其出现的次数。最后,我们输出结果。
请注意,在此示例中,我们假设用户输入的字符串不超过 100 个字符,并且没有对输入进行错误处理。在实际应用中,你可能需要根据具体需求对代码进行适当的调整和错误处理。
阅读全文