[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【练习-061】小学生加减法算式批处理生成器

出题目的:
  综合考查对set 命令以及if判断语句的运用
加分原则:
  优秀代码予以技术+1的鼓励
解题要求:
  1、请版主、技术组成员先将机会留给新人
  2、代码简洁、高效、无临时文件
题目如下:
  编写代码随机生成指定运算范围内的整数加减法算式,其中指定范围是由使用者输入,在这其中要注意加法运算
的和不能超过指定范围(上限),减法运算结果不能为负数(减数不能大于被减数),然后接收输入的答案并做出判
断,如果结果正确则显示正确,不正确显示不正确并给出正确结果,接收回车指令后给出下一个随机算式,这时不要
求再接收运算范围的输入。运行过程如下所示:
[attach]2980[/attach]
***共同提高***

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p max=请输入范围上限:
  4. cls
  5. set /a ran=!random!%%2
  6. if %ran% equ 0 (goto jiafa) else (goto jianfa)
  7. :jiafa
  8. set /a a=!random!%%%max%+1
  9. set /a b=!random!%%%max%+1
  10. set /a number=%a%+%b%
  11. if %number% gtr %max% goto jiafa
  12. echo %a%+%b%=?
  13. set /p res=请输入答案:
  14. echo.
  15. if %res% equ %number% (echo 正确) else (echo 错误,正确答案是%number%)
  16. pause
  17. goto :eof
  18. :jianfa
  19. set /a a=!random!%%%max%+1
  20. set /a b=!random!%%%max%+1
  21. if %a% gtr %b% (call :jian %a% %b%) else (call :jian %b% %a%)
  22. set /p res=请输入答案:
  23. if %res% equ %num% (echo 正确) else (echo 错误,正确答案是%num%)
  24. pause
  25. goto :eof
  26. :jian
  27. echo %1-%2=?
  28. set /a num=%1-%2
  29. echo.
  30. goto :eof
复制代码
已经修改为随机加减法了,加法的运算的上限的判断问题,我没有更好的思路,batman可否给讲解一下?

[ 本帖最后由 sgaizxt001 于 2010-9-20 14:14 编辑 ]
努力学习,努力挣分

TOP

指出二楼代码需要改进的地方

1、算式是随机生成的,不用选择加减法

2、代码采用了判断加返回call循环模式,在算法上效率较低
1

评分人数

***共同提高***

TOP

郁闷,没办法给贴子加分!!!
1

评分人数

    • 523066680: 这个含金量高一点,凑合着用吧技术 + 1
***共同提高***

TOP

晕~~~~只能扣分,不能加分~~~~~

为什么这样 /ku

TOP

回复 5楼 的帖子

你们啊,现在流行+技术! 技术!
我们要尊重党的策略。

TOP

  1. @echo off
  2. @color 4e
  3. set /p max="请输入最大值:":
  4. ::这里有点繁琐 鉴于我是小白 好多功能还不会使用 见谅。
  5. ::产生随机数
  6. :start1
  7. set num1=%random%
  8. if %num1% gtr %max% goto start1
  9. :start2
  10. set num2=%random%
  11. if %num2% gtr %max% goto start2
  12. if %num1% lss %num2% goto start1
  13. ::随机产生加减法
  14. if %random:~1,1% LSS 5 (goto plus) else (goto minus)
  15. ::加法
  16. :plus
  17. set /a true=%num1%+%num2%
  18. echo %num1%+%num2%=?
  19. goto judge
  20. ::减法
  21. :minus
  22. set /a true=%num1%-%num2%
  23. echo %num1%-%num2%=?
  24. ::判断结果
  25. :judge
  26. set /p typein="请输入结果:":
  27. if %true% equ %typein% (echo 恭喜你答对了!!
  28.                         goto end) else (
  29.                         echo 计算错误,正确答案是%true%
  30.                         goto end)
  31. :end
  32. @pause >nul
复制代码
写的不是一般的麻烦 不过应该符合要求了

贴上来之后才发现加法的判断有点小问题。。
9#是我修改过后的代码 看那个吧。。

[ 本帖最后由 robinsnelson 于 2010-9-20 13:57 编辑 ]

TOP

@echo off
setlocal enabledelayedexpansion
color 1f
title 小学加减法练习簿
set /p max=请输入范围上限:
set /p count=请输入练习次数:
set t=0
set r=0
set s=0
:start
if !count!==!t! (
cls&echo 您已经完成了练习次数,正确!r!次,错误!s!次,加油!&echo 按任意键结束练习&pause>nul&exit
)
cls
set /a m=!random!%%!max!+1
set /a n=!random!%%!max!+1
if !n! lss !m! (set /a  res=!m!-!n!&echo !m!-!n!=) else (set /a res=!m!+!n!&echo !m!+!n!=)
:res
set /p result=请输入答案:
echo !result!
echo.
if !res! equ !result! (echo 恭喜,正确&set /a r+=1) else (echo 错误,正确答案是!res!&set /a s+=1)

ping 127.1 -n 2 >nul
set /a t+=1
goto start

给点分,可以不咯

[ 本帖最后由 edmond 于 2010-9-20 13:31 编辑 ]

TOP

  1. @echo off
  2. @color 4e
  3. set /p max="请输入最大值:":
  4. ::随机产生加减法
  5. :loop
  6. if %random:~1,1% LSS 5 (goto plus) else (goto minus)
  7. ::加法
  8. :plus
  9. :start1
  10. set num1=%random%
  11. if %num1% gtr %max% goto start1
  12. :start2
  13. set num2=%random%
  14. if %num2% gtr %max% goto start2
  15. set /a true=%num1%+%num2%
  16. if %true% gtr %max% goto plus
  17. echo %num1%+%num2%=?
  18. goto judge
  19. ::减法
  20. :minus
  21. :start3
  22. set num1=%random%
  23. if %num1% gtr %max% goto start3
  24. :start4
  25. set num2=%random%
  26. if %num2% gtr %max% goto start4
  27. set /a true=%num1%-%num2%
  28. if %true% lss 0 goto minus
  29. echo %num1%-%num2%=?
  30. ::判断结果
  31. :judge
  32. set /p typein="请输入结果:":
  33. if %true% equ %typein% (echo 恭喜你答对了!!
  34.                         goto end) else (
  35.                         echo 计算错误,正确答案是%true%
  36.                         goto end)
  37. :end
  38. goto loop
  39. @pause >nul
复制代码
修改了一下 虽然代码更麻烦了 不过运行的快了一些 最后一个要求接受回车给出下个指令 不太会 所以我就全部设成循环了 退出的话 我想的是可以对那个tpyein的判断 给出输入特定字符退出 然后再执行一下exit命令 就不在里面写了

[ 本帖最后由 robinsnelson 于 2010-9-20 14:02 编辑 ]

TOP

再次学习了!!!!!

TOP

回复 8楼 的帖子

参与精神是最重要的,不管你的代码写的怎么样,也不管你最后会得到什么样的评价,但起码你动了脑动了手,

你自己得到了提高。另外论坛现在的设置是不能加pb了,所以我只能对优秀的代码加技术分,希望兄弟不要为此而灰

心,继续努力,ok?
***共同提高***

TOP

回复 9楼 的帖子

有进步,但代码运算效率仍然不高,建议不要采用判断加返回的运算方法

小提示:加减法可以不分开写不?

[ 本帖最后由 batman 于 2010-9-20 14:55 编辑 ]
***共同提高***

TOP

用户输入的范围数是指的什么数的范围?
比如输入 20
是指 a 和 b 都不能大于 20 吗?
技术问题请到论坛发帖求助!

TOP

回复 13楼 的帖子

如输入100,表明生成100以内的加减法,也就是减数和算式和均不大于100
***共同提高***

TOP

感觉按我13楼的提议会更好点,否则你那个cmd数值范围的要求不大啊。
技术问题请到论坛发帖求助!

TOP

返回列表