CS50 Llama实验年份计算异常:输出年份始终为1
种群增长计算程序的bug分析与修复
你的程序存在三个关键问题,导致输出年份始终为1:
- 初始值错误:
pop_val被初始化为0,但它应该承接起始种群规模pop_start,否则增长计算从0开始,完全偏离需求。 - 循环条件逻辑颠倒:
while (pop_end < pop_val)的条件写反了,正确逻辑应该是当当前种群pop_val还未达到目标规模pop_end时继续循环,即while (pop_val < pop_end)。 - 循环语法错误:while语句末尾多了一个分号
;,这会让循环体变成空语句,后面的大括号代码只会执行一次,所以year固定为1。
修复后的完整代码:
#include <cs50.h> #include <stdio.h> int main(void) { int pop_start; int pop_end; int year = 0; int pop_val = 0; do { pop_start = get_int("Population start size: "); } while (pop_start < 9); // Prompt for end size do { pop_end = get_int("Population end size: "); } while (pop_end < pop_start); // 初始化当前种群为起始值 pop_val = pop_start; // 修正循环条件和去掉多余分号 while (pop_val < pop_end) { pop_val = pop_val + (pop_val / 3) - (pop_val / 4); year++; } printf("years:%i\n", year); }
内容的提问来源于stack exchange,提问作者Vimoxi
相关产品推荐
相关产品推荐

