贴一个没有循环和选择结构的顺序性解法
常规之外略作创新
没有刻意处理诸如0或者最大值的边界问题
在运算范围为1时可能会丢失某些可能
为0时则直接报错退出
- @echo off
- echo.
- set /p num=请输入运算范围(如10以内输入10):
- set ops=+-
- :loop
- cls&echo.
- rem 生成大数big,在减法中作被减数,在加法中作和数
- set /a big=%random% %% %num%+1
- rem 生成运算符op,并转换为字符opr,0为加法,1为减法
- set /a op=%random% %% 2
- call set opr=%%ops:~%op%,1%%
- rem 生成运算数opd1,减法为大数big,加法时为小于big的随机数
- set /a opd1=big*op + (%random% %% big)*(!op)
- rem 生成运算数opd2,减法为小于big的随机数,加法时为big-opr1
- set /a opd2=(%random% %% big)*op + (big-opd1)*(!op)
- rem 生成结果值result
- set /a result=opd1 %opr% opd2
- echo %opd1% %opr% %opd2% = ?
- echo.
- set "answer="
- set /p answer=请输入答案:
- echo.
- rem 根据结果与输入的异同显示提示信息
- set _0=正确
- set _1=错误,正确答案是%result%
- rem 两次取反是想将相减后的差值转换为是否相等的逻辑值0或1
- set /a judge=!(!(answer-result))
- call echo %%_%judge%%%
- pause>nul
- goto loop
复制代码
|