在线编译器 C

#include <stdio.h> #include <string.h> int main() { char str[1001], res[1001]; fgets(str, sizeof(str), stdin); int len = strlen(str), j = 0; if (len > 0 && str[len - 1] == '\n') { str[len - 1] = '\0'; len--; } for (int i = 0; i < len; i++) { char c = str[i]; if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u' && c != 'A' && c != 'E' && c != 'I' && c != 'O' && c != 'U') { res[j++] = c; } } res[j] = '\0'; puts(res); return 0; }
这段代码的功能是:从标准输入读取一行字符串,然后删除其中所有元音字母(包括大小写),最后输出处理后的结果。

- 代码中 `fgets` 读取字符串后,手动去掉了末尾的换行符,这是正确的做法。
- 循环中逐个检查字符是否为元音,如果不是则复制到结果数组 `res` 中。

代码本身逻辑正确,没有明显错误。但有一个可以改进的地方:当前判断元音的方式比较冗长,可以考虑用更简洁的方法,比如使用 `strchr` 函数来检查字符是否在元音字符串中。不过这不是必须的,当前写法也能正常工作。