Board logo

标题: 批处理脚本实现C语言趣味编程百例013:该存多少钱 [打印本页]

作者: jinzeyu    时间: 2012-4-22 11:35     标题: 批处理脚本实现C语言趣味编程百例013:该存多少钱

加分:1个技术分
要求用BAT脚本实现:

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

*问题分析与算法设计
分析存钱和取钱的过程,可以采用倒推的方法。若第五年年底连本带息要取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)
通过以上过程就可以很容易地求出第一年年初要存入多少钱。

*程序说明与注释
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i;
  5. float total=0;
  6. for(i=0;i<5;i++) /*i 为年数,取值为0~4年*/
  7. total=(total+1000)/(1+0.0063*12); /*累计算出年初存款数额,第五次的计算
  8. 结果即为题解*/
  9. printf("He must save %.2f at first.\n",total);
  10. }
复制代码
*运行结果
He must save 4039.44 at first

作者: jinzeyu    时间: 2012-4-22 11:36

此题用到了小数乘法
作者: canyuexiaolang    时间: 2012-4-22 12:44

嗯?批处理不能计算小数吧?
作者: gawk    时间: 2012-4-22 14:23

回复 3# canyuexiaolang


据说很久之前就有人写了浮点数加减乘除
作者: terse    时间: 2012-4-22 20:16

  1. @echo off&setlocal enabledelayedexpansion
  2. set /a "Md=12*63+10000,$=1000"
  3. set "Hx=FEDCBA9876543210"
  4. for /l %%i in (1 1 5) do (
  5.     set /a i+=$*10000
  6.     set Len=!i!!Hx!
  7.     set /a "N=0x!Len:~16,1!,Len=!i:~,8!%%Md,S=!i:~,8!/Md"
  8.     for /l %%j in (8 1 !N!) do (
  9.         set/a "Tem=!Len!!i:~%%j,1!/Md,Len=!Len!!i:~%%j,1!%%Md"
  10.         set "S=!S!!Tem!"
  11.     )
  12.         set "Emp="
  13.         for /l %%j in (0 1 3) do (
  14.             set /a Len*=10,Tem=Len/md,Len%%=md
  15.             set "Emp=!Emp!!Tem!"
  16.         )
  17.         set i=!S!!Emp!
  18. )
  19.         echo !S!.!Emp!
  20. pause
复制代码

作者: bigbadwolf    时间: 2012-4-23 14:38

能用批处理轻松完成的就用批,不行的话就换其他的语言,不要太勉强了。两年前我经常来这个论坛,后来发现批太薄弱了,就学了VC,转眼两年的时间过去了!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2