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

TOP

不错,youxi 看来是深受联盟的影响,极其讨厌if,
个人认为if应该是内部命令,不会对效率有太大影响吧?
来几个我的代码:
判断10位数字是否重复的方法。
方法一、
0-9 的总和是45,利用这个来判断
:
  1. @echo off
  2. set var=4230195678
  3. echo %var%&echo.
  4. for /l %%i in (0 1 9) do call set var=%%var:%%i=%%i =%%
  5. for %%a in (%var%) do set /a num+=%%a
  6. if %num% equ 45 (echo 没有重复的数字) else echo 有重复的数字
  7. pause>nul
复制代码

方法二、
将每位数都定义为变量,通过defined来判断是否重复。
:
  1. @echo off
  2. set var=2230195678
  3. echo %var%&echo.
  4. :lis
  5. if not defined _%var:~0,1% (set _%var:~0,1%=a) else set jie=a
  6. set var=%var:~1%
  7. if defined var goto lis
  8. if not defined jie (echo 没有重复的数字) else echo 有重复的数字
  9. pause
复制代码


获取10位不重复的随机数
方法一、
虽然用了if判断,但是整个流程for只需循环10次,且用的是递归调用,效率应该也算快的
  1. @echo off
  2. :start
  3. set "var=0 1 2 3 4 5 6 7 8 9 "
  4. set su=10
  5. setlocal enabledelayedexpansion
  6. call :lis "!var!"
  7. echo.&echo 10位随机数为:!str!
  8. echo.&echo 按任意键获得下个随机数
  9. pause>nul
  10. endlocal
  11. goto :start
  12. :lis
  13. set /a w=!random!%%!su!+1
  14. for %%i in (%~1) do (
  15.   set /a num+=1
  16.   if !num! equ !w! (
  17.   set str=!str!%%i
  18.   set var=!var:%%i =!
  19.   set /a su-=1,num=0
  20.   if defined var call :lis "!var!"
  21.   goto :eof
  22. ))
  23. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-1-13 14:52 编辑 ]
1

评分人数

技术问题请到论坛发帖求助!

TOP

哈哈,
我考虑的太不周到了,错误多多啊,呵呵。。。。
技术问题请到论坛发帖求助!

TOP

修正首位为0时的错误。
:
  1. @echo off
  2. :start
  3. set "var=0 1 2 3 4 5 6 7 8 9 "
  4. set /a su=9
  5. setlocal enabledelayedexpansion
  6. set /a str=!random!%%9+1
  7. set var=!var:%str% =!
  8. call :lis "!var!"
  9. echo.&echo 10位随机数为:!str!
  10. echo.&echo 按任意键获得下个随机数
  11. pause>nul
  12. endlocal
  13. goto :start
  14. :lis
  15. set /a w=!random!%%!su!+1
  16. for %%i in (%~1) do (
  17.   set /a num+=1
  18.   if !num! equ !w! (
  19.   set str=!str!%%i
  20.   set var=!var:%%i =!
  21.   set /a su-=1,num=0
  22.   if defined var call :lis "!var!"
  23.   goto :eof
  24. ))
  25. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-1-13 16:07 编辑 ]
1

评分人数

技术问题请到论坛发帖求助!

TOP

返回列表