[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
第二题:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (red green yellow blue) do set /a n+=1&set "color!n!=%%a"
  3. for /f "skip=2 delims=" %%a in (pic.txt) do (
  4.     set "num="&set /a n=0
  5.     for %%b in (%%a) do (
  6.         if defined num (
  7.            set /a n+=1&set "!num!-!n!=%%b"
  8.            ) else (
  9.            set "num=%%b"
  10.         )
  11.     )        
  12. )
  13. :begin
  14. for /l %%a in (1,1,8) do (
  15.     set /a a=!random!%%4+1
  16.     for %%b in (!a!) do set "#%%a=!color%%b!"
  17. )
  18. for /l %%a in (1,1,8) do (
  19.     set /a a=%%a-1
  20.     if !a! neq 0 for /l %%b in (1,1,!a!) do if !%%a-%%b! equ 1 if !#%%a! equ !#%%b! goto begin
  21. )
  22. for /l %%a in (1,1,8) do echo %%a:!#%%a!
  23. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-10-30 22:48 编辑 ]
1

评分人数

***共同提高***

TOP

对第二题暂时没有好的思路,至于不定块的问题,可以在我3楼的代码中在:begin前加入set /a n+=1,然后把后面的8全改成%n%,但这种判断返回法应该是不支持n为大数值的情况的...
***共同提高***

TOP

第三题的解

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p str=请按顺序输入导弹的高度,中间用空格格开:
  3. :begin
  4. set /a n=0,m=0
  5. for /f "tokens=1*" %%a in ("%str%") do (
  6.     for %%c in (%%b) do (
  7.         if %%a gtr %%c (
  8.            set /a n+=1
  9.            ) else (
  10.            set /a m+=1
  11.         )
  12.     )
  13.     if !n! geq !m! (
  14.        if not defined max set /a max=%%a,num+=1
  15.        if !max! gtr %%a set /a max=%%a,num+=1
  16.     )
  17.     set "str=%%b"&goto begin
  18. )
  19. echo 最多能拦截%num%枚导弹
  20. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-10-31 00:31 编辑 ]
1

评分人数

***共同提高***

TOP

返回列表