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

[ 新手习题 10 ] 批处理四则运算代码改错

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set A=%random%%%5*9
  4. set B=(%random%%%3+1)*3
  5. set fuhao="+-*/"
  6. :calc
  7. set/a n+=1
  8. set/a RS=A%fuhao:~!n!,1%B
  9. echo A !fuhao:~%n%,1! B = %RS%
  10. if not "!fuhao:~%n%,1!"=="" goto :calc
  11. pause>nul
  12. goto :eof
复制代码
目的:学会分析自己或是他人的代码,改正其中的错误使程序能正常的运行。

要求:修改代码使其显示两个随机数的和差积商。效果如图:
由于是随机数,A、B 不一定是 18 和 9。


相关知识点:set 的数学运算表达方式,随机数、变量延迟、变量截取和 goto 配合标签的循环。

@echo off
setlocal enabledelayedexpansion
set /a a=%random%%%5*9
echo a=%a%
set /a b=(%random%%%3+1)*3
echo b=%b%
set "fuhao=+-*/"
set /a n=0

:calc
if "!fuhao:~%n%,1!"=="" echo 循环完毕 & pause>NUl & goto :eof
set /a rs=%a%!fuhao:~%n%,1!%b%
echo a !fuhao:~%n%,1! b = !rs!
set /a n+=1
goto :calc
看完大佬的代码自己默写了一遍

TOP

大哥这么厉害,求大哥,帮我解决这个问题吧 http://www.bathome.net/thread-47992-1-1.html

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set/a A=%random%%%5*9
  3. set/a B=(%random%%%3+1)*3
  4. set "fuhao=+-*/"
  5. :calc
  6. set/a RS=A!fuhao:~%n%,1!B
  7. echo %A% !fuhao:~%n%,1! %B% = %RS%
  8. set/a n+=1
  9. if not "!fuhao:~%n%,1!" == "" goto :calc
  10. pause>nul
  11. goto :eof
复制代码

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /a A=%random%%%5*9
  4. set /a B=(%random%%%3+1)*3
  5. set fuhao="+-*/"
  6. :calc
  7. set/a n+=1
  8. set/a RS=%A%!fuhao:~%n%,1!%B%
  9. echo %A% !fuhao:~%n%,1! %B% = %RS%
  10. if %n%==4 goto exit
  11. if not "!fuhao:~%n%,1!"=="" goto :calc
  12. pause>nul
  13. goto :eof
  14. :exit
  15. pause
复制代码
这题算是10吗,比之前的for处理容易多了 = =

TOP

谢谢了,第一次遇到这样的题,学习了
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /a A=%random%%%5*9
  4. set /a B=(%random%%%3+1)*3
  5. set fuhao="-+*/"
  6. :calc
  7. set /a n+=1
  8. set /a RS=A!fuhao:~%n%,1!B
  9. echo %A% !fuhao:~%n%,1! %B% = %RS%
  10. if not "%n%"=="4" goto :calc
  11. pause>nul
  12. goto :eof
复制代码

TOP

  1. @echo off
  2. color 0B
  3. setlocal enabledelayedexpansion
  4. set /a A="%random%%%5"*9
  5. set /a B=("%random%%%3"+1)*3
  6. echo A=%A% B=%B%
  7. set fuhao=+-*/
  8. set/a n=0
  9. :calc
  10. set/a RS=%A%!fuhao:~%n%,1!%B%
  11. if not "!fuhao:~%n%,1!"=="" (
  12. echo A !fuhao:~%n%,1! B = %RS%
  13. set /a n+=1 && goto calc
  14. )
  15. pause>nul
复制代码
学习了

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /a A=(%random%%%5+1)*9
  4. set /a B=(%random%%%3+1)*3
  5. set fuhao= +-*/
  6. set n=1
  7. :calc
  8. if %n% gtr 4 goto end
  9. set/a RS=A!fuhao:~%n%,1!B
  10. echo %A% !fuhao:~%n%,1! %B% = %RS%
  11. if not "!fuhao:~%n%,1!"=="" set/a n+=1&goto :calc
  12. :end
  13. pause>nul
复制代码
学习中

TOP

我也来一个!

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set/a A=%random%%%5*9
  4. set/a B=(%random%%%3+1)*3
  5. echo A=%A% B=%B%
  6. set fuhao=+-*/
  7. :calc
  8. set/a RS=%A% !fuhao:~%n%,1! %B%
  9. echo A !fuhao:~%n%,1! B = !RS!
  10. set/a n+=1
  11. if not "!fuhao:~%n%,1!"=="" goto :calc
  12. pause>nul
  13. goto :eof
复制代码

[ 本帖最后由 sjzong 于 2009-4-16 22:48 编辑 ]
1

评分人数

TOP

@echo off
setlocal enableDelayedExpansion
set/a A=%random%%%5*9
set/a B=(%random%%%3+1)*3
set fuhao=+-*/
set/a n=0
:calc
if not "!fuhao:~%n%,1!"=="" (set/a RS=%A%!fuhao:~%n%,1!%B%&echo %A% !fuhao:~%n%,1! %B% = !RS!)
set/a n+=1
goto :calc
pause>nul
goto :eof
1

评分人数

    • wxcute: 代码会陷入死循环。PB + 2

TOP

多谢wxcute老大指正!修改如下:
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /a A=%random%%%5*9
  4. set /a B=(%random%%%3+1)*3
  5. set "fuhao=+-*/"
  6. :calc
  7. if "!fuhao:~%n%,1!"=="" pause &exit
  8. set/a RS=%A%!fuhao:~%n%,1!%B%
  9. echo %A% !fuhao:~%n%,1! %B% = %RS%
  10. set /a n+=1 &goto :calc
复制代码
1

评分人数

    • wxcute: 不好意思,现在才补上积分PB + 2
(*^_^*)

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /a A=%random%%%5*9
  4. set /a B=(%random%%%3+1)*3
  5. set fuhao= +-*/
  6. set n=1
  7. :calc
  8. set/a RS=!A! !fuhao:~%n%,1! !B!
  9. echo !A! !fuhao:~%n%,1! !B! = !RS!
  10. set /a n+=1
  11. if not "!fuhao:~%n%,1!"=="" goto :calc
  12. pause>nul
  13. goto :eof
复制代码
嘿嘿,其实不是很明白,改来改去就给改好了
1

评分人数

    • wxcute: 不错,睡一觉也许就明白了,嘻嘻。PB + 4

TOP

try

@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9
set /a B=(%random%%%3+1)*3
set fuhao=+-*/a
pause>nul
set /a n=0
:calc
set /a RS=%A% !fuhao:~%n%,1! %B%
echo !A! !fuhao:~%n%,1! !B! = %RS%
set /a n+=1
if not "!fuhao:~%n%,1!"=="a" goto :calc
pause>nul
goto :eof
1

评分人数

    • wxcute: 很棒,请用 CODE 闭合代码。PB + 4

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set A=%random%%%5*9
  4. set B=(%random%%%3+1)*3
  5. set "fuhao=+-*/"
  6. :calc
  7. if "!fuhao:~%n%,1!"=="" pause &exit
  8. set/a RS=%A%!fuhao:~%n%,1!%B%
  9. echo A !fuhao:~%n%,1! B = %RS%
  10. set /a n+=1 &goto :calc
复制代码
1

评分人数

    • wxcute: 两个随机数并没有显示出来。PB + 2
(*^_^*)

TOP

@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9+1
set /a B=(%random%%%3+1)*3
set fuhao="+-*/
:calc
set/a n+=1
set/a RS=%A%!fuhao:~%n%,1!%B%
echo %A% !fuhao:~%n%,1! %B% = %RS%
if not "!fuhao:~%n%,1!"=="/" goto calc
pause>nul

TOP

返回列表