在线编译器 C

#include <stdio.h> int main() { char s[1001]; fgets(s, sizeof(s), stdin); int cnt[26] = {0}; int total = 0; for (int i = 0; s[i] != '\0'; i++) { char c = s[i]; if (c >= 'A' && c <= 'Z') { cnt[c - 'A']++; total++; } else if (c >= 'a' && c <= 'z') { cnt[c - 'a']++; total++; } } if (total == 0) { printf(" \n"); return 0; } int max = 0; for (int i = 0; i < 26; i++) { if (cnt[i] > max) max = cnt[i]; } for (int i = 0; i < 26; i++) { if (cnt[i] == max) { printf("%c\n", 'a' + i); break; } } return 0; }
这段代码的功能是:从标准输入读取一行字符串,统计其中英文字母(不区分大小写)的出现次数,然后输出出现次数最多的字母(小写形式)。如果有多个字母出现次数相同且都是最大,只输出第一个(按字母顺序)。

代码整体逻辑正确,但有一个细节需要注意:

- 当输入字符串中没有字母时,代码输出一个空格加换行。这个输出可能不符合预期,通常应该输出空行或特定提示。检查一下题目要求是否允许输出空格。

- 在寻找最大出现次数时,如果多个字母并列第一,代码只输出第一个遇到的(即字母顺序最小的)。确认这是否是题目要求的行为。