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
相关产品推荐
相关产品推荐

