利用PHP編程,編三年級暑假數(shù)學計算題
【作者:一粟】
題
設計每天6種題型各2道題,共59天。
1.三位數(shù)除以一位數(shù),兩位數(shù)乘兩位數(shù)或三位數(shù)乘一位數(shù),這2種題型,復習三年級學的豎式計算。
2.三位數(shù)(或一位小數(shù)、兩位小數(shù))連加/連減(其中兩個數(shù)可以湊整),兩位數(shù)乘一位數(shù)再乘一位數(shù),兩位數(shù)乘兩位數(shù)加上兩位數(shù)乘兩位數(shù),這4種題型滲透運算率。
編程思考
這道題,要先設置好每種題型的題,每個數(shù)字的取值范圍
代碼
<?php
date_default_timezone_set('Etc/GMT-8');//設置時區(qū)
$r1=mktime(0,0,0,7,2,2023);//第1次日期,時間戳,2023年7月2日
for($k=0;$k<59;$k++){//59天
//6種類型的運算,生成12道題 開始
$ss = array();//算式數(shù)組
$s1 = rand(1,9)*100;
$s2 = rand(10,$s1);
$sa = array($s2,rand(50,999),$s1-$s2);
$xz = pow(10,rand(0,-2));
$ss[] = $sa[0]*$xz."+".$sa[1]*$xz."+".$sa[2]*$xz;
$ss[] = $sa[0]*$xz."+".$sa[2]*$xz."+".$sa[1]*$xz;
$s1 = rand(49,99)*10;
$s2 = rand(20,$s1/10)*10;
$s4 = rand(20,$s2);
$sa = array(rand($s1,999),$s4,$s2-$s4);
$xz = pow(10,rand(0,-2));
$ss[] = $sa[0]*$xz."-".$sa[1]*$xz."-".$sa[2]*$xz;
$ss[] = $sa[0]*$xz."-(".$sa[1]*$xz."+".$sa[2]*$xz.")";
$s2 = rand(2,9);
if($s2>8) $s1 = rand(49,101)*$s2;
else if($s2>5) $s1 = rand(49,141)*$s2;
else $s1 = rand(101,199)*$s2;
$ss[] = $s1."÷".$s2."=";
$s2 = rand(2,9);
if($s2>8) $s1 = rand(49*$s2,999);
else if($s2>5) $s1 = rand(101*$s2,141);
else $s1 = rand(101*$s2,199);
$ss[] = $s1."÷".$s2."=";
$sa = array(rand(11,99),rand(2,9),rand(2,9));
$ss[] = $sa[0]."×".$sa[1]."×".$sa[2];
sort($sa);
$ss[] = $sa[0]."×".$sa[1]."×".$sa[2];
$s1 = rand(11,99);
$s2 = rand(2,9)*10;
$s3 = rand(10,$s2-10);
$xz = rand(1,2);//選擇
if($xz == 1) $ss[] = $s1."×".$s3."+".$s1."×".($s2-$s3);
else $ss[] = $s3."×".$s1."+".($s2-$s3)."×".$s1;
if($xz == 1) $ss[] = $s1."×(".$s3."+".($s2-$s3).")";
else $ss[] = "(".$s3."+".($s2-$s3).")×".$s1;
$sa = array(rand(11,99),rand(101,999),rand(2,9),rand(10,99));
$xz = rand(1,2);//選擇
if($xz == 1) $ss[] = $sa[0]."×".$sa[3];else $ss[] = $sa[1]."×".$sa[2];
$sa = array(rand(11,99),rand(101,999),rand(2,9),rand(10,99));
$xz = rand(1,2);//選擇
if($xz == 1) $ss[] = $sa[0]."×".$sa[3];else $ss[] = $sa[1]."×".$sa[2];
//6種類型的運算,生成12道題 結束
echo "<table><tr><td colspan='4'>";
echo '計算天天練';
echo ' ';
echo date("n月j日",strtotime($k.'day',$r1));
echo ' ';
echo '姓名:';
echo '____________';
echo ' ';
echo '得分:';
echo '____________';
echo "</td></tr><tr><td>";
for($i=0;$i<12;$i++){//每天12題
echo "(".($i+1).") ".$ss[$i];
if((($i+1) % 4) == 0) echo "</td></tr><tr><td>";else echo "</td><td>";
}
echo "</td></tr></table>";
}
?>
代碼優(yōu)化設想
以上代碼,對每天12道題出現(xiàn)的順序沒有進行處理??梢宰屆刻?2道題以隨機的順序出現(xiàn)(有需要對比的題,要連續(xù)出現(xiàn))。
設計初衷
本來的設想是每次呈現(xiàn)1天的題,作為一個在線網(wǎng)頁,發(fā)布到個人網(wǎng)站,供學生每天在線答題、實時判分。去年也試著買了一年的域名,做了二年級暑假計算題,給本班學生使用了。但后來對備案要求嚴格了,個人網(wǎng)站需要備案,加上對域名、主機等管理不熟悉,只好擱淺。
現(xiàn)實做法
使用這個程序,一次生成59天的練習,復制到excel表格中,發(fā)給家長,讓學生抄寫或打印下來,在紙上進行練習。

本地網(wǎng)頁,生成題目

題目復制到Excel中,排好版,便于家長直接打印