返回列表 发帖

回复 15楼 的帖子

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

TOP

回复 12楼 的帖子

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

TOP

@echo off
setlocal enabledelayedexpansion
set /p max=请输入范围上限:
cls
set /a ran=!random!%%2
if %ran% equ 0 (set str=-) else (set str=+)
:loop
set /a a=!random!%%%max%+1
set /a b=!random!%%%max%+1
set /a n=%a%+%b%
if %n% gtr %max% goto :loop
if %a% gtr %b% (call :lp %a% %b%) else (call :lp %b% %a%)
set /p res=请输入答案:
if %res% equ %num% (echo 正确) else (echo 错误,正确答案是: %num%)
echo.
pause
goto :eof
:lp
echo %1%str%%2=?
set /a num=%1%str%%2
echo.COPY
略有改进,但是还是无法解决和上限的问题
努力学习,努力挣分

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

@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 /a "bool = %random% %% 2"
if %bool%==1 (set y=+%p%) else (set y=-%q%)
set /a r=%x%%y%
echo %x%%y%=?
set /p ans=请输入答案:
if not "%ans%"=="%r%" (echo 错误,正确答案是%r%&pause>nul)
goto loop
pauseCOPY
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

菜鸟的答案

@echo off
setlocal enabledelayedexpansion
color 0a
echo.
echo 以下是小学加减练习题
echo.
set/p var=请输入计算范围:
:a
set /a a=%random%%%%var%
set /a b=%random%%%%var%
if %a% gtr %b% (goto :b) else goto :a
:b
set /a c=%a%-%b%
echo.
echo %a%-%b%=?
echo.
set/p d=请输入答案:
echo.
if %c%==%d% (echo 答案正确) else echo 答案错误;正确答案是:%c%
echo.
set /a e=%random%%%%var%
set /a f=%random%%%%var%
set /a g=%e%+%f%
echo.
echo %e%+%f%=?
echo.
set/p h=请输入答案:
echo.
if %g%==%h% (echo 答案正确) else echo 答案错误;正确答案是:%g%
echo.
pauseCOPY

TOP

@echo off
@color 4e
set /p max="请输入最大值:":
setlocal enabledelayedexpansion
:loop
set /a num1=%random%%%%max%+1
set /a num2=%random%%%%max%+1
set /a base=%random%%%2+1
cls
if %base% equ 1 (
                set /a true=%num1%+%num2%
                if !true! gtr %max% goto loop
                echo %num1%+%num2%=?
                ) else (
                set /a true=%num1%-%num2%
                if !true! lss 0 goto loop
                echo %num1%-%num2%=?
                )
set /p typein="请输入答案:":
if %typein% equ %true% (echo 恭喜你,答对啦!
                       goto end) else (
                       echo 计算错误,正确答案为%true%
                       goto end)
:end
pause>nul
goto loopCOPY
参考前面几位前辈 我又写了一下 请管理员大人再看一下

TOP

@echo off&color 2f
setlocal enableDelayedExpansion
set /p max=输入上限数:
set /a max+=1
:lp
set /a tre=!random!%%max,one=!random!%%max,fh=!random!%%2
if !tre! gtr !one! (
  set/a two=tre-one
if !fh! equ 0 (set str=!tre!-!one!) else (set str=!one!+!two!)
) else (
  set/a two=one-tre
  if !fh! equ 0 (set str=!one!-!tre!) else (set str=!tre!+!two!)
)
set/a des=!str!
echo;!str!=?
set in=err
set /p in=输入结果:
if !in! equ !des! (echo;答对了!你真聪明!) else (echo;真可惜,正确答案是!des!)
pause>nul
echo;
echo;
goto :lpCOPY

TOP

@echo off
setlocal enabledelayedexpansion
color 1f
mode con: cols=55 lines=20
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
set /a u=!m!+!n!
if !n! lss !m! (set /a  res=!m!-!n!&echo !m!-!n!=
) else if !u! lss !max! (set /a res=!u!&echo !m!+!n!=) else (set /a res=!n!-!m!&echo !n!-!m!=)
:res
set /p result=请输入答案:
if not defined result (echo 您没有输入任何数据,请再次输入答案&goto res)
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
set "result="
goto startCOPY
这个是 符合了 老版 的题意了

TOP

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

@echo off&setlocal enabledelayedexpansion
color 9f&mode con cols=40 lines=10
echo.
set /p num=请输入运算范围(如10以内输入10):
set ".0=+"&set ".1=-"
:lp
cls&echo.
set /a a=%random%%%%num%+1,b=%random%%%2
if %a% equ 0 if %b% equ 1 set /a b=0
if %a% equ %num% if %b% equ 0 set /a b=1
if %b% equ 0 (
   set /a "c=%random%%%(num-a)+1"
   ) else (
   set /a "c=%random%%%%a%+1"
)
set /a anser=%a%!.%b%!%c%&echo %a%!.%b%!%c%=?
echo.
set "_anser="&set /p _anser=请输入答案:
echo.
if "%anser%" equ "%_anser%" (
   echo 正确
   ) else (
   echo 错误,正确答案是%anser%
)
pause>nul&goto lpCOPY
***共同提高***

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

@echo off
set /a g="1<<31",d="~g"
echo; 请输入范围数,不能大于 %d%
echo;&set /p n=
set f=-
:loop
    setlocal&cls
    set /a a=%random%%%n,x=n-a,b=%random% %% x
    if %a% lss %b% set a=%b%&set b=%a%&set f=+
    set /a c=a%f%b
    echo  %a% %f% %b% = ?
    echo;&set /p j= 请输入答案  
    if %j% equ %c% (set k= 正确) else set "k= 错误,%a% %f% %b% = %c%"
    echo;&echo %k%
    echo;&pause
endlocal&goto loopCOPY
两数都不能大于指定范围数,和不能大于cmd范围数
@echo off
set /a g="1<<31",d="~g"
echo; 请输入范围数,即两数都不能大于的数,不能大于 %d%
echo;&set /p n=
set /a x=d-n+1
set f=-
:loop
    setlocal&cls
    set /a a=%random%%%n,b=%random% %% x %%n
    if %a% lss %b% set a=%b%&set b=%a%&set f=+
    set /a c=a%f%b
    echo  %a% %f% %b% = ?
    echo;&set /p j= 请输入答案  
    if %j% equ %c% (set k= 正确) else set "k= 错误,%a% %f% %b% = %c%"
    echo;&echo %k%
    echo;&pause
endlocal&goto loopCOPY
技术问题请到论坛发帖求助!

TOP

@echo off&setlocal enabledelayedexpansion
set/p fw=请输入运算范围:
:loop
set/a x1=!random!%%!fw!,x2=!random!%%!fw!,x=!random!%%2
if !x!==0 (
     set/a xx=x1+x2
     if !xx! leq !fw! (echo !x1!+!x2!=?) else (goto loop)   
   ) else (
     set/a xx=x1-x2
  if !xx! geq 0 (echo !x1!-!x2!=?) else (goto loop)
   )
set/p da=请输入答案:
if "!xx!"=="!da!" (echo,正确) else (echo,错误,正确答案是:!xx!)
echo,&goto loopCOPY

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

TOP

基本符合版主的要求,不过代码太长了,不知道哪里需要改进的地方,还请大家多多指教!
@echo off
setlocal enabledelayedexpansion
set /p a=请输入指定范围数:
set /a a1=%a%+1
:a
cls
set /a t1=%random%%% %a1%,t2=%random%%% %a1%
set /a y1=%a1%-%t1%-1,y2=%a1%-%t2%-1
if %y1% geq %y2% (
if %y2% geq 1 (set /a the=%y1%+%y2%
if !the! gtr %a% (
set /a daan=%y1%-%y2%&echo %y1%-%y2%=?&goto b)))
set /a r=%random%%% 2+1
if %r%==1 (set n=2) else (set n=1)
set /a wet=!y%r%!+!y%n%!
if %wet% gtr %a% (set /a daan=%y2%-%y1%&echo %y2%-%y1%=?) else (
set /a daan=!y%r%!+!y%n%!&echo !y%r%!+!y%n%!=?)
:b
set /p g=请输入正确答案:
if "%g%"=="%daan%" (echo 正确) else (echo 错误,正确答案为%daan%)
pause
goto aCOPY

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

TOP

贴一个没有循环和选择结构的顺序性解法
常规之外略作创新
没有刻意处理诸如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 loopCOPY
天的白色影子

TOP

返回列表