请用C语言函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。 输入 一行字符串 输出 可能有多行,每一行的格式:字符 次数 样例输入 复制 abcAbsmaxless 样例输出 复制 a 3 s 3
时间: 2024-03-01 19:56:18 浏览: 167
好的,下面是一个 C 语言的实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void fun(char *s) {
int count[26] = {0}; // 初始化为 0
int max_count = 0;
// 统计每个字母出现的次数
for (int i = 0; s[i]; i++) {
if (isalpha(s[i])) { // 判断是否为字母
int index = tolower(s[i]) - 'a'; // 将字母转换为小写并计算索引
count[index]++;
max_count = (count[index] > max_count) ? count[index] : max_count;
}
}
// 输出出现频率最高的字母
for (int i = 0; i < 26; i++) {
if (count[i] == max_count) {
printf("%c %d\n", 'a' + i, max_count);
}
}
}
int main() {
char s[100];
scanf("%s", s);
fun(s);
return 0;
}
```
你可以通过 `scanf` 获取输入的字符串,然后创建一个大小为 26 的数组,用来统计每个字母出现的次数。遍历字符串中的每个字符,如果是字母,则将其转换为小写,并计算对应的数组索引,然后在数组中增加计数器并更新出现次数的最大值。最后遍历数组,输出出现次数最多的字母及其出现次数。
注意,在输出时需要将索引转换为字母,并且需要使用 `tolower` 函数将大写字母转换为小写字母。
输入样例:
```
abcAbsmaxless
```
输出样例:
```
a 3
s 3
```
阅读全文