标题: 批处理脚本实现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)
通过以上过程就可以很容易地求出第一年年初要存入多少钱。
*程序说明与注释- #include<stdio.h>
- int main()
- {
- int i;
- float total=0;
- for(i=0;i<5;i++) /*i 为年数,取值为0~4年*/
- total=(total+1000)/(1+0.0063*12); /*累计算出年初存款数额,第五次的计算
- 结果即为题解*/
- printf("He must save %.2f at first.\n",total);
- }
复制代码
*运行结果
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
- @echo off&setlocal enabledelayedexpansion
- set /a "Md=12*63+10000,$=1000"
- set "Hx=FEDCBA9876543210"
- for /l %%i in (1 1 5) do (
- set /a i+=$*10000
- set Len=!i!!Hx!
- set /a "N=0x!Len:~16,1!,Len=!i:~,8!%%Md,S=!i:~,8!/Md"
- for /l %%j in (8 1 !N!) do (
- set/a "Tem=!Len!!i:~%%j,1!/Md,Len=!Len!!i:~%%j,1!%%Md"
- set "S=!S!!Tem!"
- )
- set "Emp="
- for /l %%j in (0 1 3) do (
- set /a Len*=10,Tem=Len/md,Len%%=md
- set "Emp=!Emp!!Tem!"
- )
- set i=!S!!Emp!
- )
- echo !S!.!Emp!
- pause
复制代码
作者: bigbadwolf 时间: 2012-4-23 14:38
能用批处理轻松完成的就用批,不行的话就换其他的语言,不要太勉强了。两年前我经常来这个论坛,后来发现批太薄弱了,就学了VC,转眼两年的时间过去了!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |