-
问题展示
方法一
-
统计字符:程序通过
getchar()
函数读取用户输入的每个字符,直到遇到非零字符或文件结束符(EOF)。 -
条件判断:对于每个读取的字符,程序检查它是否是'A'或'B',并相应地增加计数器
a
或b
。 -
结果输出:
- 如果'A'和'B'的数量相等,输出'E'。
- 如果'A'的数量多于'B',输出'A'。
- 如果'B'的数量多于'A',输出'B'。
方法2——利用缓冲输入提高效率
stdio.h
:标准输入输出库,用于printf
和fgets
函数。string.h
:字符串处理库,虽然在这个代码中没有使用到任何字符串处理函数,所以实际上不需要包含这个头文件。char line[1024]
:一个字符数组,用于存储每次从标准输入读取的一行文本。数组大小为1024,这意味着它最多可以存储1023个字符加上一个空字符(字符串结束符)。int a = 0, b = 0
:两个计数器,分别用于统计字符'A'和'B'的出现次数。while (fgets(line, sizeof(line), stdin))
:使用fgets
函数从标准输入读取一行文本。fgets
会读取直到换行符或文件结束符,并将读取的文本存储在line
数组中。循环继续直到读取到文件结束符(EOF)。for (int i = 0; line[i]; i++)
:遍历line
数组中的每个字符,直到遇到字符串结束符\0
。if (line[i] == 'A') a++;
:如果当前字符是'A',则增加a
的计数。if (line[i] == 'B') b++;
:如果当前字符是'B',则增加b
的计数。if (a == b) printf("E\n");
:如果'A'和'B'的计数相等,打印"E"。else if (a > b) printf("A\n");
:如果'A'的计数大于'B'的计数,打印"A"。else printf("B\n");
:如果'B'的计数大于或等于'A'的计数,打印"B"。