Online Compiler C

#include <stdio.h> #include <ctype.h> int main() { int counts[26] = {0}; int ch; while ((ch = getchar()) != EOF && ch != '\n' && ch != '\r') { if (isalpha(ch)) { int index = tolower(ch) - 'a'; counts[index]++; } } int max_count = 0; char result = '-'; for (int i = 0; i < 26; i++) { if (counts[i] > max_count) { max_count = counts[i]; result = 'a' + i; } } putchar(result); putchar('\n'); return 0; }
这段代码的功能是:从输入中读取一行字符(遇到换行或回车结束),统计其中英文字母的出现次数,然后输出出现次数最多的那个字母(小写形式)。如果没有任何字母,则输出连字符 `-`。

代码的逻辑基本正确,但有一个潜在问题需要注意。

- 你的程序只读取到第一个换行或回车就停止,但题目可能要求读取多行输入直到文件结束。如果题目要求处理整个输入流,那么循环条件中的 `ch != '\n'` 和 `ch != '\r'` 会限制输入范围。
- 当所有字母出现次数都为0时,`result` 保持为 `'-'`,输出连字符是合理的。但你需要确认题目是否要求在这种情况下输出其他内容,比如不输出任何字符。