计算给定列表中没有元音的单词

Count words without vowels in a given list in c

我正在尝试计算给定列表中不包含任何元音的单词。这是我的代码:

int noVowel(char * List[], int nSize){
int i, j, count = 0;

for(i=0; i<nSize; i++){
for(j=0; j<strlen(List[j]); j++){
        if(*List[j]!='a' || *List[j]!='e' || *List[j]!='i' || *List[j]!='o' || *List[j]!='u')
            count++;
    }
}
return count;}

List[] 是我要检查的单词列表。 nSize 是 List[].

中列出的单词数

我想请求帮助返回 个单词 没有元音 。由于我是编程新手,对于令人困惑的代码,我深表歉意。

这是对您的代码的更正:

#include <stdio.h>
#include <string.h>

int isVowel(char c) {
    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c =='u' || c =='y')
        return (1);
    else
        return (0);
}

首先,这是一个函数,通过返回 1 来告诉您字符是否为元音(如果不是元音,则 returns 0)。

int noVowel(char *List[], int nSize){
    int i, j, count = 0;
    
    for(i = 0; i < nSize; i++) {
        
        for(j = 0; j < strlen(List[i]); j++) {

            if (isVowel(List[i][j]) == 1)
                break ;
        }
        if (List[i][j] == '[=11=]')
                count++;
    }
    return count;
}

其次,和你一样,我做了两个循环来遍历字符串中的所有字符。如果我找到一个元音字母,我会中断,这意味着我会跳出当前循环。如果我在第二个循环之外,我想知道我是否能够走到字符串的末尾。如果是,我没有找到任何元音,所以我可以增加我的计数整数。

您在执行 2 个循环时出错。通过运行这个版本一个一个地显示字符你应该看到有问题。

for(i=0; i<nSize; i++){
    for(j=0; j<strlen(List[j]); j++){
        printf("%c", List[i][j]);
    }
    printf("\n");
}

P.S.: 缩进在编程中很重要,它使您的代码易于阅读。在我的学校,我们使用以下约定 https://cdn.intra.42.fr/pdf/pdf/960/norme.en.pdf(你不应该应用他们提出的所有规则,但其中一些是好的做法)