#include<iostream>
int main()
{
using namespace std;
const int money=100;
double interest1,interest2;
interest1=money*0.1;
interest2=money*0.05;
int i;
for(i=1;interest1>interest2;i++)
{
interest2=(money+interest2)*0.05;
}
cout<<"第"<<i<<"年后c的投资价值将超过d"<<"d的投资价值为"<<interest1+money<<endl<<"c的投资价值为"<<interest2+money<<endl;
return 0;
}
弹出个窗口然后什么都不显示
最简单的回答:“interest2=(money+interest2)*0.05”这个代码有问题,怎么有问题法,自个去想,反正,这个代码会让interest2增加得越来越少,最后几近不增加。
****详述如下,有耐心可以看看,应该对你有帮助****
1、个人理解,你给出的代码中,计算的思维方式是有问题的。你在这个编程设计中,应该是想计算着复利。
2、复利的计算工式应该是 “interest2=interest2*(1+0.05)” 其中的0.05是利率,而不是“interest2=(money+interest2)*0.05”。
3、“interest2=(money+interest2)*0.05”这个式子的直接后果是让interest2增加了一个非常小的数。最后变化到“5.26315789473684”这个值,在double数据类型下,这个值加上100,得到105.2631578947368,再乘0.05得到5.263157894736842,如果一直这样下去,它会因为受精度的限制,一直就是这么大。
4、所以,你的程序就会进入一个死循环。
5、授人以鱼不如授人以渔,以后碰到问题要学会如何使用调试。下面就是我针对你的程序给出的调试代码,供你参考,这个调试代码会将关键的数据变化的输出展示出来,在代码无问题后你再将不需要的输出注释掉:
#include<iostream>6、至于正确的代码,个人以为,你将
interest2 = (money + interest2)*0.05;
改成
interest2=interest2*(1+0.05);
即可。
因为不知道你具体的设想,所以,只是个人以为,请根据你的目标要求修正。