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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:00