You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言统计给定列表中不含元音单词数的代码问题求助

问题解答

现有代码的问题

  • 索引使用错误:内层循环遍历当前单词字符时,误用j作为单词索引取List[j],实际应该用外层的单词索引i取List[i];读取字符时每次只取单词首字符*List[j],没有按字符索引取List[i][j]
  • 逻辑运算符错误:判断字符不是元音时使用||(逻辑或),该条件对任意字符都永远成立,应该替换为&&(逻辑与)
  • 计数逻辑错误:当前代码是每遇到一个非元音字符就计数+1,需求是整个单词完全不含元音时才对该单词计数1次,计数维度完全错误

正确实现代码

#include <string.h>

int noVowel(char *List[], int nSize) {
    int count = 0;
    // 遍历所有单词
    for (int i = 0; i < nSize; i++) {
        int hasVowel = 0; // 标记当前单词是否包含元音
        int len = strlen(List[i]);
        // 遍历当前单词的每个字符
        for (int j = 0; j < len; j++) {
            char cur = List[i][j];
            if (cur == 'a' || cur == 'e' || cur == 'i' || cur == 'o' || cur == 'u'
                || cur == 'A' || cur == 'E' || cur == 'I' || cur == 'O' || cur == 'U') {
                hasVowel = 1;
                break; // 已经找到元音,无需继续遍历当前单词
            }
        }
        // 整个单词没有元音,计数+1
        if (!hasVowel) {
            count++;
        }
    }
    return count;
}

实现说明

  • 新增hasVowel标记位,用于判断单个单词是否存在元音
  • 提前计算单词长度存入变量,避免循环中重复调用strlen损耗性能
  • 补充了大写元音的判断,兼容大写输入场景,如果不需要可以自行删除对应判断条件
  • 找到元音后直接跳出当前单词的遍历,减少不必要的计算

内容的提问来源于stack exchange,提问作者user13839242

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:57:04