找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 71371|回复: 33

批处理列出1000以内回文数

[复制链接]
发表于 2008-9-17 21:34:29 | 显示全部楼层 |阅读模式
[新手练功区的新手跟帖不多,可能是因为题目太难了。各位等等新手两天再回答好了。]
我国古代有一种回文诗,倒念顺念都有意思,例如“人过大佛寺”,倒读起来便是“寺佛大过人”。还有经典的对联“客上天然居,居然天上客”。此种例子举不胜举。

从左向右读与从右向左读完全一样的数字就是回文数,如11、121、767等等。
发表于 2008-9-17 21:43:46 | 显示全部楼层
经典!以前做过一个找出10000以内的回文数的题目,都一样。就是不知131 464 15751
这样的是不是回文数。
 楼主| 发表于 2008-9-17 22:05:44 | 显示全部楼层
对阿,就是这样的。

10000太多了,少点给人在感觉上压力不会太大。
发表于 2008-9-18 09:36:26 | 显示全部楼层
"上海自来水来自海上"

正念倒念都一样,算不算回文?
发表于 2008-9-18 10:37:33 | 显示全部楼层
看来新手们是不想解答此题,本人先来抛个“砖”吧,期待“玉”的出现:
  1. @echo off
  2. for /l %%i in (11,1,999) do set "str=%%i"&call :lp %%i
  3. pause>nul
  4. :lp
  5. set "a=%a%%str:~,1%"&set "b=%b%%str:~-1%"
  6. set "str=%str:~1,-1%"
  7. if defined str goto lp
  8. if %a% equ %b% echo %1
  9. set "a="&set "b="
复制代码
发表于 2008-9-18 12:36:26 | 显示全部楼层
楼上效率必然不高
其实可以观察回文数的特点:左右两边对称
巧妙的方法可以直接通过for即可,数秒内就可找出10000以内所有的回文数
发表于 2008-9-18 12:46:07 | 显示全部楼层
原帖由 youxi01 于 2008-9-18 12:36 发表
楼上效率必然不高
其实可以观察回文数的特点:左右两边对称
巧妙的方法可以直接通过for即可,数秒内就可找出10000以内所有的回文数

楼上说是的即是,本人也是用这种多层循环的方法解的,之所以没有贴出来,是想引其他人来把这块玉献出来。。。

[ 本帖最后由 batman 于 2008-9-18 12:48 编辑 ]
发表于 2008-9-18 12:46:13 | 显示全部楼层
当然楼上的思路是投机取巧的办法,不是真正意义上的检测 回文数,纯粹是列出
发表于 2008-9-18 12:53:28 | 显示全部楼层
测试代码:
  1. @echo off
  2. for /l %%i in (1 1 9) do (
  3. echo %%i%%i
  4. set/a n+=1
  5. for /l %%j in (0 1 9) do (
  6.   echo %%i%%j%%i
  7.   echo %%i%%j%%j%%i
  8.   set/a n+=2
  9.   )
  10. )
  11. echo 10000以内总共有回文数%n%个
  12. pause>nul
复制代码
不过考虑全了没有,我就不知道了

评分

参与人数 1PB +2 收起 理由
wxcute + 2 巧,就是没按顺序,不过应该不会少,你是管 ...

查看全部评分

发表于 2008-9-18 13:03:39 | 显示全部楼层
楼上的还有些不全:四位数的不见了
还有一些4004,404之类

我的代码稍微加入了统计回文数个数...
发表于 2008-9-18 16:43:16 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (11,1,999) do (
  4. set a=%%i
  5. if "!a:~0,1!"=="!a:~-1!" echo %%i
  6. )
  7. pause
复制代码


献丑了。。。

评分

参与人数 1PB +6 收起 理由
wxcute + 6 针对1000以内的就很简洁了。

查看全部评分

发表于 2008-9-23 13:20:02 | 显示全部楼层
0,1,2,3,4,5,6,7,8,9不算吗?

原帖由 youxi01 于 2008-9-18 12:53 发表
测试代码:@echo off
echo 0set n=1for /l %%i in (1 1 9) do (
echo %%i
echo %%i%%i
set/a n+=2
for /l %%j in (0 1 9) do (
  echo %%i%%j%%i
  echo %%i%%j%%j%%i
  set/a n+=2
  )
)
echo 10000以内总共有回文数%n%个
paus ...

[ 本帖最后由 z_berry 于 2008-9-23 13:21 编辑 ]
 楼主| 发表于 2008-10-2 17:44:45 | 显示全部楼层
这是我的不严谨之处。
我自己也不大清楚。
如果单个数也是的话,就要从 0 开始循环了。
发表于 2008-10-6 12:11:09 | 显示全部楼层
请问9楼的你代码中的set /a n+=1和set /a n+=2这两个在这段代码中各表示什么意思啊
 楼主| 发表于 2008-10-8 19:09:34 | 显示全部楼层
回 14 楼

set /a n+=1 等同于 set /a n=n+1
set /a n+=2 等同于 set /a n=n+2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:20 , Processed in 0.025382 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表