|
pykacha
初级用户
积分 156
发帖 73
注册 2008-5-9
状态 离线
|
『楼 主』:
如何实现打乱试题与答案简单考试代码?
具体问题是这样的:
在shiti.txt文件里有大概如下内容,总共有20题(答案间用Tab,-y表示此答案为正确答案,用来判断是否加分用的,出题时不显示出来):
////////////////////////////////////
1.你今年多大?
a.几岁 b.十几岁-y c.二十几岁
2.你学什么专业?
a.化学 b.物理 c.政治-y
3.你现在读几年级?
a.高一-y b.高二 c.高三
……
////////////////////////////////////
现在想用个P文件从中逐个调出所有试题,但顺序要打乱,可能首先调出的是第2或第3或第10题,接着调出第4什么的,乱序调出全部试题。
答案abc的出现也是随机打乱顺序的。如第2题出来时可能变会为:
8.你学什么专业?
a.物理 b.政治 c.化学
当输入b(不用回车)后就自动加1分,输入a或c就不加分但出示正确答案,然后到下一题,刚做过的题目可以不清屏,让它依然留在屏上。
全部完成时显示得分。
自己试了很长一段时间了,没办法。
希望大家帮帮忙。
(当然,如果可以记录下做错的题目,并提供选择,是否想把做错的题目再做一次,那效果就更完美了)
|
为自己是中国人而倍感骄傲 |
|
2008-11-22 18:19 |
|
|
zexuhu
初级用户
小兵
积分 66
发帖 30
注册 2008-1-13 来自 陕西
状态 离线
|
『第
2 楼』:
%RANDOM% 返回 0 到 32767 之间的任意十进制数字。
比如说想生成0-100的随机数就是对101取余数就可以了
格式是:set num=%RANDOM%%%100
|
QQ:349791091 |
|
2008-11-22 18:30 |
|
|
zexuhu
初级用户
小兵
积分 66
发帖 30
注册 2008-1-13 来自 陕西
状态 离线
|
『第
3 楼』:
if num==1 goto 第一题
if num==2 goto 第二题
if num==3 goto 第三题
..........
|
QQ:349791091 |
|
2008-11-22 18:33 |
|
|
pykacha
初级用户
积分 156
发帖 73
注册 2008-5-9
状态 离线
|
『第
4 楼』:
这些俺都知道,但整体实现起来不容易,请高手帮忙
|
为自己是中国人而倍感骄傲 |
|
2008-11-22 19:27 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
5 楼』:
试试这个如何?
@echo off&setlocal enabledelayedexpansion
set p=0&set #1=a&set #2=b&set #3=c
:lp
for /l %%i in (1 1 20) do set .!random!!random!!random!=%%i
for /f "tokens=1,2 delims==" %%i in ('set .') do set s=%%j !s!&set %%i=
for %%a in (%s%) do (
for /f "usebackq tokens=1-6 delims=. " %%i in ("shiti.txt") do (
if defined str (
for %%h in (%%i%%j %%k%%l %%m%%n) do (
set str1=%%h
if /i "!str1:~-2!"=="-y" (set !str1:~,1!=!str1:~1,-2!&set !str1:~1,-2!=-y) else set !str1:~,1!=!str1:~1!
)
call :next
)
if "%%a"=="%%i" set str=%%j
))
echo.&echo.你的得分 %p%
pause&exit
:next
echo !str!
for %%i in (a b c) do set .!random!!random!!random!=%%i
for /f "tokens=1,2 delims==" %%i in ('set .') do set var=%%j !var!&set %%i=
for %%i in (%var%) do call:lp1 %%i
set y=&set var=&set n=
:lp0
set num=&echo.!var1!
set/p num=输入序号(a b c):
if "%num%"=="" goto lp0
if defined !#%num%! (set !#%num%!=&set /a p+=1) else (
echo 答案错误 是否重新做一次?
set/p y=输入 y 重新做一次:
if /i "!y!"=="y" echo !str!&goto lp0
)
set str=&set var1=
goto :eof
:lp1
set/a n+=1
set #!#%n%!=!%1!
set var1=!var1! !#%n%!.!%1!
goto :eof [ Last edited by terse on 2008-11-24 at 17:51 ]
|
简单!简单!再简单! |
|
2008-11-22 21:54 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
6 楼』:
@echo Off & setlocal EnableDelayedExpansion
set /a Count=0, Score=0
For /l %%a in (1 1 3) do set "$!Random!!random!=%%a"
For /f "tokens=2 Delims==" %%a in ('set $') do Echo\& Call :Begin %%a
Echo\& Echo Score: %Score%, %Count% Questions.
Pause>nul & Exit /b
:Begin
Set/a n=0,m=0,y=0,Flag=0
For /F "Delims=" %%a in (shiti.txt) do (
set/a n += 1, m=n%%2
If !m! equ 1 (set "Ques=%%a" & set "Str=") Else (set /a c=0 & Call :Loop %%a)
)
For /F "tokens=1* delims==_" %%i in ('set _') do (
set /a y +=1
If !y! Equ %1 (
Set "Question=%%i!" & Echo !Question:*.=!
For %%d in (%%j) do (
set "element=%%d"
If /i "!Element:~-2!" equ "-Y" set "element=!element:~,-2!"
set /p=!element! <nul
)
Echo\& set /p Answer=Input your answer:
For %%d In (%%j) Do (set "Corr=%%d"
If /I "!Corr:~-2!" equ "-Y" (
set "Correct=%%d"
If /I "!Correct:~,1!" equ "!Answer!" (Set /a Count+=1, Score+=5, Flag=1 & Echo Correct...)
))
If "!Flag!" equ "0" Echo !Correct:~,-2!
))
:Loop
For %%I In (%*) Do set "Correct=%%I" & set "#!Random!!Random!=%%I"
For /f "Tokens=1* Delims=#=" %%d In ('set #') do (set "var=%%e" & set "Str=!Str!!var:~2![这里是TAB键]" & set "#%%d=")
For /f "Tokens=1-3 Delims=[这里是TAB键]" %%a in ("!Str!") Do set "_!Ques!=a:%%a[这里是TAB键]b:%%b[这里是TAB键]c:%%c"
Exit /b [ Last edited by pusofalse on 2008-11-22 at 23:02 ]
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-11-22 22:43 |
|
|
pykacha
初级用户
积分 156
发帖 73
注册 2008-5-9
状态 离线
|
『第
7 楼』:
谢谢terse与pusofalse的用心指导。
trese那个运行起来好像有些问题,pusofalse那个基本实现了功能,很简洁。
也谢谢其它人,谢谢slore。
虽然有点罗嗦,但我还是要说。谢谢了。
|
为自己是中国人而倍感骄傲 |
|
2008-11-24 17:36 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by pykacha at 2008-11-24 17:36:
谢谢terse与pusofalse的用心指导。
trese那个运行起来好像有些问题,pusofalse那个基本实现了功能,很简洁。
也谢谢其它人,谢谢slore。
虽然有点罗嗦,但我还是要说。谢谢了。 |
|
重新修改一下 错误有什么提示?
不过 不能输入字符后就跳过 还是要回车才到下一题
|
简单!简单!再简单! |
|
2008-11-24 17:54 |
|