存钱问题

存钱问题:

假设银行整存整取存款不同期限的月息利率为:

0.63%  期限为1年

0.66%  期限为2年

0.69%  期限为3年

0.75%  期限为5年

0.84  期限为8年

现在已知某人手上有2000元,要求通过计算选择除一种存钱方案,使得这笔钱存入银行20年后获得的利息最多,假定银行对超出存款期限的那部分时间不付利息。

解题思路:

利用for循环嵌套来实现不同的存钱方案,max定义为0,判断条件如果max<该方案的利息,则max=tax,并且用一组数据储存各期限的数量,然后输出方案。

代码:

#include<iostream>

#include<cmath>

#include<iomanip>

using namespace std;

int main()

{

    int x1,x2,x3,x5,x8,y1,y2,y3,y5,y8;

    double max=0,tax;

    for(x8=0;x8<=2;x8++)

    {

        for(x5=0;x5<=(20-8*x8)/3;x5++)

        {

            for(x3=0;x3<=(20-8*x8-5*x5)/2;x3++)

            {

                for(x2=0;x2<=(20-8*x8-5*x5-3*x3)/2;x2++)

                {

                    x1=20-8*x8-5*x5-3*x3-2*x2;

                    tax=2000*pow((1+0.0063*12),x1)*pow((1+2*0.0066*12),x2)*pow((1+3*0.0069*12),x3)*pow((1+5*0.0075*12),x5)*pow((1+8*0.0084*12),x8);

                    if(max<tax)

                    {

                        max=tax;

                        y1=x1;

                        y2=x2;

                        y3=x3;

                        y5=x5;

                        y8=x8;

                    }

                }

            }

        }

    }

    cout<<"获得利息最多的存款方式为:"<<endl;

    cout<<"8年期限的存了"<<y8<<"次"<<endl;

    cout<<"5年期限的存了"<<y5<<"次"<<endl;

    cout<<"3年期限的存了"<<y3<<"次"<<endl;

    cout<<"2年期限的存了"<<y2<<"次"<<endl;

    cout<<"1年期限的存了"<<y1<<"次"<<endl;

    cout<<"存款人最终的获得的本利合计"<<max<<endl;

    return 0;

}

该题体会:分析题干找出解题思路,了解了pow( , )函数的用法

posted @ 2023-04-17 11:57  不如喝点  阅读(55)  评论(0)    收藏  举报