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
相关产品推荐
相关产品推荐

