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

C语言使用逻辑运算符比较多个字符串无法正常工作如何解决?

问题核心原因

你代码的问题出在两个地方:

  1. strcmp返回值判断错误
    C语言标准规定,strcmp函数只有在两个字符串完全相等时返回0;如果第一个字符串字典序大于第二个返回正整数,小于则返回负整数,返回的正/负数值不一定是1/-1,你写的strcmp(...) == 1的判断逻辑本身就不成立。
  2. 判断逻辑和运算符使用错误
    你要实现的效果是「输入和三个指定字符串都不相等时输出错误提示」,对应的逻辑运算符应该是逻辑与&&,而不是你用的逻辑或||。

其他可优化点

scanf("%s", &game);写法不规范:字符数组名本身就是数组首地址,不需要额外取地址,直接写scanf("%s", game);即可。

修正后可正常运行的代码

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

int main()
{
    char game[40];
    printf("Enter one among rock, paper and scissor: ");
    scanf("%s", game);
    for (int i = 0; game[i]; i++)
    {
        game[i] = tolower(game[i]);
    }
    // 三个都不匹配时才触发错误提示
    if (strcmp(game, "rock") != 0 && strcmp(game, "paper") != 0 && strcmp(game, "scissor") != 0)
    {
        printf("It is a wrong input\n");
    }
    else
    {
        /* 匹配成功,执行后续逻辑 */
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:24:03