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

#include <stdio.h> int main() { char s[1001]; int len = 0, i; scanf("%[^\n]", s); while (s[len] != 'a'&&s[len] != 'e'&&s[len] != 'i'&&s[len] != 'o'&&s[len] != 'u'&&s[len] != 'y') { printf("%d",s[len]); len++;} } return 0; }
这段代码试图读取一行字符串,然后输出其中非元音字母(a、e、i、o、u、y)的ASCII码值。但代码存在逻辑问题。

- 你的while循环条件只检查当前字符是否为元音,一旦遇到元音就会停止循环,而不是跳过元音继续处理后续字符。这导致程序只输出元音出现之前的字符,而不是所有非元音字符。
- 循环结束后,你只输出了第一个非元音字符的ASCII码,没有处理字符串中剩余的非元音字符。

提示:
- 思考如何遍历整个字符串,对每个字符单独判断它是否为元音,而不是在条件中直接控制循环的继续或停止。
- 你需要在循环内部使用if语句来判断当前字符,如果是非元音则输出,然后无论是否输出,都要继续移动到下一个字符。