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

C语言while循环未判断条件致死循环问题求助

解决CS50 Lab1人口增长计算的死循环问题

你的代码死循环的核心原因是while循环的终止条件逻辑错误:

while ((i < z) || (i != z))

这个表达式永远为真——只要i不等于z,不管是小于还是大于,整个判断都会成立,循环根本停不下来。

正确的逻辑应该是:只有当前人口i还小于目标人口z时,才继续计算增长。把循环条件改成:

while (i < z)

修改后的完整循环部分代码:

// year_count
int n =  0;
// Increase the year_count n for every loop until start size i reaches end size z
while (i < z)
{
    // population after a year
    i = i + i / 3 - i / 4;
    n++;
}

你手动添加的if ((i > z) || (i == z)) break;完全多余,只要循环条件正确,当i增长到大于等于z时,循环会自动终止。

举个测试例子:起始人口9,目标人口12,计算过程是9→10→11→12,循环执行3次后i等于12,此时i < z不成立,循环停止,输出Years:3,符合预期。

内容的提问来源于stack exchange,提问作者stilllearning

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:04