<?php
function generateMultiplicationOrDivision()
{
$num1 = rand(1, 9);
$num2 = rand(1, 9);
$operation = rand(0, 1) === 0? '×' : '÷';
if ($operation === '÷') {
if ($num1 % $num2!== 0) {
$num1 = $num2 * rand(1, 9);
}
$answer = (int)($num1 / $num2);
} else {
$answer = $num1 * $num2;
}
return ["question" => "$num1 $operation $num2 =", "answer" => $answer];
}
function generateMixedOperation()
{
$num1 = rand(1, 9);
$num2 = rand(1, 9);
$num3 = rand(1, 9);
$operator1 = ["+", "-", "×"][rand(0, 2)];
$operator2 = ["+", "-", "×"][rand(0, 2)];
$question = "$num1 $operator1 $num2 $operator2 $num3 =";
$answer = 0;
switch ($operator1) {
case '+':
switch ($operator2) {
case '+':
$answer = $num1 + $num2 + $num3;
break;
case '-':
$answer = $num1 + $num2 - $num3;
break;
case '×':
$answer = $num1 + $num2 * $num3;
break;
}
break;
case '-':
switch ($operator2) {
case '+':
$answer = $num1 - $num2 + $num3;
break;
case '-':
$answer = $num1 - $num2 - $num3;
break;
case '×':
$answer = $num1 - $num2 * $num3;
break;
}
break;
case '×':
switch ($operator2) {
case '+':
$answer = $num1 * $num2 + $num3;
break;
case '-':
$answer = $num1 * $num2 - $num3;
break;
case '×':
$answer = $num1 * $num2 * $num3;
break;
}
break;
}
return ["question" => $question, "answer" => $answer];
}
function generateParenthesesOperation()
{
$num1 = rand(1, 9);
$num2 = rand(1, 9);
$num3 = rand(1, 9);
$operator1 = ["+", "-", "×"][rand(0, 2)];
$operator2 = ["+", "-", "×"][rand(0, 2)];
$question = "($num1 $operator1 $num2) $operator2 $num3 =";
$answer = 0;
switch ($operator1) {
case '+':
switch ($operator2) {
case '+':
$answer = ($num1 + $num2) + $num3;
break;
case '-':
$answer = ($num1 + $num2) - $num3;
break;
case '×':
$answer = ($num1 + $num2) * $num3;
break;
}
break;
case '-':
switch ($operator2) {
case '+':
$answer = ($num1 - $num2) + $num3;
break;
case '-':
$answer = ($num1 - $num2) - $num3;
break;
case '×':
$answer = ($num1 - $num2) * $num3;
break;
}
break;
case '×':
switch ($operator2) {
case '+':
$answer = ($num1 * $num2) + $num3;
break;
case '-':
$answer = ($num1 * $num2) - $num3;
break;
case '×':
$answer = ($num1 * $num2) * $num3;
break;
}
break;
}
return ["question" => $question, "answer" => $answer];
}
function generateTestPaper()
{
$html = '<html><head><meta charset="UTF-8"><title>二年级(上)口算练习</title>';
$html.= '<style>body{font-family: Arial, sans-serif;}.question-section{margin-bottom: 20px;}</style>';
$html.= '</head><body>';
$html.= '<h1>二年级(上)口算练习</h1>';
$html.= '<p>班级:______ 姓名:______ 学号:______</p>';
$html.= '<div class="question-section">';
$html.= '<h2>1. 乘法与除法混合</h2>';
for ($i = 0; $i < 20; $i++) {
$questionData = generateMultiplicationOrDivision();
$html.= '<p>'. $questionData['question']. '</p>';
}
$html.= '</div>';
$html.= '<div class="question-section">';
$html.= '<h2>2. 混合运算</h2>';
for ($i = 0; $i < 10; $i++) {
$questionData = generateMixedOperation();
$html.= '<p>'. $questionData['question']. '</p>';
}
$html.= '</div>';
$html.= '<div class="question-section">';
$html.= '<h2>3. 带括号运算</h2>';
for ($i = 0; $i < 10; $i++) {
$questionData = generateParenthesesOperation();
$html.= '<p>'. $questionData['question']. '</p>';
}
$html.= '</div>';
$html.= '</body></html>';
return $html;
}
echo generateTestPaper();
?>