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

C语言llama种群计算代码输入1200、1300时如何输出Years:1

问题根因

这段代码的问题出在初始值赋值逻辑错误:

  • 代码直接把startn经过1年增长后的结果赋值给了finalTotal,而不是把初始的startn作为finalTotal的初始值
  • 你的测试用例中1200增长1年刚好等于1300:1200 + 1200/3 - 1200/4 = 1300,此时finalTotal初始值就是1300,while (finalTotal<endn)判断不成立,n没有累加,所以输出了0年,和预期不符。

另外还有潜在风险:羊驼数量是正整数,用float存储可能出现精度误差,建议改用int类型存储种群数量。


修复后的代码

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int startn;
    int endn;

    do
    {
        startn = get_int("what should the starting number of llamas be?\n");
        endn = get_int("what should the ending number of llamas be?\n");
    }
    while (startn < 9 || endn < startn);

    // 修正:初始种群数量为startn,不是增长一次后的结果
    int finalTotal = startn;
    int n = 0;
    
    while (finalTotal < endn)
    {
        finalTotal = finalTotal + finalTotal/3 - finalTotal/4;
        n++;
    }

    printf("Years: %i\n", n);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:48:02