[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. for /l %%a in (11,1,999) do (set str=%%a&call :a)
  3. pause
  4. :a
  5. set n3=%str:~0,1%
  6. set n2=%str:~1,1%
  7. set n1=%str:~2,1%
  8. if "%n1%" equ "" (set rts=%n2%%n3%) else (set rts=%n1%%n2%%n3%)
  9. if %rts% equ %str% (echo %str%)
  10. goto :eof
复制代码
上学时想的..

TOP

小第不才 只能顶上去.

TOP

  1. @echo off
  2. for /l %%i in (1 1 9) do (
  3. echo %%i%%i
  4. for /l %%j in (0 1 9) do (
  5. echo %%i%%j%%i
  6. )
  7. )
  8. pause>nul
复制代码
参照youxi01的方法,自己写的.
砂石下的泉水,掘得越深,泉水会越清吗?

TOP

回复 16楼 的帖子

你的效率明显的低于我的效率..
砂石下的泉水,掘得越深,泉水会越清吗?

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (0 1 1000) do (
  3.     set a=%%i
  4.     if "!a:~0,1!"=="!a:~-1,1!" echo !a!
  5. )
  6. pause
复制代码

[ 本帖最后由 keen 于 2009-4-2 22:39 编辑 ]
(*^_^*)

TOP

来个10000以内的回文数:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (0 1 1000) do (
  3.     set a=%%i
  4.     if "!a:~0,1!"=="!a:~-1,1!" echo !a!
  5. )
  6. for /l %%i in (1001 1 10000) do (
  7.     set a=%%i
  8.     if "!a:~0,1!"=="!a:~-1,1!" if "!a:~1,1!"=="!a:~-2,1!" echo !a!
  9. )
  10. pause
复制代码
其实是在1000以内的多加几行。
(*^_^*)

TOP

简洁10000以内的回文数:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (0 1 10000) do (
  3.     set a=%%i
  4.     if "!a:~0,1!"=="!a:~-1,1!" if !a! lss 1000 (echo !a!) else (if "!a:~1,1!"=="!a:~-2,1!" echo !a!)
  5. )
  6. pause
复制代码
(*^_^*)

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in ( 10,1,999 ) do (
  3. set str=%%i
  4. set a=!str:~0,1!
  5. set b=!str:~-1,1!
  6. if "!a!"=="!b!" echo %%i)
  7. pause
复制代码



10000以内的
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (10,1,10000) do (
  3. set str=%%i
  4. set a=!str:~0,1!
  5. set b=!str:~-1,1!
  6. set c=!str:~1,1!
  7. set d=!str:~-2,1!
  8. if "!a!"=="!b!" ( if "!c!"=="!d!" echo !str!))
  9. pause
复制代码

[ 本帖最后由 cainiao736 于 2009-4-4 16:45 编辑 ]

TOP

我也试试

这个问题如果是每一个数去判断的话,那效率是低点,但是这样求出的数是有顺序的!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (1 2 3 4 5 6 7 8 9) do (
  4. rem 以下两句是求两位的回文数
  5. echo %%a%%a
  6. set/a num+=1
  7. for %%b in (0 1 2 3 4 5 6 7 8 9) do (
  8. rem 以下两句是求三位的回文数
  9.   echo %%a%%b%%a
  10.   set/a num+=1
  11. rem 以下两句是求四位的回文数
  12.   echo %%a%%b%%b%%a
  13.   set/a num+=1
  14. )
  15. )
  16. echo 10000以内回文数共有!num!
  17. pause
复制代码

TOP

100到10000000以内的回文数

100以内的就不去“数”了。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (100,1,10000000) do (
  3. set a=%%a
  4. if "!a:~0,1!" == "!a:~-1,1!" (
  5. if "!a:~1,1!" == "!a:~-2,1!" (
  6. if "!a:~2,1!" == "!a:~-3,1!" (
  7. echo !a!
  8. ))))
  9. pause
复制代码

TOP

回复 1# wxcute
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (10 1 999) do (
  4. set "a=%%i"
  5. if "!a:~,1!" equ "!a:~-1!" (echo !a!)
  6. )
  7. pause
复制代码
1

评分人数

    • cjiabing: 思路可以,功底扎实。PB + 12

TOP

  1. @if not defined debug @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 1000) do (
  3.     set /a a=%%i/100
  4.     set /a b=%%i/10-!a!*10
  5.     set /a c=%%i-!a!*100-!b!*10
  6.     if !c! equ !a! (if not !a! equ 0 echo %%i)
  7. )
  8. pause >nul
复制代码
[color=BLUE]一切只为了批处理&DOS[/color]

TOP

本帖最后由 mxxcgzxxx 于 2011-8-18 08:09 编辑

给个新思路,100000以内回文数
怎么就没人想出这个方案呢??很容易啊
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in  (1 1 99) do (
  4.          set /a a=%%i/10+%%i%%10*10+100
  5.          if !a:~-1!==0 (set a=!a:~-2,1!) else (set a=!a:~-2!)
  6.          echo %%i!a!
  7.          for /l %%j in (0 1 9) do echo %%i%%j!a!
  8.          pause>nul
  9.          )
  10. set /a b=99*11
  11. echo 100000以内有%b%个回文数
  12. pause>nul
复制代码
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (0,1,1200) do (
  4.      set a=%%i
  5.      if "!a:~0,1!"=="!a:~-1!"  (
  6.        if "!a:~1,1!"=="" (
  7.          echo !a!>>1.txt
  8.        ) else (
  9.                 if "!a:~1,1!"=="!a:~-2,1!" (
  10.                   if "!a:~3,1!"=="" (
  11.                     echo !a!>>1.txt
  12.                   ) else echo 你的数太大啦!&goto  out
  13.                 )
  14.          )
  15.      )
  16. )
  17. :out
  18. pause
复制代码
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

回复 29# 悬崖之树
这个代码有问题,并不是只要测试到六位数就提示“你输入的数太大了”,而是要到类似 “124521” 之类的六位数才会提示。下面是改进后的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if exist 1.txt del 1.txt
  4. :ks
  5. set /p num=请输入一个最多5位的正整数:
  6. if %num% gtr 999999 echo 你的数太大了,请重新输入!& goto ks
  7. for /l %%i in (0,1,%num%) do (
  8.      set a=%%i
  9.      if "!a:~0,1!"=="!a:~-1!"  (
  10.        if "!a:~3,1!"=="" (
  11.          echo !a!>>1.txt
  12.        ) else (
  13.                 if "!a:~1,1!"=="!a:~-2,1!" (
  14.                   if "!a:~5,1!"=="" (
  15.                     echo !a!>>1.txt
  16.                   )
  17.                 )
  18.          )
  19.      )
  20. )
  21. echo 结果已经保存在当前目录下的1.txt文件中
  22. pause
复制代码
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

返回列表