S1E16课后作业答疑
1. 都说天降横财不是什么好事儿,这不,小甲鱼中了双色球一等奖,扣除税收后还剩下 400 万人民币。假设小甲鱼把这些钱做固定投资,每年可以获得 8% 的红利,但在每年的第一天,小甲鱼都会取出 50 万作为本年度的开销……请编写一个程序,计算需要多久小甲鱼才会败光所有家产,再次回到一贫如洗?
请问为何下面的程序运行处理,是n=0?
#include <stdio.h>
#include <math.h>
int main()
{
double Mon=400,rate=0.08,rest;
int n=0;
while(rest>0)
{
rest=Mon*(1+rate)-50;
Mon=rest*(1+rate);
n++;
}
printf("%d年后,小甲鱼一贫如洗!\n",n);
return 0;
}
rest 都没赋初值你就让它跑循环 咋跑 ? wp231957 发表于 2021-4-11 18:12
rest 都没赋初值你就让它跑循环 咋跑 ?
说的dei。。。。 wp231957 发表于 2021-4-11 18:12
rest 都没赋初值你就让它跑循环 咋跑 ?
我随便服了一个值rest=1,为了让循环跑起来。可是为何还是不行?
这回啥结果都没有 本帖最后由 肖-肖 于 2021-4-11 20:44 编辑
分析如下:
你的错误出现在了循环体内-》重置取出五十万后卡内余额的代码就是这句-》Mon=rest*(1+rate);
-》还是看吧,代码比较直观-》看注释就能看懂了,自认为写的很清楚了
还有就是不能将500万写成50,一个大数*0.08和一个小数*0.08-》肯定不相同啊!
代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
double Mon=4000000,rate=0.08,rest=Mon;//rest代表n年后的余额
int n=0;//n代表年
while(rest>0)
{
//n年后的余额如下
rest=Mon*(1+rate)-500000;
//赋值给Mon,不然每次循环Mon都是四百万,会死循环,你就是这个地方错了哦
Mon=rest;
n++;
}
printf("%d年后,小甲鱼一贫如洗!\n",n);
return 0;
}
运行结果如下:
14年后,小甲鱼一贫如洗!
OK 希望有用吧! 肖-肖 发表于 2021-4-11 20:42
分析如下:
你的错误出现在了循环体内-》重置取出五十万后卡内余额的代码就是这句-》Mon=rest*(1+rate);
...
请教一下,这个程序代码是怎么贴到帖子上的啊?旁边还有行数的,谢谢 学C的大叔 发表于 2021-4-11 21:49
请教一下,这个程序代码是怎么贴到帖子上的啊?旁边还有行数的,谢谢
点击回复后,再输入框的上面笑脸的左边的-》【<>】->点击->然后粘贴你的代码就行了! 肖-肖 发表于 2021-4-11 23:56
点击回复后,再输入框的上面笑脸的左边的-》【】->点击->然后粘贴你的代码就行了!
谢谢
页:
[1]