C语言do-while循环实现三次答错输出指定提示问题求解
代码问题排查
你的计数思路本身没问题,现有代码跑不通是三个硬伤导致的:
- 循环外的
printf("stop answering wrong freak!\n");是无条件执行的,不管用户是答对跳出循环,还是答错3次跳出,都会打印这句话,答对了也会触发错误提示。 - 循环末尾的
break;属于非法语法,break关键字只能在循环、switch语句块内部使用,写在循环外会直接编译报错。 - 代码里调用了
strcmp函数但没有引入<string.h>头文件,部分编译环境下会出现判断逻辑异常、编译失败的问题。
修正方案
调整循环内的分支跳转逻辑,答对后直接终止程序,只有答错满3次跳出循环时才打印对应提示,删掉非法语法,补全头文件即可。
修正后的完整可运行代码:
#include <stdio.h> #include <string.h> int main() { char n[20]; int x = 0; do { printf("Are you cool yes/no ? "); scanf("%19s", n); if (strcmp(n, "yes") == 0) { printf("%s is the correct answer, i can only be friends with cool people\n", n); return 0; } x++; printf("%s is the wrong answer, i only like cool people sorry!\n", n); } while (x < 3); printf("stop answering wrong freak!\n"); return 0; }
运行效果说明
- 任意一次输入
yes:立即输出答对提示,程序正常结束,不会触发答错满3次的提示 - 累计输入3次非
yes内容(不局限于no,任意非yes输入都会被判定为答错):输出3次答错提示后,打印stop answering wrong freak!,程序结束。如果需要严格判定只有输入no才算答错,只需要在现有判断分支里加一层输入内容是否为no的校验,匹配后再给计数器自增即可。
内容的提问来源于stack exchange,提问作者dddave
相关产品推荐
相关产品推荐

