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

C语言if语句使用问题:简易聊天机器人代码输入判断报错如何解决

问题原因
  • 判断逻辑使用了错误的变量:用户输入的心情存储在变量w中,但你的strstr匹配调用传入的是存储姓名的变量y,姓名seth里没有good或bad关键词,所以永远走到无效输入分支。
  • 分支对应逻辑颠倒:当前你写的判断到x(值为good)时输出询问哪里不好的内容,判断到z(值为bad)时输出很好的回应,和实际逻辑需求相反。
  • 额外注意:scanf("%s")只能读取不带空格的字符串,如果用户输入带空格的心情描述会截断,建议根据需求调整输入读取方式。
修复后的完整代码
#include <stdio.h>
#include <string.h>

int main() {
    char y[100];
    char w[100];
    char x[10] = "good";
    char z[10] = "bad";
    
    printf("Hi, what is your name?\n");
    scanf("%s", y);
    printf("nice to meet you %s, how is your day so far?\n", y);
    scanf ("%s", w);
    // 改为匹配存储心情的变量w,同时调整分支逻辑
    if(strstr(w, z) != NULL) {
        printf("Oh, whats wrong?\n");
        scanf("%s", w);
        printf("Oh, I hope your day gets better.");
    }else if(strstr(w, x) != NULL) {
        printf("thats good!");
    }else {
        printf("ERROR: invalid input");
    }
    
    return 0;
}
运行验证

输入姓名seth,输入心情good后,程序会输出thats good!,符合预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:42:00