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

#include <stdio.h> int hhh(char c) { int count = 0; char d[] = {'a','e','i','o','u','y'}; for(int j; 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; }
这段代码的功能是:从输入的字符串中删除所有元音字母(包括y),然后输出剩下的字符。

代码中有一个关键问题:函数 `hhh` 的变量 `j` 没有初始化,这会导致循环行为不确定。

- 在 `hhh` 函数中,`for(int j; j< 6; j++)` 里的 `j` 没有赋初值,它的初始值是不确定的,可能使循环无法正确遍历数组 `d`。你需要给 `j` 一个明确的起始值。
- 另外,函数名 `hhh` 不太直观,可以考虑用更有意义的名字,比如 `is_consonant`,但这不影响功能。