批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖
本帖最后由 applba 于 2011-4-27 12:21 编辑

  1. @echo off &setlocal enabledelayedexpansion &color 17
  2. :limit
  3. set /p n1=请输入最大计算范围:
  4. set /a n=!n1!  && if  !n! lss 2 (echo 您输入的数字有误!&goto limit)
  5. :gen
  6. set /a "a=(!random!%%!n!+1),b=(!random!%%!n!+1)"
  7. if !a! gtr !b! (
  8. set /a r0=!a!-!b!
  9. set /p "r1=!a!-!b!=?_"
  10. ) else (
  11. set /a r0=!a!+!b!
  12. if !r0! GTR !n! goto gen
  13. set /p "r1=!a!+!b!=?_"
  14. )
  15. if !r0! neq !r1! (echo "你答错了!正确答案是:!r0!" ) else (echo 您答对了!请再接再厉吧~)
  16. pause>nul&cls&goto gen
复制代码
::我搞了半天没明白按“回车键”继续?

TOP

本帖最后由 jixun66 于 2011-5-31 01:28 编辑

代码很简单。


压缩前代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p max=请输入算数的和的上限:
  4. if %max% LEQ 1 echo 最大值错误&%0
  5. :loop
  6. set /a p=%random% %% 2
  7. set /a p1=%random% %% %max%
  8. if !p!==1 (
  9. rem 加法
  10. set /a p2=%random% %% (^%max%-!p1!^)
  11. set s=+
  12. ) else (
  13. rem 减法
  14. set /a p2=%random% %% !p1!
  15. set s=-
  16. )
  17. echo.
  18. echo %p1%%s%%p2%=?
  19. echo.
  20. set ans=
  21. set /p ans=请输入答案:
  22. set /a r=%p1%%s%%p2%
  23. if "%r%"=="%ans%" (echo 答案正确!) else (echo 答案错误!&echo 正确答案是:%r%)
  24. echo.
  25. pause
  26. goto loop
复制代码
压缩后代码:
  1. @echo off&setlocal enabledelayedexpansion&set /p max=请输入算数的和的上限:
  2. if %max% LEQ 1 echo 最大值错误&%0
  3. :loop
  4. set /a p=%random% %% 2
  5. set /a p1=%random% %% %max%
  6. if !p!==1 (
  7. set /a p2=%random% %% (^%max%-!p1!^)
  8. set s=+
  9. ) else (
  10. set /a p2=%random% %% !p1!
  11. set s=-
  12. )
  13. echo.&echo %p1%%s%%p2%=?&echo.&set ans=
  14. set /p ans=请输入答案:
  15. set /a r=%p1%%s%%p2%
  16. if "%r%"=="%ans%" (echo 答案正确!) else (echo 答案错误!&echo 正确答案是:%r%)
  17. echo.&pause&goto loop
复制代码
压缩后的代码的开头的空格怎么消失了..虽然下方的复制代码能复制进去。
还有一点,复制代码的时候我这里的TAB缩进符总是显示为『? ? ? ? 』,请问有没有解决办法?
系统环境:Windows 7+XP(虚拟机) 32 Bit

TOP

32# jixun66


DZ论坛程序会自己转换的,木有办法。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。

TOP

  1. @echo off
  2. set /p a=请输入是多少以内的加减法
  3. color 9f
  4. :start
  5. set /a pan=%random%%%2
  6. if %pan%==1 goto jia
  7. if %pan%==0 goto jian
  8. :jia
  9. set /a b=%random%%%(%a%+1)
  10. set /a d=%a%-%b%+1
  11. set /a c=%random%%%%d%
  12. set /a he=%b%+%c%
  13. echo %b%+%c%=?
  14. set /p an=请输入答案:
  15. if %an%==%he% echo 恭喜你,答对了
  16. if %an% neq %he% echo 错误,正确答案是%he%
  17. pause>nul
  18. goto start
  19. :jian
  20. set /a b=%random%%%(%a%+1)
  21. set /a c=%random%%%(%a%+1)
  22. if %b% gtr %c% goto 1
  23. goto 2
  24. :1
  25. echo %b%-%c%=?
  26. set /p an=请输入答案:
  27. set /a cha=%b%-%c%
  28. if %an%==%cha% echo 恭喜你,答对了
  29. if %an% neq %cha% echo 错误,正确答案是%he%
  30. pause>nul
  31. goto start
  32. :2
  33. echo %c%-%b%=?
  34. set /p an=请输入答案:
  35. set /a cha=%c%-%b%
  36. if %an%==%cha% echo 恭喜你,答对了
  37. if %an% neq %cha% echo 错误,正确答案是%he%
  38. pause>nul
  39. goto start
复制代码
nothing's gonna change
and I've never changed

TOP

批处理是不是不能算小数?

明明结果是1.8, 显示的却是1,

TOP

回复 35# smith203


    没错,批处理天生不能算小数点~
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

菜鸟一个,请多指教。
  1. @echo off
  2. color 9F
  3. :aa
  4. Set /a "sum1=%random%%%1000"
  5. Set /a "sum2=%random%%%1000"
  6. If %sum1% gtr %sum2% (Set /a sum3=%sum1%-%sum2% &echo %sum1%-%sum2%) else (Set /a sum3=%sum2%-%sum1%&echo %sum2%-%sum1%)
  7. Set /p sum4= 请输入您的答案:
  8. if %sum3%==%sum4% (echo  正确答案是%sum3%&echo  你的答案是%sum4%恭喜你答对了!继续努力,不要骄傲喔) else echo  正确答案是%sum3%&echo  你的答案是%sum4%,太可惜了,你答错了!不要气馁喔,继续努力,加油!
  9. Goto aa
复制代码
1

评分人数

    • batman: 参与就是好的,加分鼓励PB + 2

TOP

@echo off&setlocal EnableDelayedExpansion&set f=+-&set "制表符=        "&rem 请在这里放入制表符
set 退格=%制表符%-&mode con cols=80 lines=25
set/p max=输入最大数值:&set/a max+=1
for /l %%a in () do (set/a a1=!random!%%max,a2=!random!%%max,r=!random!%%2
for %%b in (!r!) do (set/p ans=→!a1!!f:~%%b,1!!a2!=
set/a ans=a1!f:~%%b,1!a2-ans+0
echo.%退格%
if !ans!==0 (echo.√) else echo.×))

TOP

@echo off&setlocal EnableDelayedExpansion&set f=+-
set "制表符=        "&rem 请在这里放入制表符
set "退格符="&rem 请在这里放入12个退格符
set 退格=%制表符%%退格符%&mode con cols=80 lines=25
set/p max=输入最大数值:&set/a max+=1
for /l %%a in () do (set/a a1=!random!%%max,a2=!random!%%max,r=!random!%%2
for %%b in (!r!) do (set/p ans=→!a1!!f:~%%b,1!!a2!=
set/a ans=a1!f:~%%b,1!a2-ans+0
echo.%退格%
if !ans!==0 (echo.√) else echo.×))

TOP

我也做了一个,个人感觉还行,就是减法出现负数的情况不可避免(以我现在的水平来看)
  1. @echo off
  2. color 1F
  3. setlocal enableDelayedExpansion
  4. title 小学生加减法练习器v1.0
  5. :menu
  6. cls
  7. echo      ┌───────────────────┐
  8. echo         小学生加减法练习器v1.0      
  9. echo      └───────────────────┘
  10. echo               ┌──┐
  11. echo               │1│     开始练习
  12. echo               └──┘
  13. echo.
  14. echo               ┌──┐
  15. echo               │2│     退出
  16. echo               └──┘
  17. set /p choose=请输入:
  18. if %choose%==1 goto lianxi
  19. if %choose%==2 exit
  20. echo 输入有误! 请重新输入
  21. pause>nul
  22. goto menu
  23. :lianxi
  24. cls
  25. set /p sx=请输入数字上限:
  26. set /p sc=要计算的是加法还是减法(A,B)?
  27. :clc
  28. ::处理加数(或减数)
  29. set /a m=%random%%%%sx%
  30. set /a n=%random%%%%sx%
  31. ::处理算式
  32. if %sc%==A set ss=%m%+%n%
  33. if %sc%==B set ss=%m%-%n%
  34. ::生成答案
  35. set /a results=%ss%
  36. :loop
  37. cls
  38. set times=0
  39. echo        第[%times%]道题
  40. echo    请计算:%ss%
  41. set /p ans=请输入结果:
  42. set /a time=%time%+1
  43. ::结果与标准答案进行对比
  44. if %ans% gtr %results% set d=大&goto error
  45. if %ans% lss %results% set d=小&goto error
  46. if %ans% equ %results% goto right
  47. :error
  48. cls
  49. echo 你计算的结果%d%了!
  50. pause>nul
  51. goto clc
  52. :right
  53. cls
  54. echo Bingo 你算对了
  55. echo 按任意键继续答题
  56. pause>nul
  57. goto clc
复制代码

TOP

发现一个bug:因为每次算完都会跳到clc,导致变量%times%不断清零,无法正常计数

下面是修复后的代码
  1. @echo off
  2. color 1F
  3. setlocal enableDelayedExpansion
  4. title 小学生加减法练习器v1.1
  5. :menu
  6. cls
  7. echo      ┌───────────────────┐
  8. echo         小学生加减法练习器v1.0
  9. echo      └───────────────────┘
  10. echo               ┌──┐
  11. echo               │1│     开始练习
  12. echo               └──┘
  13. echo.
  14. echo               ┌──┐
  15. echo               │2│     退出
  16. echo               └──┘
  17. set /p choose=请输入:
  18. if %choose%==1 goto lianxi
  19. if %choose%==2 exit
  20. echo 输入有误! 请重新输入
  21. pause>nul
  22. goto menu
  23. :lianxi
  24. set times=0
  25. cls
  26. set /p sx=请输入数字上限:
  27. set /p sc=要计算的是加法还是减法(A,B)?
  28. :clc
  29. ::处理加数(或减数)
  30. set /a m=%random%%%%sx%
  31. set /a n=%random%%%%sx%
  32. ::处理算式
  33. if %sc%==A set ss=%m%+%n%
  34. if %sc%==B set ss=%m%-%n%
  35. ::生成答案
  36. set /a results=%ss%
  37. :loop
  38. cls
  39. echo        第[%times%]道题
  40. echo    请计算:%ss%
  41. set /p ans=请输入结果:
  42. set /a times=%times%+1
  43. ::结果与标准答案进行对比
  44. if %ans% gtr %results% set d=大&goto error
  45. if %ans% lss %results% set d=小&goto error
  46. if %ans% equ %results% goto right
  47. :error
  48. cls
  49. echo 你计算的结果%d%了!
  50. pause>nul
  51. goto clc
  52. :right
  53. cls
  54. echo Bingo 你算对了
  55. echo 按任意键继续答题
  56. pause>nul
  57. goto clc
复制代码

TOP

本帖最后由 sds 于 2022-12-20 09:52 编辑

压缩后代码,去掉了菜单和注释,简化代码
  1. @echo off
  2. :lianxi
  3. set times=0
  4. cls
  5. set /p sx=请输入数字上限:
  6. set /p sc=要计算的是加法还是减法(A,B)?
  7. :clc
  8. set /a m=%random%%%%sx%
  9. set /a n=%random%%%%sx%
  10. if %sc%==A set ss=%m%+%n%
  11. if %sc%==B set ss=%m%-%n%
  12. set /a results=%ss%
  13. :loop
  14. cls
  15. echo        第[%times%]道题
  16. echo    请计算:%ss%
  17. set /p ans=请输入结果:
  18. set /a times=%times%+1
  19. if %ans% gtr %results% set d=大&goto error
  20. if %ans% lss %results% set d=小&goto error
  21. if %ans% equ %results% goto right
  22. :error
  23. cls
  24. echo 你计算的结果%d%了!
  25. pause>nul
  26. goto clc
  27. :right
  28. cls
  29. echo Bingo 你算对了
  30. echo 按任意键继续答题
  31. pause>nul
  32. goto clc
复制代码

TOP

返回列表