//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作为终止条件。
- 检查循环条件:如果输入已经结束,继续读取会得到什么?如何避免多读无效字符?