送分题
1. 都说天降横财不是什么好事儿,这不,小甲鱼中了双色球一等奖,扣除税收后还剩下 400 万人民币。假设小甲鱼把这些钱做固定投资,每年可以获得 8% 的红利,但在每年的第一天,小甲鱼都会取出 50 万作为本年度的开销……请编写一个程序,计算需要多久小甲鱼才会败光所有家产,再次回到一贫如洗?
#include <stdio.h>
int main()
{
double awards = 4000000;
int count = 0;
while (awards >= 0)
{
awards -= 500000;
awards += awards * 0.08;
count++;
}
printf("%d年之后,小甲鱼败光了所有的家产,再次回到一贫如洗……\n", count);
return 0;
}
这里为什么是while(awards>=0) 括号里不应该是awards>0吗 如果是awards>=0的话,那么=0的情况下应该再一次循环,但是=0时候已经是一贫如洗了为什么还要循环一次 本帖最后由 风过无痕1989 于 2020-8-28 00:48 编辑
如果没有那个等于 0,11年后还剩下 337792.77元。这个时候并非一贫如洗 ! 如若励精图治,并非没有东山再的机会。实际上此题严格来说,条件应该是:awards >= 500000,11年后虽然没有败光,但银行已经不可能再给他取 50 万了 本帖最后由 baige 于 2020-8-28 08:02 编辑
awards>0还是awards>=0在这个程序都没有区别,你可以输出一下每次循环的值,无论加不加等号结果都是一样,awards不可能等于0,它在最后一次循环从337992.758100到-174967.821252,所以>=0,>0是一样的 =0的作用在于,将【一贫如洗】的定义范围从0~500000拉低到-500000~0
目的在于【花销次数的增加】满足【固定资产一贫如洗(就是不能是正数呗)】的条件在停止循环 #include <stdio.h>
int main()
{
double awards = 4000000;
int count = 0;
while (awards >= 500000)
{
awards -= 500000;
awards += awards * 0.08;
++count;
printf("%d\t%lf\n",count,awards);
}
printf("%d年之后,小甲鱼败光了所有的家产,再次回到一贫如洗……\n", count);
return 0;
}
昨非 发表于 2020-8-28 09:20
=0的作用在于,将【一贫如洗】的定义范围从0~500000拉低到-500000~0
目的在于【花销次数的增加】满足【固 ...
明白了谢谢
页:
[1]