[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

批处理脚本实现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

此题用到了小数乘法

TOP

嗯?批处理不能计算小数吧?

TOP

回复 3# canyuexiaolang


据说很久之前就有人写了浮点数加减乘除

TOP

  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
复制代码

TOP

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

TOP

返回列表