Online Compiler C

#include <ctype.h> #include <stdio.h> int main() { char str[1001]; int i = 0; fgets(str, sizeof(str), stdin); while (str[i] != '\0') { char c = tolower(str[i]); if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u'&&c != 'A' && c != 'E' && c != 'I' && c != 'O' && c != 'U') { putchar(str[i]); } i++; } return 0; }
这段代码的功能是:从标准输入读取一行字符串,然后输出其中所有非元音字母(包括大小写)的字符。它使用 `fgets` 读取字符串,遍历每个字符,如果该字符不是元音字母(a、e、i、o、u 的大小写形式),就原样输出。

- 代码中有一个逻辑冗余:你先把字符转为小写 `c` 来判断是否是元音,但后面又用原字符 `str[i]` 输出。实际上,你只需要判断一次,比如统一用小写判断,然后输出原字符即可。但这里你同时检查了大小写元音,导致 `c` 变量没有完全发挥作用。
- 注意:`tolower` 函数只对字母有效,对非字母字符(如数字、标点)会原样返回,但你的判断条件只排除了元音字母,所以非字母字符会被正常输出,这符合预期。不过,如果你希望只输出辅音字母(即字母且非元音),需要额外检查字符是否为字母。