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

回复 15楼 的帖子

这是跟着教科书走的,10以内就是结果在10以内,100以内就是结果在100以内。
***共同提高***

TOP

回复 12楼 的帖子

超版大人 能不能给的提示多一些 我学批处理才几天 好多都没听说过 说实话 刚看到题目 我想到的就是我写出来的这些 或者给我说下您的QQ 我也好请教您不是
PS:回复帖子是不是没有通知啊 我都不知道有人回复了 是回来学习其他代码的时候才看到回复的。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p max=请输入范围上限:
  4. cls
  5. set /a ran=!random!%%2
  6. if %ran% equ 0 (set str=-) else (set str=+)
  7. :loop
  8. set /a a=!random!%%%max%+1
  9. set /a b=!random!%%%max%+1
  10. set /a n=%a%+%b%
  11. if %n% gtr %max% goto :loop
  12. if %a% gtr %b% (call :lp %a% %b%) else (call :lp %b% %a%)
  13. set /p res=请输入答案:
  14. if %res% equ %num% (echo 正确) else (echo 错误,正确答案是: %num%)
  15. echo.
  16. pause
  17. goto :eof
  18. :lp
  19. echo %1%str%%2=?
  20. set /a num=%1%str%%2
  21. echo.
复制代码
略有改进,但是还是无法解决和上限的问题
努力学习,努力挣分

TOP

回复 17楼 的帖子

可以加论坛的QQ群
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set limit=100
  4. set /p limit=指定范围:
  5. :loop
  6. set /a "x = %random% %% (limit+1)"
  7. set /a "p = %random% %% (limit-x+1)"
  8. set /a "q = %random% %% (x+1)"
  9. set /a "bool = %random% %% 2"
  10. if %bool%==1 (set y=+%p%) else (set y=-%q%)
  11. set /a r=%x%%y%
  12. echo %x%%y%=?
  13. set /p ans=请输入答案:
  14. if not "%ans%"=="%r%" (echo 错误,正确答案是%r%&pause>nul)
  15. goto loop
  16. pause
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

菜鸟的答案

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. color 0a
  4. echo.
  5. echo 以下是小学加减练习题
  6. echo.
  7. set/p var=请输入计算范围:
  8. :a
  9. set /a a=%random%%%%var%
  10. set /a b=%random%%%%var%
  11. if %a% gtr %b% (goto :b) else goto :a
  12. :b
  13. set /a c=%a%-%b%
  14. echo.
  15. echo %a%-%b%=?
  16. echo.
  17. set/p d=请输入答案:
  18. echo.
  19. if %c%==%d% (echo 答案正确) else echo 答案错误;正确答案是:%c%
  20. echo.
  21. set /a e=%random%%%%var%
  22. set /a f=%random%%%%var%
  23. set /a g=%e%+%f%
  24. echo.
  25. echo %e%+%f%=?
  26. echo.
  27. set/p h=请输入答案:
  28. echo.
  29. if %g%==%h% (echo 答案正确) else echo 答案错误;正确答案是:%g%
  30. echo.
  31. pause
复制代码

TOP

  1. @echo off
  2. @color 4e
  3. set /p max="请输入最大值:":
  4. setlocal enabledelayedexpansion
  5. :loop
  6. set /a num1=%random%%%%max%+1
  7. set /a num2=%random%%%%max%+1
  8. set /a base=%random%%%2+1
  9. cls
  10. if %base% equ 1 (
  11.                 set /a true=%num1%+%num2%
  12.                 if !true! gtr %max% goto loop
  13.                 echo %num1%+%num2%=?
  14.                 ) else (
  15.                 set /a true=%num1%-%num2%
  16.                 if !true! lss 0 goto loop
  17.                 echo %num1%-%num2%=?
  18.                 )
  19. set /p typein="请输入答案:":
  20. if %typein% equ %true% (echo 恭喜你,答对啦!
  21.                        goto end) else (
  22.                        echo 计算错误,正确答案为%true%
  23.                        goto end)
  24. :end
  25. pause>nul
  26. goto loop
复制代码
参考前面几位前辈 我又写了一下 请管理员大人再看一下

TOP

  1. @echo off&color 2f
  2. setlocal enableDelayedExpansion
  3. set /p max=输入上限数:
  4. set /a max+=1
  5. :lp
  6. set /a tre=!random!%%max,one=!random!%%max,fh=!random!%%2
  7. if !tre! gtr !one! (
  8.   set/a two=tre-one
  9. if !fh! equ 0 (set str=!tre!-!one!) else (set str=!one!+!two!)
  10. ) else (
  11.   set/a two=one-tre
  12.   if !fh! equ 0 (set str=!one!-!tre!) else (set str=!tre!+!two!)
  13. )
  14. set/a des=!str!
  15. echo;!str!=?
  16. set in=err
  17. set /p in=输入结果:
  18. if !in! equ !des! (echo;答对了!你真聪明!) else (echo;真可惜,正确答案是!des!)
  19. pause>nul
  20. echo;
  21. echo;
  22. goto :lp
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. color 1f
  4. mode con: cols=55 lines=20
  5. title 小学加减法练习簿
  6. set /p max=请输入范围上限:
  7. set /p count=请输入练习次数:
  8. set t=0
  9. set r=0
  10. set s=0
  11. :start
  12. if !count!==!t! (
  13. cls&echo 您已经完成了练习次数,正确!r!次,错误!s!次,加油!&echo 按任意键结束练习&pause>nul&exit
  14. )
  15. cls
  16. set /a m=!random!%%!max!+1
  17. set /a n=!random!%%!max!+1
  18. set /a u=!m!+!n!
  19. if !n! lss !m! (set /a  res=!m!-!n!&echo !m!-!n!=
  20. ) else if !u! lss !max! (set /a res=!u!&echo !m!+!n!=) else (set /a res=!n!-!m!&echo !n!-!m!=)
  21. :res
  22. set /p result=请输入答案:
  23. if not defined result (echo 您没有输入任何数据,请再次输入答案&goto res)
  24. echo.
  25. if !res! equ !result! (echo 恭喜,正确&set /a r+=1) else (echo 错误,正确答案是!res!&set /a s+=1)
  26. ping 127.1 -n 2 >nul
  27. set /a t+=1
  28. set "result="
  29. goto start
复制代码
这个是 符合了 老版 的题意了

TOP

先公布下我出题前的代码吧:

  1. @echo off&setlocal enabledelayedexpansion
  2. color 9f&mode con cols=40 lines=10
  3. echo.
  4. set /p num=请输入运算范围(如10以内输入10):
  5. set ".0=+"&set ".1=-"
  6. :lp
  7. cls&echo.
  8. set /a a=%random%%%%num%+1,b=%random%%%2
  9. if %a% equ 0 if %b% equ 1 set /a b=0
  10. if %a% equ %num% if %b% equ 0 set /a b=1
  11. if %b% equ 0 (
  12.    set /a "c=%random%%%(num-a)+1"
  13.    ) else (
  14.    set /a "c=%random%%%%a%+1"
  15. )
  16. set /a anser=%a%!.%b%!%c%&echo %a%!.%b%!%c%=?
  17. echo.
  18. set "_anser="&set /p _anser=请输入答案:
  19. echo.
  20. if "%anser%" equ "%_anser%" (
  21.    echo 正确
  22.    ) else (
  23.    echo 错误,正确答案是%anser%
  24. )
  25. pause>nul&goto lp
复制代码
***共同提高***

TOP

原帖由 zqz0012005 于 2010-9-20 21:46 发表
@echo off
setlocal enableDelayedExpansion
set limit=100
set /p limit=指定范围:
:loop
set /a "x = %random% %% (limit+1)"
set /a "p = %random% %% (limit-x+1)"
set /a "q = %random% %% (x+1)"
set ...

这个有意思。
setlocal enableDelayedExpansion 好像是多余的,惯性吧,或者是模板?

TOP

  1. @echo off
  2. set /a g="1<<31",d="~g"
  3. echo; 请输入范围数,不能大于 %d%
  4. echo;&set /p n=
  5. set f=-
  6. :loop
  7.     setlocal&cls
  8.     set /a a=%random%%%n,x=n-a,b=%random% %% x
  9.     if %a% lss %b% set a=%b%&set b=%a%&set f=+
  10.     set /a c=a%f%b
  11.     echo  %a% %f% %b% = ?
  12.     echo;&set /p j= 请输入答案  
  13.     if %j% equ %c% (set k= 正确) else set "k= 错误,%a% %f% %b% = %c%"
  14.     echo;&echo %k%
  15.     echo;&pause
  16. endlocal&goto loop
复制代码
两数都不能大于指定范围数,和不能大于cmd范围数
  1. @echo off
  2. set /a g="1<<31",d="~g"
  3. echo; 请输入范围数,即两数都不能大于的数,不能大于 %d%
  4. echo;&set /p n=
  5. set /a x=d-n+1
  6. set f=-
  7. :loop
  8.     setlocal&cls
  9.     set /a a=%random%%%n,b=%random% %% x %%n
  10.     if %a% lss %b% set a=%b%&set b=%a%&set f=+
  11.     set /a c=a%f%b
  12.     echo  %a% %f% %b% = ?
  13.     echo;&set /p j= 请输入答案  
  14.     if %j% equ %c% (set k= 正确) else set "k= 错误,%a% %f% %b% = %c%"
  15.     echo;&echo %k%
  16.     echo;&pause
  17. endlocal&goto loop
复制代码
技术问题请到论坛发帖求助!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set/p fw=请输入运算范围:
  3. :loop
  4. set/a x1=!random!%%!fw!,x2=!random!%%!fw!,x=!random!%%2
  5. if !x!==0 (
  6.      set/a xx=x1+x2
  7.      if !xx! leq !fw! (echo !x1!+!x2!=?) else (goto loop)   
  8.    ) else (
  9.      set/a xx=x1-x2
  10.   if !xx! geq 0 (echo !x1!-!x2!=?) else (goto loop)
  11.    )
  12. set/p da=请输入答案:
  13. if "!xx!"=="!da!" (echo,正确) else (echo,错误,正确答案是:!xx!)
  14. echo,&goto loop
复制代码

[ 本帖最后由 yangfengoo 于 2010-9-27 10:12 编辑 ]

TOP

基本符合版主的要求,不过代码太长了,不知道哪里需要改进的地方,还请大家多多指教!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p a=请输入指定范围数:
  4. set /a a1=%a%+1
  5. :a
  6. cls
  7. set /a t1=%random%%% %a1%,t2=%random%%% %a1%
  8. set /a y1=%a1%-%t1%-1,y2=%a1%-%t2%-1
  9. if %y1% geq %y2% (
  10. if %y2% geq 1 (set /a the=%y1%+%y2%
  11. if !the! gtr %a% (
  12. set /a daan=%y1%-%y2%&echo %y1%-%y2%=?&goto b)))
  13. set /a r=%random%%% 2+1
  14. if %r%==1 (set n=2) else (set n=1)
  15. set /a wet=!y%r%!+!y%n%!
  16. if %wet% gtr %a% (set /a daan=%y2%-%y1%&echo %y2%-%y1%=?) else (
  17. set /a daan=!y%r%!+!y%n%!&echo !y%r%!+!y%n%!=?)
  18. :b
  19. set /p g=请输入正确答案:
  20. if "%g%"=="%daan%" (echo 正确) else (echo 错误,正确答案为%daan%)
  21. pause
  22. goto a
复制代码

[ 本帖最后由 gshccr 于 2010-10-13 11:11 编辑 ]

TOP

贴一个没有循环和选择结构的顺序性解法
常规之外略作创新
没有刻意处理诸如0或者最大值的边界问题
在运算范围为1时可能会丢失某些可能
为0时则直接报错退出

  1. @echo off
  2. echo.
  3. set /p num=请输入运算范围(如10以内输入10):
  4. set ops=+-
  5. :loop
  6. cls&echo.
  7. rem 生成大数big,在减法中作被减数,在加法中作和数
  8. set /a big=%random% %% %num%+1
  9. rem 生成运算符op,并转换为字符opr,0为加法,1为减法
  10. set /a op=%random% %% 2
  11. call set opr=%%ops:~%op%,1%%
  12. rem 生成运算数opd1,减法为大数big,加法时为小于big的随机数
  13. set /a opd1=big*op + (%random% %% big)*(!op)
  14. rem 生成运算数opd2,减法为小于big的随机数,加法时为big-opr1
  15. set /a opd2=(%random% %% big)*op + (big-opd1)*(!op)
  16. rem 生成结果值result
  17. set /a result=opd1 %opr% opd2
  18. echo %opd1% %opr% %opd2% = ?
  19. echo.
  20. set "answer="
  21. set /p answer=请输入答案:
  22. echo.
  23. rem 根据结果与输入的异同显示提示信息
  24. set _0=正确
  25. set _1=错误,正确答案是%result%
  26. rem 两次取反是想将相减后的差值转换为是否相等的逻辑值0或1
  27. set /a judge=!(!(answer-result))
  28. call echo %%_%judge%%%
  29. pause>nul
  30. goto loop
复制代码
天的白色影子

TOP

返回列表