c++打卡第十六天
一、问题描述。
二、设计思路。
①、我们可以写出最终获得利息加本金的公式,即两千乘以利息加上其所存的年限,其中年限可以通过20除以不同的年限求得最大值。
②、获取各个年范围后,使用for循环穷举出每种情况所得的最终金额,同时打印出当所获得金额最大时,每个不同的存钱方案是用了几次。
③、获取最大值是通过与前边所得值不断比较,并且不断赋值,到最后打印出所获得最大值的情况。
三、流程图。
四、代码实现。
#include<iostream> #include<cmath> using namespace std; int main() { double result=0; double max=0; int a,b,c,d,e; int x1,x2,x3,x5,x8;//存储利息最大值时各种存钱方案的次数 //8年存钱方案最大期限次数为2 //5年存钱方案最大期限次数为4 //3年存钱方案最大期限次数为6 //2年存钱方案最大期限次数为10 //1年存钱方案最大期限次数为20,其中为了减少一些复杂度,我们for循环中使用20-x2-x3-x5-x8求x1;、 for(a=0; a<3; a++) { for(b=0; b<=(20-a*8)/5; b++) { for(c=0; c<=(20-8*a-5*b)/3; c++) { for(d=0; d<=(20-8*a-5*b-c*3)/2; d++) { e=20-a*8-b*5-c*3-d*2; result=2000*pow(1+0.0063*12,e)*pow(1+0.0066*2*12,d)*pow(1+0.0069*3*12,c)*pow(1+0.0075*12*5,b)*pow(1+0.0084*12*8,a); if(result>max) { max=result; x1=e; x2=d; x3=c; x5=b; x8=a; } } } } } cout<<"存款一年的方案为:"<<x1<<"次,"<<"存款二年的方案为:"<<x2<<"次,"<<"存款三年的方案为:"<<x3<<"次,"<<"存款五年的方案为:"<<x5<<"次,"<<"存款八年的方案为:"<<x8<<"次。"<<endl; cout<<"总利息为:"<<max<<endl; return 0; }
五、结果实现