C语言使用while循环实现人数达150退出程序异常问题求助
问题根因
你的程序问题出在循环判断时机和变量更新顺序不匹配,具体逻辑拆解:
- while循环的判断规则是「每次进入循环前检查
people是否小于150」,只有满足条件才会执行循环体内部代码 - 第7次循环执行完成后,
people的值为146,确实小于150,所以程序会判定可以进入第8次循环 - 进入第8次循环后,程序先更新
weeks和people的值,计算得到people=276后才执行打印,执行完本次循环后下次判断才会识别到276≥150、终止程序,所以最后会打印出276的结果。
修复方案
如果想要people达到150就终止,不输出超过150的数值,推荐调整判断顺序,更新变量后先判断是否达标再决定是否打印:
int main () { // declare variables int weeks=0, people=5; while (1) { weeks++; people=(people-weeks)*2; // 更新后先判断是否超过阈值,超过直接终止 if (people >= 150) { break; } printf("On week %d Professor Rabnud's Social Media Group has %d people\n", weeks, people); } // end program return 0; }
修改后程序只会打印到第7周146人的结果,符合需求。
内容的提问来源于stack exchange,提问作者nihalafs11
相关产品推荐
相关产品推荐

