|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:都说天降横财不是什么好事儿,这不,小甲鱼中了双色球一等奖,扣除税收后还剩下 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;
- }
复制代码
我的程序:- #include <stdio.h>
- #define MONEY 4000000
- int main()
- {
- int count = 0;
- double total =MONEY;
-
- do
- {
- total -= 500000;
- total += MONEY*0.08;
- count++;
-
- }while(total>=0);
-
- printf("%d年之后,小甲鱼败光了所有的家产,再次回到一贫如洗.....\n",count);
-
- return 0;
- }
复制代码
答案是12年,我的程序是23年,能看出来是什么问题哪里出错了吗?
你的程序出错的地方在于计算每年的红利时使用了固定的MONEY值,而不是每年剩余的资产total。这导致了每年的红利计算错误,因此结果出现了偏差。
在小甲鱼的程序中,他使用了awards来保存每年的剩余资产,并在计算红利时使用了awards的值。这样可以确保每年的红利都是基于剩余资产计算的。
你可以将你的程序修改为:
- #include <stdio.h>
- #define MONEY 4000000
- int main()
- {
- int count = 0;
- double total = MONEY;
- do
- {
- total -= 500000;
- total += total * 0.08;
- count++;
- } while(total >= 0);
- printf("%d年之后,小甲鱼败光了所有的家产,再次回到一贫如洗...\n", count);
- return 0;
- }
复制代码
这样修改后,你的程序应该能够得到正确的结果,即12年。
|
|