随手php,在线军事教程训练题

下午结束了军事理论考试,大概有接近一半的题目是昨晚训练过的吧,有印象就直接背答案。没印象的就悲剧了,只能瞎猜,例如试卷的第二题是

2) 我国的《国防教育法》一共有——篇——条。

A、4篇    38条      B、6篇    38条    C、4篇    28条    D、7篇    28条

这题就不会做,瞎猜了,而且我还猜错了。。。

昨晚从同学里弄来的一套选择题和判断题,合计190多道,花了一点时间用php做成了网页给自己测试:

点击此链接开始  http://xiaoxia.org/sub/jstest

 

原来的文本内容大概如下:

15.国防是随着( B)的出现而产生的。 A 阶级 B 国家 C 军队 D 社会
16.“天下虽安,忘战必危”出自于(C )。
A 《孙子兵法》 B《孙膑兵法》 C《司马法·仁本》 D 《战争论》
17.下列不属于国防要素内容的是(D ) A政治要素 B 经济要素 C文化要素 D历史要素
18.下列哪个朝代对长城陆续加工增修并逐渐改建成最接近今天的面貌。(B )
A 宋朝 B 明朝 C 唐朝 D 清朝
19.下列哪一项不属于我国国防史的启示。(A )
A 只有军队强大才能有强大的国防 B 只有经济强盛才能有强大的国防
C 只有政治昌明才能有巩固的国防 D 只有民族团结和统一才能有坚强的国防  

 

 

也有可能是选择题。另外,文本里还混合有简答题。因此,必须设计一个算法,把里面的选择题和判断题提取出来,其它的全部忽略掉。随手写了一个马马虎虎的状态机,用来满足自己做题训练的需求!!!因为是临时使用的,写的不好莫见怪!我只想能用就行。

 

代码:

<?php
$c = file_get_contents("js.txt");
$len = strlen($c);


$st = "start";
$title =
$ansA =
$ansB =
$ansC =
$ansD =
$ref = "";
$tf = false;

$count = 1;
if(isset($_GET['index']))
	$index = $_GET['index']*1;
else
	$index = 1;
echo '<html><head><title>军事</title><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body>';
function addProblem()
{
	global $index, $count, $ansA, $ansB, $ansC, $ansD, $ref, $tf, $title;
	if( $index == $count ){
		if($tf){
			echo "<p>判断:</p><p>{$index}. {$title}</p><p><a href=\"javascript:sel('T');\"> 正确 </a></p><a href=\"javascript:sel('F');\"> 错误 </a></p>";
		}else{
			echo "<p>选择:</p><p>{$index}. {$title}</p><p><a href=\"javascript:sel('A');\">A {$ansA} </a>
			</p><p><a href=\"javascript:sel('B');\">B {$ansB}  </a></p>
			<p><a href=\"javascript:sel('C');\">C {$ansC}  </a></p>
			<p><a href=\"javascript:sel('D');\">D {$ansD}  </a></p>";
		}
		echo '<p><div id="result"></div></body></html>
		<script type="text/javascript">
			function sel(ans){
				if(ans=="'.$ref.'"){
					document.getElementById("result").innerHTML = \'<a href="?index='.($index+1).'"><font color="green">下一题</font></a>\';
				}else{
					document.getElementById("result").innerHTML = \'<font color="red">您选错了!</font>\';
				}
			}
		</script>
		';
		die("");
	}
	$count ++;
	$title = "";
	$ref = "";
	$ansA = "";
	$ansB = "";
	$ansC = "";
}

for($i=0; $i<$len; $i++ ){
	$ch = $c[$i];
	if($ch==' '||$ch=="\r"||$ch=="\n"){
		$b = true;
		$last = $ch;
		 continue;
	}
	switch($st){
	case "start":
		if($ch=='.'||$ch=='、'){
			$st = "title";
		}
		break;
	case "title":
		if($ch=='('){
			$title .= '( ';
			$st = "ref";
		}else if ($ch==')'){
			$st = "start";
			$title = "";
		}else{
			$title .= $ch;
		}
		break;
	case "ref":
		if($ch=='A'||$ch=='B'||$ch=='C'||$ch=='D'){
			$ref = $ch;
		}else if( $ch==')'  ){
			$title .= ' )';
			if($tf==true){
				$st = "start";
				addProblem();
				$tf = false;
			}else
				$st = "title2";
		}else if( $ch=='T' || $ch=='F' ){
			$ref = $ch;
			$tf = true;
		}else{
			$st = "start";
			$title = "";
			$ref = "";
		}
		break;
	case "title2":
		if($b && $ch=='A'){
			$st = "ansA";
		}else{
			$title .= $ch;
		}
		break;
	case "ansA":
		if($b && $ch=='B'){
			$st = "ansB";
		}else{
			$ansA .= $ch;
		}
		break;
	case "ansB":
		if($b && $ch=='C'){
			$st = "ansC";
		}else{
			$ansB .= $ch;
		}
		break;
	case "ansC":
		if($b && $ch=='D'){
			$st = "ansD";
		}else if($b && ($last=="\n"||$last=="\r") ){
			$st = "start";
			addProblem();
		}else{
			$ansC .= $ch;
		}
		break;
	case "ansD":
		if($b && $ansD!=''){
			$st = "start";
			addProblem();
		}else{
			$ansD .= $ch;
		}
		break;

	}
	$b = false;

}
echo strlen($c);
?>


另外,php的命令行挺好用的,方便调试脚本,直接在终端输入:

 

php   -f   test.php   

 

来执行一个脚本。

随手php,在线军事教程训练题》有28个想法

  1. cbkid

    仰天大笑出门去,我辈岂是蓬蒿人。
    别人笑我太疯癫,我笑别人看不穿。
    宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。

    回复
  2. Xiaoxia

    @令行CMD:
    我写日志没错吧!也没说过自己有多NB,分享是我的自由。
    我承认我制造了不少垃圾,望见谅^_^

    回复
  3. airhh

    2L将很多国人的心理诠释的淋漓尽致。。
    你可以说别人,但是你一定要比人强,我替你父母感到悲哀。。。

    回复
  4. whitefirer

    小虾,第六题AB一样,虽然都是错的。。。还好以后都不用考这个了- -今天我刚考了天朝所特有的一科。。。我能做出来我自豪- -米国可能还做不出呢

    回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据