[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我也做了一个,个人感觉还行,就是减法出现负数的情况不可避免(以我现在的水平来看)
  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

返回列表