C语言实例 怎样存钱利最大

发表于:2010-1-26 10:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
DotNet

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

  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<stdio.h>
  #include<math.h>
  int 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);
  /*计算到期时的本利合计*/
  if(term>max)
  {
  max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;
  }
  }
  printf("For maxinum profit,he should so save his money in a bank:\n");
  printf(" made fixed deposit for 8 year: %d times\n",n8);
  printf(" made fixed deposit for 5 year: %d times\n",n5);
  printf(" made fixed deposit for 3 year: %d times\n",n3);
  printf(" made fixed deposit for 2 year: %d times\n",n2);
  printf(" made fixed deposit for 1 year: %d times\n",n1);
  printf(" Toal: %.2f\n",max);
  /*输出存款方式*/
  }

  *运行结果

  For maxinum profit,he should so save his money in a bank:
  made fixed deposit for 8 year: 0times
  made fixed deposit for 5 year: 4times
  made fixed deposit for 3 year: 0times
  made fixed deposit for 2 year: 0times
  made fixed deposit for 1 year: 0times
  Total:8841.01

  可见最佳的存款方案为连续四次存5年期。

  *思考题

  某单位对职工出售住房,每套为2万元。买房付款的方法是:

  一次交清,优惠20%

  从第一年开始,每年年初分期付款:

  5年交清,优惠50%;

  10年交清,优惠10%;

  20年交清,没有优惠。

  现在有人手中正好有2万元,若假定在今后20年中物价和银行利率均保持不变,问他应当选择哪种付款方式可以使应付的钱最少?

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号