Онлайн компилятор C

//a, e, i, o, u, y. //Одна непустая строка длиной до 200 символов без пробелов. #include <stdio.h> int main() { int count =0; char ch=0; for(int i=0;i<=200;i++) { scanf("%c",&ch); if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'||ch=='y') { count++; } } printf("%d\n",count); return 0; }
这段代码试图统计输入字符串中元音字母(a, e, i, o, u, y)的个数,但存在几个问题。

- 循环固定执行201次,但输入字符串长度未知,如果输入少于201个字符,程序会继续读取后续的换行符或垃圾字符,导致计数不准确。
- 没有处理字符串结束的标志(比如换行符或EOF),循环应该根据实际输入长度停止,而不是固定次数。

- 考虑如何判断输入何时结束。通常可以用换行符或EOF作为终止条件。
- 检查循环条件:如果输入已经结束,继续读取会得到什么?如何避免多读无效字符?