编辑代码

<?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;
}

// 输出试卷HTML内容
echo generateTestPaper();
?>