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

