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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:15:23