C趣味程序百例(05)怎样存钱利最大

文章作者 100test 发表时间 2007:03:10 17:28:36
来源 100Test.Com百考试题网


14.怎样存钱利最大
假设银行整存整取存款不同期限的月息利率分别为:
0.63% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
利息=本金*月息利率*12*存款年限。
现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。
*问题分析与算法
为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。
分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:
2000*(1 rate1)i1*(1 rate2)i2*(1 rate3)i3*(1 rate5)i5*(1 rate8)i8
其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:
0<=i8<=2
0<=i5<=(20-8*i8)/5
0<=i3<=(20-8*i8-5*i5)/3
0<=i2<=(20-8*i8-5*i5-3*i3)/2
0<=i1=20-8*i8-5*i5-3*i3-2*i2
可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。
*程序与程序注释
#include
#include
void main()
{
int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1.
float max=0,term.
for(i8=0.i8<3.i8 ) /*穷举所有可能的存款方式*/
for(i5=0.i5<=(20-8*i8)/5.i5 )
for(i3=0.i3<=(20-8*i8-5*i5)/3.i3 )
for(i2=0.i2<=(20-8*i8-5*i5-3*i3)/2.i2 )
{
i1=20-8*i8-5*i5-3*i3-2*i2.
term=2000.0*pow((double)(1 0.0063*12),(double)i1)
*pow((double)(1 2*0.0063*12),(double)i2)
*pow((double)(1 3*0.0069*12),(double)i3)
*pow((double)(1 5*0.0075*12),(double)i5)
*pow((double)(1 8*0.0084*12),(double)i8).
/*计算到期时的本利合计*/

相关文章


C趣味程序百例(05)捕鱼和分鱼
C趣味程序百例(05)出售金鱼
C趣味程序百例(04)抓交通肇事犯
C趣味程序百例(05)怎样存钱利最大
C趣味程序百例(04)该存多少钱
C趣味程序百例(04)打鱼还是晒网
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛