在线编译器 C

#include <stdio.h> int hhh(char c) { int count = 0; char d[] = {'a','e','i','o','u','y'}; for(int j = 0; j< 6; j++) { if(c ==d[j]) { count++; } } if (count == 0 ) { return 1; } else { return 0; } } int main() { char a[1001],b[1001]; scanf("%[^\n]", a); int len = 0,count = 0; for(int i=0; a[i] != '\0'; i++, len++); for(int i = 0; i < len; i++) { if(hhh(a[i]) == 1) { b[count] = a[i]; count++; } } for(int i = 0; i < count; i++) { putchar(b[i]); } return 0; }
这段代码的功能是:从用户输入的字符串中,筛选出所有非元音字母(a、e、i、o、u、y)并输出。函数 `hhh` 判断一个字符是否为元音,如果是则返回0,否则返回1。主程序读取一行字符串,遍历每个字符,将非元音字符存入数组 `b` 并最后输出。

- 函数 `hhh` 的名字和逻辑有些令人困惑。它实际上检查字符是否为元音,但返回1表示“不是元音”,返回0表示“是元音”。考虑给函数起一个更清晰的名字,比如 `is_not_vowel`,或者直接返回相反的逻辑(比如是元音返回1,不是返回0),这样主程序中的条件判断会更直观。

- 在 `hhh` 函数中,你用一个计数器 `count` 来记录匹配次数,但这里其实不需要计数,一旦找到匹配就可以立即返回0。这样代码更简洁高效。