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

统计字符串元音字母数量时出现编译错误,请求排查问题

统计字符串元音字母数量的C代码编译错误排查

你编写的用于统计字符串元音数量的C代码如下:

// 统计字符串中的元音字母数量
#include <stdio.h>
#include <string.h>

void printstring();

int main() {

    char sai[8];           // 允许8个字符
    char a,e,j,o,u;        // 因为已经用i做循环变量,所以用j代替i(此处为逻辑错误)
    fgets(sai, 8, stdin);  // 输入名字
    char *ptr = sai;       // 给字符串设置指针
    int i,t = 0;

    for(i = 0;i <= 7; i++){
        if(*(ptr+i) == a) || (*(ptr+i) == e) || (*(ptr+i) == j) || (*(ptr + i) == o) || (*(ptr + i) == u){
            t = t+1;
        }

        else {
            t = t;
        }
}
printf("%d", t);
}

编译时出现的错误信息:

jill.c: In function 'main':
jill.c:12:23: error: expected expression before '||' token
     if(*(ptr+i) == a) || (*(ptr+i) == e) || (*(ptr+i) == j) || (*(ptr + i) == o) || (*(ptr + i) == u){
                       ^~

错误原因及修正方案

  • 语法错误:if条件括号使用不当
    ||是逻辑或运算符,必须包含在if的一对括号内部。你错误地将条件拆分成多个括号,导致语法解析失败。正确写法是把所有判断条件放在同一个if()括号中。

  • 逻辑错误:用未初始化变量代替字符常量
    你定义的a,e,j,o,u是未赋值的字符变量,存储的是随机垃圾值,根本不是要比较的元音字母。直接使用单引号包裹的字符常量'a'、'e'、'i'、'o'、'u'才是正确做法。

  • 逻辑错误:元音字母'i'被误写为'j'
    你注释中提到用j代替i,但元音字母是i而非j,这会导致无法统计字母i,直接改成'i'即可。

  • 逻辑错误:循环条件不合理
    for(i = 0;i <=7; i++)会强制遍历数组所有8个元素,但fgets读取的字符串以'\0'结尾,若输入字符串长度不足7,后续元素为未定义值。正确做法是遍历到字符串结束符'\0'为止:

    for(i = 0; ptr[i] != '\0'; i++)
    
  • 冗余代码:else分支无意义
    else { t = t; }对程序逻辑没有任何贡献,直接删除即可。

修正后的完整代码

// 统计字符串中的元音字母数量
#include <stdio.h>
#include <string.h>

int main() {
    char sai[8];
    fgets(sai, 8, stdin);
    char *ptr = sai;
    int t = 0;

    while(*ptr != '\0') {
        // 同时支持大小写元音统计
        if(*ptr == 'a' || *ptr == 'e' || *ptr == 'i' || *ptr == 'o' || *ptr == 'u' ||
           *ptr == 'A' || *ptr == 'E' || *ptr == 'I' || *ptr == 'O' || *ptr == 'U') {
            t++;
        }
        ptr++;
    }
    printf("%d\n", t);
    return 0;
}

内容的提问来源于stack exchange,提问作者POTHU SAI KRISHNA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:45:38