大家好!据说有1.2亿人口,每年增加8%。我希望从1990年到2020年有一个DO循环,说明人口超过1.25亿的年份。伪代码或Fortran代码将不胜感激。
答案 0 :(得分:4)
对于哪些循环是必要的或适当的,这不是问题。简单的等式
num_years = log(125.0/120.0)/log(1.08)
(评估为大约0.53
)就是必要的。这是复合利息计算公式的直接重写,即
compound_amt = initial_amt * (1+interest_rate)**num_years
,在这种情况下,initial_amt = 120*10**6
,compound_amt = 125*10**6
和interest_rate = 8%
。
答案 1 :(得分:2)
很容易在Fortran中找到解决问题的循环教程。请参阅此处example。但一般来说,你想要这样的东西:
sum=120e6
startyear=1990
do i = 1,30
sum = sum + sum*8./100.
if sum > 125e6 then
write(*,*), "Year ", i+startyear, " population exceeded ", sum
end if
end do
答案 2 :(得分:0)
population = 120000.0
year = 1990
loop:
population = population + (population * 0.08)
year = year + 1
if (population > 125000.0) go to print_done
if (year > 2020) go to print_not_found
go to loop
print_done:
print "The population was " population " in the year " year
stop
print_not_found:
print "Searched to year " year " and the population only reached " population
stop
请注意,在检查人口之前或之后是否应该增加年份是一个问题。这取决于您是否希望年初或年末的人口(假设初始值是在年初)。