在线编译器 C

#include <ctype.h> #include <stdio.h> int main(void) { char a[1001]; fgets(a, sizeof(a), stdin); int i = 0, j = 0; for (i = 0; a[i] != '\0'; i++) { if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'|| a[i]=='u'||a[i]=='y'||a[i]=='A'||a[i]=='E'||a[i]=='I'|| a[i]=='O'||a[i]=='U'||a[i]=='Y') continue; a[j++] = a[i]; } a[j] = '\0'; printf("%s", a); return 0; }
这段代码的功能是:从标准输入读取一行字符串,然后删除其中所有的元音字母(包括大小写的 a, e, i, o, u, y),最后输出处理后的字符串。

代码使用两个索引 i 和 j,i 遍历原字符串,j 指向结果字符串的写入位置。当遇到元音字母时跳过(continue),否则将字符复制到 j 位置并递增 j。

- 注意变量 j 的初始值。代码中 j 初始化为 0,但仔细检查循环开始前 j 是否应该与 i 同步?思考一下 j 的初始值对结果的影响。
- 考虑输入字符串开头就是元音字母的情况,当前代码中 j 的初始值是否会导致第一个非元音字母被放到错误的位置?