1.问题描述

  假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中每年的年底取出1000元,到第五年时刚好取完,请算出他存钱时应该存入多少?

*问题分析和算法设计

分析存钱和取钱的过程,可以采用倒推的方法。

若第五年年底连本带利要取1000元,则要先求出第五年初银行存款的钱数:

              1000(第五年年底的本息)= 第五年年初存款*(1+12*0.0063);

              第五年年初存款 = 1000/(1 + 12*0.0063);

以此类推可以求出第四年、第三年......的年初银行存款的钱数:

            第四年年初存款 *(1+12*0.0063)= 第五年年初存款+1000;

            第四年年初存款 = (第五年年初存款+1000)/(1+12*0.0063);

            第三年年初存款 = (第四年年初存款+1000)/(1+12*0.0063);

            第二年年初存款 = (第三年年初存款+1000)/(1+12*0.0063);

            第一年年初存款 = (第二年年初存款+1000)/(1+12*0.0063);

                                     =  ((第三年年初存款+1000)/(1+12*0.0063)+1000)/(1+12*0.0063);

                                     = ((((第四年年初存款+1000)/(1+12*0.0063))+1000)/(1+12*0.0063)+1000)/(1+12*0.0063);

                                    = ((((((第五年年初存款+1000)/(1+12*0.0063))+1000)/(1+12*0.0063))+1000)/(1+12*0.0063)+1000)/(1+12*0.0063);

                                   = (((((((1000/(1 + 12*0.0063))+1000)/(1+12*0.0063))+1000)/(1+12*0.0063))+1000)/(1+12*0.0063)+1000)/(1+12*0.0063);

 

代码如下:

/*******************************************************************
* > File Name: 03-savaMoney.c
* > Author: fly
* > Mail: 1358326274@qq.com
* > Create Time: 2019年03月21日 星期四 12时59分53秒
******************************************************************/

#include <stdio.h>

int main(int argc, char* argv[])
{
int i;
float total = 0.0;

for(i = 0; i<5; i++)
{
total = (1000.0 + total)/(1+0.0063*12);
}
printf("total = %.2f\n", total);

return 0;
}

执行运算结果:total = 4039.44