[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
83题,有空多写些。

算法效率比较低。
  1. ::输出0-7组成的大于500的奇数个数
  2. ::code by nomyself
  3. ::05/12/2008
  4. @echo off
  5. rem 初值为1
  6. set sum=0
  7. set n=1
  8. goto set
  9. :set
  10. rem 将值赋予临时变量k并转入判断是输出还是续循环
  11. set k=%n%
  12. goto flag
  13. :flag
  14. rem k大于0就继续循环,否则就转入输出
  15. if %k% GTR 0 (call goto while) else goto printf
  16. :while
  17. rem  将j的值与7比较,小于7就设flag为1并重置循环数k;大于7就增加n的值
  18. set /a j=%k%%%10
  19. if %j% LEQ 7 (call goto setwhile) else goto add
  20. :setwhile
  21. set flag=1 & set /a k/=10
  22. goto flag
  23. :printf
  24. if %flag%==1 set /a sum+=1
  25. :add
  26. ::n自增2并且n大于500就输出总数
  27. set /a n+=2
  28. if %n% GTR 500 goto end
  29. goto set
  30. :end
  31. echo 满足条件的值的总数为:%sum%
  32. pause
复制代码

TOP

真是高手啊。&&&&&&&&&&&&&&&&&&&
@@@@@@@@@@@@@@@@@@@@@
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

TOP

太多了,我一题一题做啊
我的方法可能太土了,但是没办法啊..
  1. @echo off
  2. for /l %%a in (1 1 4) do (
  3. for /l %%b in (1 1 4) do (
  4. for /l %%c in (1 1 4) do (
  5. if %%a neq %%b (
  6. if %%b neq %%c (
  7. if %%a neq %%c echo %%a%%b%%c 2>nul
  8. )
  9. )
  10. )
  11. )
  12. )
  13. pause>nul
复制代码
砂石下的泉水,掘得越深,泉水会越清吗?

TOP

程序81

  1. @echo off
  2. set /a a=99/8
  3. echo a是%a%
  4. set /a b=809*%a%
  5. echo b是%b%
  6. pause>nul
复制代码

[ 本帖最后由 yslyxqysl 于 2008-10-4 10:08 编辑 ]

TOP

【程序84】
题目:一个偶数总能表示为两个素数之和。
  1. @echo off
  2. if exist ss.txt goto :bb
  3. ::显示100以内素数
  4. set m=2
  5. >ss.txt echo 2
  6. set/a m+=1
  7. >>ss.txt echo 3
  8. :zz
  9. set flag=
  10. set/a m+=2
  11. set/a n=m-1
  12. for /l %%i in (2 1 %n%) do (
  13.  call :sf %%i
  14. )
  15. if not defined flag >>ss.txt echo %m%
  16. if %m% lss 99 goto :zz
  17. :bb
  18. ::显示100以内偶数
  19. for /l %%o in (4 2 100) do call :pd %%o
  20. pause
  21. goto :eof
  22. ::显示偶数成两个素数的和
  23. :pd
  24.  set sflag=
  25.  for /f %%m in (ss.txt) do (
  26.   for /f %%n in (ss.txt) do (
  27.  call :bj %%m %%n he %1
  28.  if defined sflag goto :show
  29.   )
  30.  )
  31. :show
  32.  echo %1=%xx%+%yy%
  33.  goto :eof
  34. :sf
  35.  set/a x=m%%%1
  36.  if %x%==0 set flag=1
  37.  goto :eof
  38. :bj
  39.  set/a xx=%1
  40.  set/a yy=%2
  41.  set/a %3=%1+%2
  42.  if %he% equ %4 set sflag=1
复制代码

TOP

题目好多哦

TOP

先来看看答案

我才刚学
就被批处理的优点就给吸引了
这些题目我会一点点研究,直至弄懂.

TOP

哇卡卡咔 ,终于做出一个了
9*9口诀表
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 9) do (set b=
  3.    for /l %%j in (1 1 %%i) do (
  4.    set /a a=%%i*%%j
  5.    set b=!b! %%i*%%j=!a!
  6.    )
  7. echo !b!
  8. )
  9. pause
复制代码

TOP

真的都是强人,佩服!我自己也弄点来看!

TOP

上面的太繁琐,改进后代码如下
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 请输入日期,如2008年8月9日:2008-8-9
  3. set /p p=
  4. for /f "tokens=1,2,3 delims=-" %%i in ("%p%") do set y=%%i &set m=%%j &set d=%%k
  5. set "g= 00+31+28+31+30+31+30+31+31+30+31+30"
  6. set /a s=%m%*3
  7. call set /a j=%%g:~1,%s%%%%d%
  8. set i=%y:~-2%
  9. if "%i%" == "00" (
  10.    set /a k=%y%%%400
  11.    if !k! == 0 (goto run) else goto ping
  12. ) else (
  13. set /a l=%y%%%4
  14.        if !l! == 0 (goto run)else goto ping
  15. )
  16. :run
  17. if %m% leq 2 (set /a j=%j%) else set /a j=!j!+1
  18. :ping
  19. echo 你输入的日期是这一年中的第%j%天
  20. pause&exit
复制代码

TOP

回复【程序4】

费了好大的功夫,终于做出来了.做什么事还得靠自己
  1. @ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
  2. :KT
  3. SET /P F= 请输入日期,如2008年2月3日 2008-2-3  :
  4. FOR /F "TOKENS=1,2,3 DELIMS=-" %%A IN ("%F%") DO SET K=%%A &SET M=%%B &SET D=%%C
  5. SET G=%K:~-2%
  6. IF "%G%"=="00" (
  7.    SET/A E=%K%/400*400
  8.    IF !E! == %K% GOTO RUN
  9.    IF !E! NEQ %K% GOTO PING
  10. )     
  11. IF "%G%" NEQ "00" (
  12.          SET/A R=%K%/4*4
  13.          IF !R! == %K% GOTO RUN
  14.          IF !R! NEQ %K% GOTO PING
  15. )
  16. :RUN
  17. SET R=4
  18. GOTO H
  19. :PING
  20. SET R=1
  21. GOTO H
  22. :H
  23. GOTO %M%
  24. :1
  25. SET I=0
  26. GOTO Z
  27. :2
  28. SET I=31
  29. GOTO Z
  30. :3
  31. SET I=59
  32. GOTO Z
  33. :4
  34. SET I=90
  35. GOTO Z
  36. :5
  37. SET I=120
  38. GOTO Z
  39. :6
  40. SET I=151
  41. GOTO Z
  42. :7
  43. SET I=181
  44. GOTO Z
  45. :8
  46. SET I=212
  47. GOTO Z
  48. :9
  49. SET I=243
  50. GOTO Z
  51. :10
  52. SET I=273
  53. GOTO Z
  54. :11
  55. SET I=304
  56. GOTO Z
  57. :12
  58. SET I=334
  59. GOTO Z
  60. :Z
  61. IF "%R%" == "1" (
  62. SET/A J=%D%+%I% )
  63. IF "%R%" == "4" (
  64. If "%m%" leq "2" SET /A J=%D%+%I%
  65. IF "%M%" GTR "2" SET /A J=%D%+%I%+1
  66. )
  67. ECHO 你输入的日期是这一年中的第!J!天
  68. GOTO KT
复制代码

TOP

貌似6楼就出错了。。。。。
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

回复 1楼 的帖子

"【程序81】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。"
题目中的 “  800*??+9*??+1    ” 后面的 “ +1 ”应该去掉吧?
去掉后这样做:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (10 1 99) do (
  3.    for /l %%b in (10 1 99) do (
  4.       set /a x=9*%%b
  5.       set /a y=8*%%a
  6.       if !y! geq 10 if !y! leq 99 (
  7.          if !x! geq 100 if !x! leq 999 (
  8.             if %%a==%%b (
  9.                set /a k=809*%%a
  10.                set /a l=800*%%a+9*%%a
  11.                if "!k!"=="!l!" (
  12.                   echo "??" 代表的两位数是%%a
  13.                   echo "809*??" 后的结果是!k!
  14.                )
  15.             )
  16.           )
  17.        )
  18.    )
  19. )
  20. pause>nul
复制代码

[ 本帖最后由 mkl 于 2008-8-8 14:30 编辑 ]

TOP

【程序1】 题 2

@echo off
set u=1 2 3 4
for %%j in (%u%) do for %%h in (%u%) do for %%g in (%u%) do if %%j neq %%h if %%h neq %%g if %%g neq %%j echo %%j%%h%%g
pause

[ 本帖最后由 mkl 于 2008-8-3 22:49 编辑 ]

TOP

我也正困惑这个!str:%%a =!
!~~~!是替换的意思吗
我在别的地方也看到"!"有其他用法
哎!头都大了!能不能系统讲一下  !    的用法啊

TOP

返回列表