c++程序没有出现输出

#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>
#include<iomanip> //用于控制输出精度调整
int main()
{

        using namespace std;
        const int money = 100;
        double interest1, interest2;
        interest1 = money*0.1;
        interest2 = money*0.05;
        cout << setprecision(32); //控制输出精度到32位
        int i;
        for (i = 1; interest1>interest2; i++)
        {
            interest2 = (money + interest2)*0.05;
            cout << i << "--" << interest1 << "--" << interest2 << "--" << money << "--" << "\n"; //输出执行情况
            system("pause"); //用于暂停以查看,在windows及dos下有效。
        }
        cout << "第" << i << "年后c的投资价值将超过d" << "d的投资价值为" << interest1 + money << endl << "c的投资价值为" << interest2 + money << endl;
        return 0;

}

6、至于正确的代码,个人以为,你将

interest2 = (money + interest2)*0.05;

改成

interest2=interest2*(1+0.05);

即可。

因为不知道你具体的设想,所以,只是个人以为,请根据你的目标要求修正。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-10-02
interest1>interest2恒成立
第2个回答  2016-10-02
卡死在循环 怎么可能有输出显示
相似回答