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

C语言中对比"++X"等字符串时逻辑异常如何解决

错误原因

  • 核心问题是对strcmp函数的返回值规则理解错误:C语言标准库中,strcmp 仅在两个输入字符串完全相等时返回0,若第一个字符串字典序大于第二个返回正整数,小于则返回负整数,你写的==1的判断条件完全不符合字符串相等的判定逻辑。
  • 之前你观察到代码能识别X++属于偶发的测试巧合,该逻辑在不同编译器、不同输入场景下随时会失效。

修正方法

将if判断语句中两个strcmp的判断条件从==1改为==0即可,修正后完整代码如下:

#include<stdio.h>
#include<string.h>
int main() {
    int n,count=0;
    char c[5];
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%s",c);
        if(strcmp(c,"X++")==0 || strcmp(c,"++X")==0) 
            count++;
        else 
            count--;
    }
    printf("%d",count);
    return 0;
}

内容的提问来源于stack exchange,提问作者Md Nasir Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 19:39:04