Xiaoxia[PG]

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

Internet、我的代码28 条评论

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

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

来执行一个脚本。

28 条评论

  1. 沙发我的~~~

  2. 楼主NB啥呢 一看就是垃圾 会点编程 就变态 国内的悲哀

  3. 楼上的,东方学生和西方学生的不同被你诠释得淋漓尽致!

  4. XiaoXia,不是说你不是中国人。

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

  6. 不明白哪里惹到002F的童鞋了,他在喷什么?

    h҉a҉r҉m҉o҉n҉i҉z҉e҉

  7. 用不着理他们,一看就是嫉妒。见不得别人比自己强。

  8. 咋弹出个网站? 北京指南针科技发展股份有限公司

  9. to 令行CMD : 11岁?

  10. 小汪`仅此而已`````````
    其实小虾你完全可以设定个审核````
    对于喷子直接无视`

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

  12. 无视2L,支持xiaoxia,写日志只是记录自己的成长和分享经验。不喜欢的可以不看!

  13. 小虾触痛了别人幼小的心灵。伤得别人脑袋抽风。

  14. 支持小虾,放假没?

  15. @xibeimu:没,还有一科考试。什么时候放假还不知道。估计7月中旬之前会放

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

  17. 呵呵,路过。

    军事理论考试好像大一 就考了吧- -,放假就好了,小虾,嘻嘻

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

  19. 考军事还好,考毛概确实接受不了。我看没有哪个同学不是抱着应付的心态的。

  20. 支持小虾!

  21. 最近出了不少赤裸裸的嫉妒的人,非常明显~~~

  22. 莫非你是中大的?

  23. 你的确编程很有经验,厉害!
    不过,我从来不喜欢重复制造轮子.(Don't recreate the wheels).
    我的个人主页:http://cnjdeng.appspot.com

  24. 造轮子?? 我连轮子都不会造。。。
    暑假继续发奋学习!!!

  25. @James: 我有一个同学在中大读软件,哈哈~

  26. 哇!我要PHP,我要PHP!!!

  27. PHP很容易入门!

  28. @XiaoXia:关于造车轮,有位师兄这么说……
    http://www.cppblog.com/vczh/archive/2010/07/01/119083.html

发表评论

评论会经过自动审核,链接请勿超过 3 个。