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

【练习-041】批处理平分时钟数字

&&有一道小学三年级数学题如下:
   用一根过钟心的直线将时钟钟面平分为两半,要求平分的两面上的时钟数字和相等。
   现在我要求大家用批处理来解这首题,列出平分后两边的两组钟面数字(提示数字为1-12)。
   满分10分,视代码具体情况加分(以思路为重)。

[ 本帖最后由 batman 于 2009-4-10 11:55 编辑 ]
***共同提高***

楼上6个for啊,是不是在效率上考虑欠妥了。。。
***共同提高***

TOP

在解本题时二楼和四楼都是使用的纯数学法,思路确是好的,但不是用批处理技巧来解
决的。小学三年级学生也根本想到以上所述的这两种方法,他们所用的方法就是一组一
组六个数字相加的方法,当然这用手工来做是个笨方法,但用批就不一样了,本人的代
码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=1 2 3 4 5 6 7 8 9 10 11 12"
  3. :lp
  4. for /f "tokens=1-6" %%a in ("%str%") do (
  5.     set /a num=%%a+%%b+%%c+%%d+%%e+%%f
  6.     if !num! equ 39 (
  7.        echo 第一组数为:%%a %%b %%c %%d %%e %%f
  8.        echo 第二组数为:!str:%%a %%b %%c %%d %%e %%f =!
  9.        pause>nul&goto :eof
  10.    ) else (
  11.        if %%a lss 10 (
  12.           set "str=%str:~2% %str:~,1%"
  13.           ) else (
  14.           set "str=%str:~3% %str:~,2%"
  15.        )
  16.        set /a num=0&goto lp
  17.    )
  18. )
复制代码
***共同提高***

TOP

我再来一个:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str= #1 #2 #3 #4 #5 #6 #7 #8 #9 10 11 12 #1 #2 #3 #4 #5 #6 #7 #8 #9"
  3. for /l %%a in (1,1,7) do (
  4.     set /a "num=(2*%%a+5)*3"
  5.     if !num! equ 39 (
  6.        set /a "a=(%%a-1)*3",b="(%%a+5)*3"
  7.        call,set "a=%%str:~!a!,18%%"&echo !a:#=!
  8.        call,set "b=%%str:~!b!,18%%"&echo !b:#=!
  9.     )
  10. )
  11. pause>nul
复制代码

[ 本帖最后由 batman 于 2010-1-9 12:25 编辑 ]
***共同提高***

TOP

返回列表