如何修复C语言猜数字游戏猜对时同时输出RIGHT和FAILURE的问题
C语言猜数字程序BUG修复
问题原因
原代码里的break只会终止while循环,循环结束后的printf("FAILURE!");是无条件执行的,所以用户猜对跳出循环后,还是会打印FAILURE,导致两个内容同时输出。
修复方案
方案1:增加失败判断逻辑(推荐)
仅当8次机会全部用完未猜对时才输出FAILURE,修改后的完整代码如下:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int num, rnum, times = 1; srand(4383); rnum = rand() % 300 + 1; while(times <= 8) { printf("Guess the number random number between 1-300: "); scanf("%d", &num); if (num < rnum) { printf("The random number is bigger\n"); } if (num > rnum) { printf("The magic number is smaller\n"); } if (num == rnum) { printf("RIGHT!"); break; } times++; } // 仅当用完8次机会未猜对时输出失败 if (times > 8) { printf("FAILURE!"); } return 0; }
方案2:猜对直接退出程序
不需要额外加判断,把猜对分支里的break替换为return 0;即可:
if (num == rnum) { printf("RIGHT!"); return 0; // 直接终止整个程序,不会执行后面的FAILURE打印 }
额外优化说明
原代码存在2处拼写错误,修改时已经同步修正:
- 提示语里的
numper改为number - 大小提示里的
biger改为bigger
内容的提问来源于stack exchange,提问作者Black_Sabbath
相关产品推荐
相关产品推荐

