10以内加减法生成器,一年级数学练习题

写这个加减法生成器的原因,是同事的孩子上一年级,想在家让孩子多练习一些加减法,她自己又不愿意费脑子出题,所以就问我能不能用程序生成100道。每次100道。我觉得符合她要求最简单的语言就是web前段,html,css,js,于是我就试着写了一下,还不错。打开即用。不用联网,也不用安装,就一个html文件。于是分享给大家。

效果图:

使用方式:

把下面代码复制到一个html文件里。用浏览器打开文件就行了。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>10以内加减法生成器</title>
    <style>
        *{margin:0;padding:0;box-sizing:border-box;}
        body {
            margin: 20px;
			font-size:20px;
        }
		#container{width:1000px;margin:auto;}
        #questions {
			margin-top:10px;
			overflow:hidden;
			
        }
		.suanshu_span{float:left;display:inline-block;width:20%;font-size:24px;
			padding:6px 5px;
		}
		.form-control {
			display: inline-block;
			width: 100px;
			height: 34px;
			padding: 6px 12px;
			font-size: 14px;
			line-height: 1.42857143;
			color: #555;
			background-color: #fff;
			background-image: none;
			border: 1px solid #ccc;
		}
		.btn {
			display: inline-block;
			outline:none;margin-bottom: 0;font-weight: 400;text-align: center;white-space: nowrap;vertical-align: middle;
			cursor: pointer;border: 1px solid transparent;
			padding: 6px 12px;font-size: 14px;line-height: 1.42857143;user-select: none;background-color:#449d44;color:white;
		}
		#well{padding:10px;background-color:#eee;}
    </style>
</head>
<body>
    <section id="container">
    <h1 style="text-align:center;padding:20px;">加减法生成器</h1>
	<div id="well">
	<span style="display:none;">起始数字:<input type="number" id="start_num" value="1" class="form-control"/>
	结束数字:<input type="number" id="end_num" value="10"  class="form-control"/>
	数量:<input type="number" id="count" value="100"  class="form-control"/>
	</span>
	<button type="button" onclick="make()" class="btn ">生成</button>
	<button type="button" onclick="show_result()" class="btn " style="background-color:#31b0d5">显示结果</button>
	<button type="button" onclick="hidde_result()" class="btn " style="background-color:#286090">隐藏结果</button>
	</div>
    <div id="questions"></div>
</section>

    <script>
	function show_result(){
			elements=document.getElementsByClassName('result');
			for(var i = 0; i < elements.length; i++) {
				elements[i].style.display = "inline-block";
			}
		}
		function hidde_result(){
			elements=document.getElementsByClassName('result');
			for(var i = 0; i < elements.length; i++) {
				elements[i].style.display = "none";
			}
		}
		var  start_num=0;
		var  end_num=0;
		var  count=0;
		function make(){
			start_num=parseInt(document.getElementById('start_num').value);
			end_num=parseInt(document.getElementById('end_num').value);
			count=parseInt(document.getElementById('count').value);
			console.log(start_num,end_num,count)
			if(start_num.length==0 || end_num.length==0 || count.length==0 ){
				alert('三个值都必须输入');
				
			}else{
			//生成
				const questionsDiv = document.getElementById('questions');
				const questions = generateUniqueQuestions(count, end_num);
				questionsDiv.innerHTML = questions.join('');
			}
		}
		//默认调用
		document.addEventListener('DOMContentLoaded', () => {
            make()
        });
		
		
        function getRandomInt(max) {
            return Math.floor(Math.random() * (max-start_num))+start_num;
        }

        function generateUniqueQuestions(count, maxNum) {
            const questionsSet = new Set();
            let questions = [];

            while (questions.length < count) {
                const num1 = getRandomInt(maxNum + 1); // 包括maxNum本身
                const num2 = getRandomInt(maxNum + 1);
                const operation = Math.random() > 0.5 ? '+' : '-';
                let question;

                // 确保题目在有效范围内且不重复
                if ((operation === '+' && num1 + num2 <= maxNum) ||
                    (operation === '-' && num1 >= num2)) {
						let sum=0;
						if (operation === '+'){
							sum=num1+num2;
						}
						if (operation === '-'){
							sum=num1-num2;
						}
                    question ='<p class="suanshu_span">'+ `${num1} ${operation} ${num2} = `+'<b class="result">'+sum+'</b>' +'</p>';
                    if (!questionsSet.has(question)) {
                        questionsSet.add(question);
                        questions.push(question);
                    }
                }
            }

            return questions;
        }

       
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值