Board logo

标题: [数值计算] 批处理如何把算术题输出到文本? [打印本页]

作者: 6589600    时间: 2008-2-1 16:26     标题: 批处理如何把算术题输出到文本?

想给孩子出几道算术题,网上找不上合适的,辛苦大家帮帮兄弟
主要要求要把题输出到文本以便打印,不想让孩子用电脑做题。光玩不好好做题。
比如20道2位数的加减法 20+15=  88-12= ...
比如20道2位数的乘除法:同上
加减法和乘除法分开不要混出
先谢谢了 !!
作者: foxJL    时间: 2008-2-1 18:46

看看这样行吗?
  1. @echo off
  2. for %%a in (a,b) do (for /l %%i in (1,1,20) do (call :x %%a))
  3. pause
  4. :x
  5. set /a random1=%random%%%99+1,random2=%random%%%99+1
  6. set /a sign=random1%%2
  7. if "%1"=="a" (
  8. call set sign=%%sign:1=+%%
  9. call set sign=%%sign:0=-%%
  10. call echo %random1% %%sign%% %random2%=>>加减.txt
  11. ) else (
  12. call set sign=%%sign:1=×%%
  13. call set sign=%%sign:0=÷%%
  14. call echo %random1% %%sign%% %random2%=>>乘除.txt
  15. )
  16. goto :eof
复制代码

作者: 6589600    时间: 2008-2-1 22:42

谢谢foxJL,好用.
有个小问题
能不能不让加减法出现负数(8-66= )
和乘除法最好整除不出现小数,孩子接受不了,呵呵.
作者: foxJL    时间: 2008-2-1 22:47

呵呵..你小孩多大呀.
你说的可以办到,我再修改一下.
作者: 6589600    时间: 2008-2-1 23:23

7岁,幼儿园的,下学就和我抢电脑.有点烦.呵呵
作者: foxJL    时间: 2008-2-2 00:09

哈哈..还小.别管太紧了,小孩子让他活泼些,将来走进社会才能随机应变.
  1. @echo off&setlocal EnableDelayedExpansion
  2. ::题目数,可以自已设置
  3. set num=20
  4. :x
  5. set /a random1=%random%%%99+1,random2=%random%%%99+1
  6. set /a sign=random1%%2
  7. if %random1% geq %random2% (
  8. call set sign=%%sign:1=+%%
  9. call set sign=%%sign:0=-%%
  10. call echo %random1% %%sign%% %random2%=>>加减.txt
  11. set /a n+=1
  12. )
  13. if !n! equ %num% (goto y) else (goto x)
  14. :y
  15. set /a random1=%random%%%99+1,random2=%random%%%99+1
  16. set /a random2=%random%%%99+1
  17. set /a sign=random2%%2
  18. for /l %%i in (5,1,50) do (
  19. set /a f=%random1% %% %%i
  20. if !f! equ 0 (call :z %%i))
  21. :z
  22. call set sign=%%sign:1=×%%
  23. call set sign=%%sign:0=÷%%
  24. call echo %random1% %%sign%% %1=>>乘除.txt
  25. set /a ns+=1
  26. if !ns! equ %num% (exit) else (goto y)
复制代码

作者: 6589600    时间: 2008-2-2 16:04

很实用的再次感谢!孩子自己有的干了。
作者: qiang8484    时间: 2008-2-19 09:54     标题: 求教

版主。能教教我批处理吗
QQ402998260
作者: foxJL    时间: 2008-2-19 17:32

论坛是非常好的学习环境,在这里潜水一段时间保证有所收获.
多阅读代码,自己多练习,学会批处理是很快的.
如果有疑问可以发贴提问,版主及会员都非常乐意回答.
作者: 6589600    时间: 2008-2-20 19:14

@echo off
:: 99 乘法表
setlocal enabledelayedexpansion
for /l %%a in (1,1,9) do (
        for /l %%b in (1,1,%%a) do (
        set /a i+=1
        set /a ans=%%a*%%b
        set ans=%%b×%%a=!ans!  
        set res=!res! !ans:~0,6!
        if !i! equ %%a echo!res!&set res=& set i=0
)
)

pause
怎么输出到文本?
作者: foxJL    时间: 2008-2-20 21:09

  1. @echo off
  2. for /l %%a in (1,1,9) do (
  3. for /l %%b in (1,1,%%a) do (
  4.   set /a var=%%a * %%b
  5.   (call set/p=%%a×%%b=%%var%%  <nul)>>99乘法表.txt
  6.   if %%a==%%b echo.>>99乘法表.txt
  7. )
  8. )
  9. pause>nul
复制代码

[ 本帖最后由 foxJL 于 2008-2-20 21:10 编辑 ]
作者: fml520    时间: 2008-4-2 13:14

@echo off
for /l %%a in (1,1,9) do (
for /l %%b in (1,1,%%a) do (
  set /a var=%%b * %%a
  (call set/p=%%b×%%a=%%var%%  <nul)>>99乘法表.txt
  if %%a==%%b echo.>>99乘法表.txt
)
)
pause
作者: youxi01    时间: 2008-4-2 17:44

提两点建议:
1、将代码用[ code ]和[  /code ]括起来,方便阅读和复制
2、代码稍做修改,可以避开if的检测
  1. @echo off
  2. for /l %%a in (1,1,9) do (
  3. for /l %%b in (1,1,%%a) do (
  4.   set /a var=%%b * %%a
  5.   call set/p=%%b×%%a=%%var%%  <nul
  6. )
  7. echo.
  8. )
  9. pause
复制代码

作者: 随风    时间: 2008-4-7 23:12

减法不出现负数
除法不出现小数。
:
  1. @echo off&setlocal EnableDelayedExpansion
  2. ::题目数,可以自已设置
  3. set nnn=20
  4. :: 乘除
  5. for /l %%a in (1 1 %nnn%) do (
  6.    set /a n1=!random!%%99+1,n2=!random!%%99+1,f=n1%%2
  7.    set f=!f:0=÷!&set f=!f:1=×!
  8.    if "!f!"=="÷" call :cu
  9.    set n1= !n1!&set "n2= !n2!"
  10.    >>乘除.txt echo !n1:~-2! !f! !n2:~-2! =
  11. )
  12. :: 加减
  13. for /l %%a in (1 1 %nnn%) do (
  14.    set /a n1=!random!%%99+1,n2=!random!%%99+1,f=n1%%2
  15.    set f=!f:0=+!&set f=!f:1=-!
  16.    if "!f!"=="-" set /a n2=!random!%%!n1!+1
  17.    set n1= !n1!&set "n2= !n2!"
  18.    >>加减.txt echo !n1:~-2! !f! !n2:~-2! =
  19. )
  20. pause&exit
  21. :cu
  22.   set /a n1=!random!%%50+2,n2=!random!%%98+2,c=n1*n2
  23.   if !c! geq 100 goto cu
  24.   if !c! equ !n2! (set n2=!c!) else (set n1=!c!)
  25. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-4-7 23:38 编辑 ]




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2