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

TOP

  1. @setlocal enabledelayedexpansion
  2. set %random%=%random%
  3. @echo off
  4. ::没有在开头使用是为了对比检验结果。完全可以移到首行
  5. for /l %%i in (0 1 32767) do (if defined %%i (set i=%%i)&goto next)
  6. :next
  7. ::这里使用一个跳转是为了节约CPU资源,不直接跳转是为了防止出错。
  8. echo 随机变量为:%i%
  9. echo 其值为:!%i%!
  10. set num=0
  11. set b=%i%
  12. set c=!%i%!
  13. for /l %%a in (0 1 4) do (
  14. set /a num+=!b:~%%a,1!
  15. set /a num+=!c:~%%a,1!
  16. )
  17. echo 各位数的和为:%num%
  18. pause>nul
复制代码

试验后发现位数不足五位时会有错误提示,修改屏蔽提示。
  1. @setlocal enabledelayedexpansion
  2. set %random%=%random%
  3. @echo off
  4. for /l %%i in (0 1 32767) do (if defined %%i (set i=%%i)&goto next)
  5. :next
  6. echo 随机变量为:%i%
  7. echo 其值为:!%i%!
  8. set num=0
  9. set b=%i%
  10. set c=!%i%!
  11. for /l %%a in (0 1 4) do (
  12. set /a num+=!b:~%%a,1! 2>nul
  13. set /a num+=!c:~%%a,1! 2>nul
  14. )
  15. echo 各位数的和为:%num%
  16. pause>nul
复制代码

[ 本帖最后由 firewolf85 于 2008-12-20 19:11 编辑 ]
1

评分人数

    • wxcute: 不错,是新方法PB + 8

TOP

回复 6楼 的帖子

因为此题是本练习题的一个小结,属于一个综合性的题目。因为题目是连贯性的,所以只要弄明白了前面的题目,这一题就不会很难了。

唯一的比较难的点就是找到这个变量,这就看大家有没有掌握关于 SET 命令显示变量的用法了。

还有就是显示的时候没必要像 2 楼一样显示过程,像顶楼蓝字下面一样显示结果就行了。

TOP

set %random%=%random%
上面的这行代码不能改动,
这个要求是否有点高了?随机数,如何获取变量名?难道要通过判断变量名是否为纯数字?如此代码是否复杂化了?
技术问题请到论坛发帖求助!

TOP

@echo off
set a=%random%=%random%
echo %a%
:calc
set var=%a:~,1%
set /a s+=var
set /p=%var%+<nul 2>nul
set a=%a:~1%
if defined a goto calc
set /p==%s%<nul
pause>nul
1

评分人数

    • wxcute: 没有看清题意。PB + 2

TOP

修改了一下,通过屏蔽错误输出,从而省略去掉str中“=”的步骤!可以稍微提高点效率~~
  1. @echo off&setlocal enabledelayedexpansion
  2. set %random%=%random%
  3. for /f "delims=" %%i in ('set') do set str=%%i&goto start
  4. :start
  5. echo %str%
  6. :calc
  7. set var=!str:~,1!
  8. set /a s+=var
  9. set /p=%var%+<nul 2>nul
  10. set str=!str:~1!
  11. if defined str goto calc
  12. set /p==!s!<nul
  13. pause>nul
复制代码

[ 本帖最后由 lhjoanna 于 2008-11-21 17:11 编辑 ]
1

评分人数

TOP

呵,wxcute兄出的题目越来越有水平了,说难也不难,说不难也的确要动一下脑子。强烈支持!!!
  1. @echo off&setlocal enabledelayedexpansion
  2. set %random%=%random%
  3. for /f "delims=" %%i in ('set') do set str=%%i&goto start
  4. :start
  5. echo %str%
  6. for /f "tokens=1,2 delims==" %%i in ("%str%") do set num=%%i%%j
  7. :calc
  8. set var=!num:~,1!
  9. set /a s+=var
  10. set /p=%var%+<nul
  11. set num=!num:~1!
  12. if defined num goto calc
  13. set /p==!s!<nul
  14. pause>nul
复制代码

[ 本帖最后由 lhjoanna 于 2008-11-21 16:53 编辑 ]
1

评分人数

TOP

返回列表