用HTML5+JavaScript实现小学生整数乘除法演算式

用HTML5+JavaScript实现小学生整数乘除法演算式

用HTML5+JavaScript实现小学生整数乘法和整数除法演算式,比较直观,以便小学生理解学习整数乘法和整数除法演算式。

整数乘法竖式演示

界面上有两个整数输入框,单击“计算”按钮,显示小学生整数演示竖式,效果图:

参考代码来源https://yss5678.blog.csdn.net/article/details/140970988略作修改,源码如下:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>整数乘法算式</title>
    <style>
   /* 页面整体样式 */
        body {
            background-color: #4682B4;
            color: #dbc5c5;
            font-family: 'Courier New', Courier, monospace;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 18px;
            margin: 0;
        }

        /* 容器样式 */
        .container {
            text-align: center;
            width: 40%;
        }

        /* 输入框样式 */
        input[type="number"] {
            font-family: 'Courier New', Courier, monospace;
            font-size: 30px;
            width: 98%;
            padding: 10px;
            margin: 10px 10px;
            background-color: rgb(255, 255, 255);
            border: none;
            border-radius: 5px;
            box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
            text-align: right;
            letter-spacing: 10px;
        }

        /* 结果样式 */
        .result {
            font-family: 'Courier New', Courier, monospace;
            margin-top: 20px;
            padding: 10px;
            font-size: 18px;
            text-align: right;
            letter-spacing: 10px;
        }

        /* 按钮样式 */
        button {
            font-size: 24px;
            background-color: #98FB98;
            color:#4682B4
            padding: 10px 50px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }

        /* 按钮悬停样式 */
        button:hover {
            background-color: #45a049;
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>整数乘法算式</h1>
        <input type="number" id="factor1" placeholder="输入因数">
        <input type="number" id="factor2" placeholder="输入因数">
        <button onclick="calculate()">计算</button>
        <div class="result" id="result"></div>
    </div>

    <script>
        function calculate() {
            // 获取用户输入的第一个因数
            let factor1 = document.getElementById('factor1').value;
            // 获取用户输入的第二个因数
            let factor2 = document.getElementById('factor2').value;

            if (!factor1 || !factor2) {
                alert('请输入两个因数!');
                return;
            }

            // 获取用于显示结果的元素
            let resultElement = document.getElementById('result');
            // 清空结果
            resultElement.textContent = '';
            // 调用乘法计算函数
            let result = multiply(factor1, factor2);
            // 显示结果
            resultElement.innerHTML = result;
        }

        function multiply(factor1, factor2) {
            // 初始化结果数组,用于存储每一行的内容
            let lines = [];
            // 获取第一个因数的长度
            let len1 = factor1.toString().length;
            // 获取第二个因数的长度
            let len2 = factor2.toString().length;
            // 初始化进位值
            let carry = 0;
            // 初始化单个乘积
            let product = 0;

            lines.push(`<p>${factor1}</p>`);
            let nbsp = '&nbsp;';
            nbsp = nbsp.repeat(Math.abs(len2 - len1));
            lines.push(`<p>x${nbsp + factor2}</p>`);
            lines.push('<hr>');
            // 竖式计算
            for (let j = len2 - 1; j >= 0; j--) {
                let line = '';
                for (let i = len1 - 1; i >= 0; i--) {
                    // 计算单个数字的乘积加上进位值
                    product = (factor1.toString()[i] * 1) * (factor2.toString()[j] * 1) + carry;
                    // 更新进位值
                    carry = Math.floor(product / 10);
                    // 添加单个数字乘积的个位数到结果字符串
                    line = (product % 10) + line;
                }
                // 如果还有进位,则添加到结果字符串
                if (carry > 0) {
                    line = carry + line;
                    carry = 0;
                }
                // 添加空格以对齐
                line = line + '0'.repeat(len2 - 1 - j);
                // 添加这一行到结果数组
                if (!isAllZeros(line)) {
                    lines.push(`<p>${line}</p>`);
                }
                // 如果不是第二个因数的最后一列,则添加分隔线
                // if (j > 0) {
                //     lines.push('<hr>');
                // }
            }

            // 添加最终的分隔线
            lines.push('<hr>');
            // 添加最终结果
            lines.push(`<p>${(factor1 * factor2).toString()}</p>`);

            // 返回结果数组
            return lines.join('');
        }
        function isAllZeros(str) {
            // 使用 every 方法检查字符串中的每一个字符是否都是 "0"
            return str.split('').every(char => char === '0');
        }
    </script>
</body>

</html>

整数整除竖式教学演示

界面上有两个整数输入框每次单击“计算”按钮,要显示小学数学整数整除竖式效果。效果图:

参考代码来源https://blog.csdn.net/qq_40071585/article/details/140971020,略作修改,源码如下:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>整数除法算式</title>
    <style>
        /* 页面整体样式 */
        body {
            background-color: #4682B4;
            color: #dbc5c5;
            font-family: 'Courier New', Courier, monospace;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 18px;
            margin: 0;
        }

        /* 容器样式 */
        .container {
            text-align: center;
            width: 40%;
        }

        /* 输入框样式 */
        input[type="number"] {
            font-family: 'Courier New', Courier, monospace;
            font-size: 30px;
            width: 98%;
            padding: 10px;
            margin: 10px 10px;
            background-color: rgb(255, 255, 255);
            border: none;
            border-radius: 5px;
            box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
            text-align: right;
            letter-spacing: 10px;
        }

        /* 结果样式 */
        .result {
            font-family: 'Courier New', Courier, monospace;
            margin-top: 20px;
            padding: 10px;
            font-size: 18px;
            text-align: right;
            letter-spacing: 10px;
        }

        /* 按钮样式 */
        button {
            font-size: 24px;
            background-color: #98FB98;
            color:#4682B4
            padding: 10px 50px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }

        /* 按钮悬停样式 */
        button:hover {
            background-color: #45a049;
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>整数除法算式</h1>
        <form id="calculatorForm">
            <!-- 被除数输入框 -->
            <input type="number" id="dividend" placeholder="被除数">
            <!-- 除数输入框 -->
            <input type="number" id="divisor" placeholder="除数">
            <!-- 计算按钮 -->
            <button type="button" onclick="calculate()">计算</button>
        </form>
        <!-- 结果展示区域 -->
        <div id="result" class="result"></div>
    </div>

    <script>
        /**
         * 计算除法竖式
         */
        function calculate() {
            // 获取输入值
            const dividend = parseInt(document.getElementById('dividend').value);
            const divisor = parseInt(document.getElementById('divisor').value);

            // 清空之前的结果
            document.getElementById('result').innerHTML = '';

            // 校验输入
            if (isNaN(dividend) || isNaN(divisor) || divisor === 0) {
                alert("请输入有效的数字且除数不能为0");
                return;
            }

            // 初始化变量
            let quotient = Math.floor(dividend / divisor); // 商
            let remainder = dividend % divisor; // 余数

            // 结果的HTML字符串
            let resultHtml = '';
            let resultquotient = '';

            // 转换被除数和除数为字符串
            let strdividend = dividend.toString();
            let strdivisor = divisor.toString();

            // 获取被除数和除数的长度
            let len1 = strdividend.length;
            let len2 = strdivisor.length;

            // 初始化临时变量
            let tempquotient = 0; // 临时商
            let subtrahend = 0; // 临时减数

            // 构建结果HTML
            resultHtml += '<hr>';
            resultHtml += `<p>${strdivisor}/${strdividend}</p>`;
            let strspace = '';
            let tempDividend = ""; // 临时被除数子串
            let numtempDividend = 0; // 临时被除数数值

            // 开始计算
            let start = false;
            for (var i = len2 - 1; i <= len1 - 1; i++) {
                // 更新临时被除数
                if (i == len2 - 1) {
                    tempDividend = dividend.toString().substring(0, len2);
                } else {
                    tempDividend += dividend.toString().substring(i, i + 1);
                }
                numtempDividend = parseInt(tempDividend);

                // 计算临时商和减数
                if (numtempDividend >= divisor) {
                    tempquotient = Math.floor(numtempDividend / divisor);
                    subtrahend = divisor * tempquotient;
                    tempDividend = (numtempDividend - subtrahend).toString();
                    resultquotient += tempquotient.toString();
                    if (!start) {
                        start = true;
                    }
                } else {
                    tempquotient = 0;
                    subtrahend = 0;
                    resultquotient += '0';
                }

                // 构建每一步的结果HTML
                if (start || i == len1 - 1) {
                    strspace = '&nbsp;'.repeat(len1 - 1 - i);
                    resultHtml += `<p>${numtempDividend}${strspace}</p>`;
                    resultHtml += `<p>-${subtrahend}${strspace}</p><hr>`;
                }
            }

            // 最终结果
            resultquotient = resultquotient.replace(/^0+/, '') || '0';
            resultHtml = `<p>${resultquotient}<p>` + resultHtml;
            resultHtml += `<p>商: ${quotient}, 余数: ${remainder}</p>`;

            // 显示结果
            document.getElementById('result').innerHTML = resultHtml;
        }
    </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值