[ 新手习题 10 ] 批处理四则运算代码改错
[code]@echo offsetlocal 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 配合标签的循环。 奇怪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]] 看看高手我的
哈哈,开个玩笑,其实我研究好久才搞明白[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!呢? 凑个热闹吧:
[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]] 多谢wxcute老大解答我的疑惑(^_^) @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 [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]
try
@echo offsetlocal 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 [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]嘿嘿,其实不是很明白,改来改去就给改好了 多谢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] @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
我也来一个!
[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]] [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] [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]学习了 谢谢了,第一次遇到这样的题,学习了[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] [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处理容易多了 = = [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] 大哥这么厉害,求大哥,帮我解决这个问题吧 [url]http://www.bathome.net/thread-47992-1-1.html[/url]
页:
[1]