Board logo

标题: [数值计算] 批处理开平方根1-99以内的数 [打印本页]

作者: 523066680    时间: 2008-9-10 15:53     标题: 批处理开平方根1-99以内的数

如果答案有小数。则保留5位有效数字
思路来自http://www.bathome.net/thread-1760-1-1.html
  1. @echo off &setlocal enabledelayedexpansion
  2. :action
  3. set /p input="(1-9):"
  4. set /a a=0,n=0
  5. :a
  6. set /a a+=1,a1=0
  7.    :a1
  8.    set /a a1+=1,test=(n*10+a1)*(n*10+a1)
  9.    if %test% equ %input% (echo %a1% &pause &goto :end)
  10.    if %test:~0,1% lss %input% (goto :a1)
  11. set /a n=n*10+a1-1
  12. if %a% lss 5 goto :a
  13. echo %n:~0,1%.%n:~1%
  14. pause>nul
  15. :end
  16. goto :action
复制代码
------------------------------------------------1-99的---------若有小数保留四位---------------------------
  1. @echo off
  2. :action
  3. set /p input="(1-99):"
  4. if "%input%"=="" goto :action
  5. set /a a=0,n=0
  6. :a
  7. set /a a+=1,a1=0
  8.     :a1
  9.      set /a a1+=1,test=(n*10+a1)*(n*10+a1)
  10.      if %test% equ %input% (echo %a1% &pause &goto :end)
  11.     if %test% lss %input% (goto :a1)
  12. set /a n=n*10+a1-1,input*=100
  13. if %a% lss 4 goto :a
  14. echo %n:~0,1%.%n:~1%
  15. pause>nul
  16. :end
  17. echo,&set input=
  18. goto :action
复制代码
如有缺点大家可以改的也帮忙改改  主要也是书上来的思路 所以,有缺点大家帮忙改哈
作者: qq641255849    时间: 2008-9-10 17:41

占个沙发...
不错哦,但好像效率有点低...
作者: 523066680    时间: 2008-9-20 16:49     标题: 回复 2楼 的帖子

关于效率……
我也是在书上看的……是自己看到的比较好的方案了吧……
还有 这里虽然是原创代码区,但是希望大家也有讨论区的热情。
有意见要多提哈……


怎么没人发现上面的setlocal enabledelayedexpansion是多余的?
作者: pusofalse    时间: 2008-9-20 17:07     标题: 回复 3楼 的帖子

要说多余的话,应该是enabledelayedexpansion多余了,保留setlocal,在最后用相应的endlocal清空变量。




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