[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
【程序80】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
  1. @echo off & setlocal EnableDelayedExpansion
  2. set count=0
  3. set bad=0
  4. for /l %%i in (4,4,2000) do (
  5. if !count! equ 4 (if !bad! equ 0 (echo 原来最少有!j!个桃子 & pause>nul & exit))
  6. set bad=0
  7. set count=0
  8. set l=%%i
  9. for /l %%z in (0,1,4) do (
  10. set /a j=!l!/4*5+1
  11. set l=!j!
  12. set /a k=!j!%%4
  13. if !k! equ 0 (set /a count+=1) else (if !count! lss 4 (set bad=1))
  14. )
  15. )
复制代码

TOP

【程序69】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
方法一
  1. @echo off & setlocal enabledelayedexpansion
  2. set /p n=请输入一个数:
  3. for /l %%i in (%n% -1 1) do set total= %%i !total!
  4. set count=%n%
  5. :loop
  6. if !count! neq 1 (
  7.   for %%i in (%total%) do (
  8.     set /a num+=1
  9.     if !num! equ 3 (
  10.       set num=0
  11.       set total=!total: %%i =!
  12.       set /a count-=1
  13.     )
  14.   )
  15. goto loop
  16. )
  17. echo 最后留下的序号为:%total%
  18. pause>nul
复制代码

方法二
  1. @echo off
  2. set /p n=请输入一个数:
  3. set r=0
  4. for /l %%i in (2,1,%n%) do (set /a a=r+3 && set /a r=a%%%%i)
  5. set /a r+=1
  6. echo %r%
  7. pause>nul
复制代码

TOP

【程序20

题目:一球从100高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在10次落地时,共经过多少米?第10次反弹多高?
  1. @echo off & setlocal enabledelayedexpansion
  2. set n=100000000
  3. set /a m=n/2
  4. for /l %%i in (2,1,10) do (set /a n=n+2*m && set /a m/=2)
  5. echo 共经过!n:~0,3!.!n:~-6!米
  6. echo 第10次反弹0.0!m:~-6!米
  7. pause>nul
复制代码

TOP

【程序9】
题目:要求输出国际象棋棋盘。

  1. @echo off & setlocal enabledelayedexpansion
  2. for /l %%i in (8,-1,1) do (
  3.   for /l %%j in (8,-1,1) do (
  4.   set /a n=%%i%%2+%%j%%2
  5.   if !n! == 1 (set/p=■<nul) else (set/p=  <nul)
  6.   )
  7.   echo/
  8. )
  9. pause>nul
复制代码

TOP

【程序81】

  1. @echo off&setlocal enabledelayedexpansion
  2. set f=
  3. for /l %%i in (1,1,9) do (
  4.         for /l %%j in (0,1,9) do (
  5.                 set s=%%i%%j
  6.                 set /a r1=8*!s!
  7.                 if !r1! lss 100 (
  8.                         set /a r2=9*!s!
  9.                         if !r2! geq 100 (
  10.                                 set /a l=809*!s!
  11.                                 set /a r=!r1!*100+!r2!+1
  12.                                 if !l!==!r! (
  13.                                         echo 809*!s!=800*!s!+1
  14.                                         set f=1         
  15.                                 )
  16.                                 
  17.                                        
  18.                         )        
  19.                 )
  20.                
  21.         )
  22. )
  23. if not defined f echo Not found!
  24. pause
复制代码

TOP

实践练习的好帖子。从中可以学到很多东西

TOP

程序23 打印菱形

  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /l %%a in (1 1 7) do (
  4.     set /a m+=1
  5.     for /l %%i in (1 1 !n!) do (
  6.          set /p=*<nul
  7.    )
  8.    set /a n+=2
  9.    if !m! geq 4 set /a n-=4
  10.    echo.
  11. )
  12. echo.
  13. pause
复制代码

TOP

程序23 打印菱形

  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /l %%a in (1 1 7) do (
  4.     set /a m+=1
  5.     for /l %%i in (1 1 !n!) do (
  6.          set /p=*<nul
  7.    )
  8.    if !m! geq 4 (set /a n-=2) else  set /a n+=2
  9.    echo.
  10. )
  11. pause
复制代码

TOP

23 打印真正的菱形

  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /l %%i in (1 1 7) do (
  4.     call :b 6 4 2 0 2 4 6
  5.     set /a m+=1
  6.     for /l %%j in (1 1 !n!) do set /p v=*<nul
  7.     if !m! lss 4 (set /a n+=4) else set /a n-=4
  8.     echo.
  9. )
  10. pause>nul
  11. :b
  12. set /a x+=1
  13. call set w=%%%x%
  14. for /l %%a in (1 1 !w!) do set /p=  <nul
  15. set /p=<nul
复制代码

TOP

在新年中学习加油继续

TOP

原帖由 youxi01 于 2008-4-10 23:23 发表
论坛里前几天就出现了相关代码,测试代码:@echo off &setlocal enabledelayedexpansion
set "str=1 2 3 4 "
for %%a in (%str%) do (
        set var1=!str:%%a =!
        for %%b in (!var1!) do (
        ...

好啰嗦啊。
我的【程序1】:
  1. @echo off
  2. set /a n=0
  3. for /L %%a in (1,1,4) do (for /L %%b in (1,1,4) do (for /L %%c in (1,1,4) do (
  4.     if %%a neq %%b (if %%b neq %%c (if %%c neq %%a (
  5.         echo %%a%%b%%c
  6.         set /a n+=1
  7.     )))
  8. )))
复制代码

[ 本帖最后由 mac007cn 于 2011-1-26 15:44 编辑 ]

TOP

挺好的,试试看,谢谢楼主啊

TOP

本帖最后由 linqing8 于 2011-4-27 13:01 编辑

我的杨辉三角,刚费老劲做出来,还未精简:
  1. @echo off
  2. del num.txt
  3. setlocal ENABLEDELAYEDEXPANSION
  4. set /p n=请输入层数,不要超过30.
  5. for /l %%i in (1,1,%n%) do (
  6.   set ln=%%i
  7.   set a1=1
  8.   set a!ln!=1
  9.   set num=1
  10.   if %%i geq 3 (
  11.   set /a r1=2
  12.   set /a r2=!ln!-1
  13. for /l %%j in (!r1!,1,!r2!) do (
  14. set col=%%j
  15. set /a r3=%%j-1  
  16. set /a r4=!ln!-2  
  17. call :aaa
  18. )
  19.    )
  20. if !ln! geq 2 for /l %%m in (2,1,!ln!)   do (set num=!num! !a%%m!)
  21. echo !num! >> num.txt
  22.   )
  23. start num.txt
  24. goto :eof
  25. :aaa
  26. for /f "skip=%r4% tokens=%r3%,%col%" %%k in (num.txt) do set /a a%col%=%%l+%%k
复制代码

TOP

本帖最后由 linqing8 于 2011-4-28 09:26 编辑

正整数质数因子分解,经过优化,对大数字分解速度较快,效率比此贴前两个高。最大计算能力为32位二进制。如分解1999999999=31*64516129本人机子上不到4秒。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :begin
  4. set /p num=请输入一个正整数:
  5. set /a n=0,num0=%num%
  6. :cccc
  7. set loop=10000
  8. if %num%  GTR 10000 set /a loop=%num%/100
  9. if %num%  GTR 1000000 set /a loop=%num%/1000
  10. if %num%  GTR 100000000 set /a loop=%num%/10000
  11. if %num%  GTR 10000000000 set /a loop=%num%/100000
  12. if !num!  gtr 1 (
  13.     for /l %%i in (2,1,%num%) do (
  14.         set /a num2=%%i
  15.         set /a num1=!num!%%!num2!
  16.         if %%i GTR %loop% (set /a n=n+1
  17.              set /a pr!n!=!num!
  18.              call :ca1
  19.              )
  20.        if !num1!==0 (set /a n=n+1
  21.             set /a num=!num!/%%i
  22.             set /a pr!n!=%%i
  23.             if %%i==%num% (call :ca1) else (call :cccc)
  24.             )
  25.        )
  26. ) else (set pr1=1)
  27. goto :eof
  28. :ca1
  29. set prime=!pr1!
  30. if !n! gtr 1 ( for /l %%j in (2,1,!n!) do (rem echo !pr%%j!  & pause
  31.    set prime=!prime!×!pr%%j!
  32.    )
  33. )
  34. echo %num0%分解为质数因子结果为:%num0%=!prime!
  35. echo.&echo.&goto begin
  36. pause>nul
复制代码

TOP

难度很高    还是先从低处开始吧

TOP

返回列表