【发布时间】:2021-09-12 22:50:44
【问题描述】:
运行此代码并将startn 输入1200 并将endn 输入1300 时,输出为Years:0。在哪里通过给定的测试应该是Years:1。请注意,代码运行时不会出错,并且可以与其他数字一起使用。
#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);
float total = (startn + startn/3 - startn/4);
float finalTotal = total;
int n=0;
while (finalTotal<endn)
{
finalTotal = (finalTotal + finalTotal/3 - finalTotal/4);
n++;
}
printf("Years: %i\n", n);
}
代码的目的是计算到达给定的骆驼最终种群endn 所需的年数,并从给定的骆驼种群开始。在这样做的同时,我们添加了出生的美洲驼+ finalTotal/3 并删除了死亡的美洲驼- finalTotal/4。然后将总数保存在finalTotal
【问题讨论】:
-
代码应该做什么?您给我们举了一个例子,但没有告诉我们总体要求。
-
我会编辑的。
-
高度可疑:依赖
float精确到整数级别。使用在int(将截断)和float(不会)上运行的除法具有相同的代码。 -
你有什么建议?
-
start 1200 和 end 1301 的答案应该是什么?