批处理之家's Archiver

wxcute 发表于 2008-11-20 19:41

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

[code]@echo off
setlocal enableDelayedExpansion
set A=%random%%%5*9
set 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
goto :eof[/code]目的:学会分析自己或是他人的代码,改正其中的错误使程序能正常的运行。

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

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

lhjoanna 发表于 2008-11-20 23:30

奇怪wxcute兄出的题目很好啊,怎么没人来做。我来做一个:
[code]@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9
set /a B=(%random%%%3+1)*3
set "fuhao=+-*/"
set /a n=0
echo A=%A%  B=%B%
: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!"=="" goto :calc
pause>nul
goto :eof[/code]

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

stalker 发表于 2008-11-22 21:45

看看高手我的
哈哈,开个玩笑,其实我研究好久才搞明白[code]@echo off
setlocal enableDelayedExpansion
set/a A=%random%%%5*9
set/a B=(%random%%%3+1)*3
set fuhao=+-*/
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!"=="" goto :calc
goto :eof[/code]wxcute老大,我仍然有个疑问,为什么在变量截取!fuhao:~%n%,1!中只能用%n%而不能是!n!呢?

batman 发表于 2008-11-22 23:12

凑个热闹吧:
[color=white]
[code]@echo off&setlocal enableDelayedExpansion
set /a A=%random%%%5*9,B=(%random%%%3+1)*3
set "fuhao= +-*/"
:calc
set/a n+=1
if "!fuhao:~%n%,1!" equ "" pause>nul&goto :eof
set/a RS=A!fuhao:~%n%,1!B
echo %A% !fuhao:~%n%,1! %B% = %RS%
goto calc[/code]
[/color]

[[i] 本帖最后由 batman 于 2008-11-22 23:13 编辑 [/i]]

stalker 发表于 2008-11-23 11:00

多谢wxcute老大解答我的疑惑(^_^)

h5599859 发表于 2008-11-25 09:43

@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

keen 发表于 2009-3-31 10:50

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

tyc 发表于 2009-3-31 13:44

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

cainiao736 发表于 2009-3-31 19:49

[code]@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9
set /a B=(%random%%%3+1)*3
set fuhao= +-*/
set n=1
: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!"=="" goto :calc
pause>nul
goto :eof[/code]嘿嘿,其实不是很明白,改来改去就给改好了

keen 发表于 2009-4-1 09:12

多谢wxcute老大指正!修改如下:[code]@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9
set /a B=(%random%%%3+1)*3
set "fuhao=+-*/"
:calc
if "!fuhao:~%n%,1!"=="" pause &exit
set/a RS=%A%!fuhao:~%n%,1!%B%
echo %A% !fuhao:~%n%,1! %B% = %RS%
set /a n+=1 &goto :calc[/code]

mckobe 发表于 2009-4-16 15:18

@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

sjzong 发表于 2009-4-16 22:22

我也来一个!

[code]
@echo off
setlocal enableDelayedExpansion
set/a A=%random%%%5*9
set/a B=(%random%%%3+1)*3
echo A=%A% B=%B%
set fuhao=+-*/
: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!"=="" goto :calc
pause>nul
goto :eof
[/code]

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

battab 发表于 2013-12-16 14:26

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

BHsolve 发表于 2013-12-29 20:31

[code]@echo off
color 0B
setlocal enabledelayedexpansion
set /a A="%random%%%5"*9
set /a B=("%random%%%3"+1)*3
echo A=%A% B=%B%
set fuhao=+-*/
set/a n=0
:calc
set/a RS=%A%!fuhao:~%n%,1!%B%
if not "!fuhao:~%n%,1!"=="" (
echo A !fuhao:~%n%,1! B = %RS%
set /a n+=1 && goto calc
)
pause>nul
[/code]学习了

ann 发表于 2014-12-20 15:20

谢谢了,第一次遇到这样的题,学习了[code]@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9
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 "%n%"=="4" goto :calc
pause>nul
goto :eof[/code]

尘丶 发表于 2015-5-31 09:41

[code]
@echo off
setlocal enableDelayedExpansion
set /a A=%random%%%5*9
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 %n%==4 goto exit
if not "!fuhao:~%n%,1!"=="" goto :calc
pause>nul
goto :eof
:exit
pause
[/code]这题算是10吗,比之前的for处理容易多了 = =

437153 发表于 2015-6-8 11:24

[code]@echo off&setlocal enabledelayedexpansion
set/a A=%random%%%5*9
set/a B=(%random%%%3+1)*3
set "fuhao=+-*/"
: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!" == "" goto :calc
pause>nul
goto :eof[/code]

m91opse 发表于 2018-5-5 19:44

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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.