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

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

[复制链接]
发表于 2008-11-20 19:41:05 | 显示全部楼层 |阅读模式
  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 配合标签的循环。
发表于 2008-11-20 23:30:07 | 显示全部楼层
奇怪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. set /a n=0
  7. echo A=%A%  B=%B%
  8. :calc
  9. set /a RS=%A%!fuhao:~%n%,1!%B%
  10. echo A !fuhao:~%n%,1! B = !RS!
  11. set /a n+=1
  12. if not "!fuhao:~%n%,1!"=="" goto :calc
  13. pause>nul
  14. goto :eof
复制代码

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

评分

参与人数 1PB +8 收起 理由
wxcute + 8 赞一个。感谢深夜还在做题

查看全部评分

发表于 2008-11-22 21:45:59 | 显示全部楼层
看看高手我的
哈哈,开个玩笑,其实我研究好久才搞明白
  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/a n=0
  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. goto :eof
复制代码
wxcute老大,我仍然有个疑问,为什么在变量截取!fuhao:~%n%,1!中只能用%n%而不能是!n!呢?

评分

参与人数 1PB +8 收起 理由
wxcute + 8 很好。 你的问题:为什么在变量截取!fuhao ...

查看全部评分

发表于 2008-11-22 23:12:07 | 显示全部楼层
凑个热闹吧:

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



[ 本帖最后由 batman 于 2008-11-22 23:13 编辑 ]
发表于 2008-11-23 11:00:15 | 显示全部楼层
多谢wxcute老大解答我的疑惑(^_^)
发表于 2008-11-25 09:43:27 | 显示全部楼层
@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
发表于 2009-3-31 10:50:22 | 显示全部楼层

  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
复制代码

评分

参与人数 1PB +2 收起 理由
wxcute + 2 两个随机数并没有显示出来。

查看全部评分

发表于 2009-3-31 13:44:29 | 显示全部楼层

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

评分

参与人数 1PB +4 收起 理由
wxcute + 4 很棒,请用 CODE 闭合代码。

查看全部评分

发表于 2009-3-31 19:49:08 | 显示全部楼层
  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
复制代码
嘿嘿,其实不是很明白,改来改去就给改好了

评分

参与人数 1PB +4 收起 理由
wxcute + 4 不错,睡一觉也许就明白了,嘻嘻。

查看全部评分

发表于 2009-4-1 09:12:24 | 显示全部楼层
多谢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
复制代码

评分

参与人数 1PB +2 收起 理由
wxcute + 2 不好意思,现在才补上积分

查看全部评分

发表于 2009-4-16 15:18:33 | 显示全部楼层
@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

评分

参与人数 1PB +2 收起 理由
wxcute + 2 代码会陷入死循环。

查看全部评分

发表于 2009-4-16 22:22:37 | 显示全部楼层

我也来一个!


  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 编辑 ]

评分

参与人数 1PB +3 收起 理由
wxcute + 3 补上积分。

查看全部评分

发表于 2013-12-16 14:26:10 | 显示全部楼层
  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
复制代码
发表于 2013-12-29 20:31:53 | 显示全部楼层
  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
复制代码
学习了
发表于 2014-12-20 15:20:33 | 显示全部楼层
谢谢了,第一次遇到这样的题,学习了
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 22:46 , Processed in 0.025800 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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