标题: [ 新手习题 10 ] 批处理四则运算代码改错 [打印本页]
作者: wxcute 时间: 2008-11-20 19:41 标题: [ 新手习题 10 ] 批处理四则运算代码改错
- @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
复制代码
目的:学会分析自己或是他人的代码,改正其中的错误使程序能正常的运行。
要求:修改代码使其显示两个随机数的和差积商。效果如图:
由于是随机数,A、B 不一定是 18 和 9。
相关知识点:set 的数学运算表达方式,随机数、变量延迟、变量截取和 goto 配合标签的循环。
作者: lhjoanna 时间: 2008-11-20 23:30
奇怪wxcute兄出的题目很好啊,怎么没人来做。我来做一个:
- @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
复制代码
[ 本帖最后由 lhjoanna 于 2008-11-21 00:14 编辑 ]
作者: stalker 时间: 2008-11-22 21:45
看看高手我的
哈哈,开个玩笑,其实我研究好久才搞明白- @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
复制代码
wxcute老大,我仍然有个疑问,为什么在变量截取!fuhao:~%n%,1!中只能用%n%而不能是!n!呢?
作者: batman 时间: 2008-11-22 23:12
凑个热闹吧:
- @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
复制代码
[ 本帖最后由 batman 于 2008-11-22 23:13 编辑 ]
作者: 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
- @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
复制代码
作者: 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
- @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
复制代码
嘿嘿,其实不是很明白,改来改去就给改好了
作者: keen 时间: 2009-4-1 09:12
多谢wxcute老大指正!修改如下:- @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
复制代码
作者: 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 标题: 我也来一个!
-
- @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
复制代码
[ 本帖最后由 sjzong 于 2009-4-16 22:48 编辑 ]
作者: battab 时间: 2013-12-16 14:26
- @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
复制代码
作者: BHsolve 时间: 2013-12-29 20:31
- @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
复制代码
学习了
作者: ann 时间: 2014-12-20 15:20
谢谢了,第一次遇到这样的题,学习了- @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
复制代码
作者: 尘丶 时间: 2015-5-31 09:41
- @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
复制代码
这题算是10吗,比之前的for处理容易多了 = =
作者: 437153 时间: 2015-6-8 11:24
- @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
复制代码
作者: m91opse 时间: 2018-5-5 19:44
大哥这么厉害,求大哥,帮我解决这个问题吧 http://www.bathome.net/thread-47992-1-1.html
作者: 唯尘 时间: 2024-5-10 09:06
@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
看完大佬的代码自己默写了一遍
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |