—恢复内容开始—

需求分析

  • 控制题目生成个数和题目范围
  • 运算符不超过3个
  • 题目不能重复
  • 支持一万道题目
  • 运算结果为分数
  • 在生成题目的同时,计算出所有题目的答案
  • 能判断答案的正误

功能分析

基本功能

  1. 根据输入的数据,获取运算式的题数和运算式数值的范围。运算式中的数值以及符号随机出现。实现基本的 +、-、*、/ 的计算。
  2. 有分数时,出现的分数都是真分数的形式,输入结果能用带分数进行计算。
  3. 对生成的运算式计算结果,并且能在最后对输入的值进行判断。

扩展功能

  1. 表达式不重复
  2. 结果最简,
  3. 算符不超过三个

设计实现

  1. 生成随机数和随机符号
    生成随机符号 sign()
    生成随机数 ranNum(),约分 Common()
  2. 生成运算式
    生成运算式 ranData(),
  3. 计算结果
    数组转化为字符串 ranChange()
    计算结果 ranRes()
    4.判断计算式重复
    判断函数 checkRepeat()

代码说明

HTML5 代码

    <div id="main">
        <label>请输入您要的范围(默认10)</label>
        <input type="number" id="cNum">
        <label>请输入您要的算式数(默认10)</label>
        <input type="number" id="nNum">
        <button id="button1">确认</button>
        <form id="myform">
            <div id="calm"></div>
            <button id="button2" style="display: none;">提交</button>
            <div id="grade" style="display:none;"></div>
        </form>
    </div>

js代码

        var div = document.getElementById('calm');
        var n = 0;
        var asd, nNum, cNum;
        var button1 = document.getElementById('button1');
        var button2 = document.getElementById('button2');
        var grade = document.getElementById("grade");

        var rpt = [];            // 定义变量存储运算数值(用于判重)
        var ret;            // 定义存储当前运算式
        var result = [];         // 定义变量存储结果
        var result1;        // 存储当前结果

        // 随机符号
        var sign = function(){
            var str = ['+','-','x','÷'];
            var a =Math.floor(Math.random()*4);
            return str[a];
        }

        var Common = function(a,b){
            var c = a % b;
            if (c == 0) {
                return b;
            } else {
                return Common(b, c);
            }
        }

        // 随机数据(分数和整数)
        var ranNum = function () {
            var a, b; 
            var math = [];
            var isFraction = Math.floor(Math.random() * 10);
            // 随机设置为分数
            if (isFraction > 5) {
                var divisor;
                a = Math.floor(Math.random() * cNum);
                b = Math.floor(Math.random() * cNum + 1);
                if (a == 0) {
                    math = 0;
                } else {
                    if (a < b) {
                        divisor = Common(b ,a);
                        math = "(" + (a/divisor) + "/" + (b/divisor) + ")";
                    } else 
版权声明:本文为jmulzy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jmulzy/p/9129903.html