0

如何使用 Javascript 向用户提出随机数学问题?如果用户回答正确,程序应该说正确!如果答案是错误的,程序应该会说 FALSE!我正在考虑使用 if 和 else 语句,但我只是不知道如何。另外,我正在考虑让程序向用户询问不同的随机数添加问题 5 次。最后,程序会给用户一个评分,例如 4/5 的问题回答正确!随机数范围:1-10

4

3 回答 3

2
  1. 在数组中定义可能的操作
  2. 随机采取这些操作之一
  3. 在某些限制之间随机取两个数字(例如:0-30)(检查不可接受的情况,例如 10 / 0)
  4. 将用户输入与计算结果进行比较。如果浮动,应用一个小的公差。

实施再简单不过了。

编辑提示:构造一个包含所有函数的对象并从中随机获取。这样可以避免 eval():

var operations = {
    '+': function (a, b) {return a + b;},
    '-': function (a, b) {return a - b;},
    '/': function (a, b) {return a / b;},
    'x': function (a, b) {return a * b;}
}
于 2013-03-10T11:41:15.320 回答
2
function ask() {
    var a = Math.floor(Math.random() * 10) + 1;
    var b = Math.floor(Math.random() * 10) + 1;
    var op = ["*", "+", "/", "-"][Math.floor(Math.random()*4)];
    return prompt("How much is " + a + " " + op + " " + b + "?") == eval( a + op + b);
}

var questions = [ask(), ask(), ask(), ask(), ask()],
    total = questions.length,
    correct = questions.filter(Boolean).length;

alert( "You got "+correct+"/"+total+" correctly");
于 2013-03-10T11:42:37.090 回答
0

如果您对添加感到满意:

function question() {
    this.a = Math.round(Math.random()*10);
    this.b = Math.round(Math.random()*10);
    this.result = this.a + this.b;
    this.checkResult = function(givenResultString) {
        return (""+result == givenResultString);
    }
}

然后,您可以每次创建一个问题:

var q = new question();

并检查答案:

var response = q.checkResult(someString) ? "Correct!" : "FALSE!";

剩下的工作是页面的机制,您可以为此使用表单和结果 div。

如果您想添加更多操作,您将选择一个随机运算符以及随机输入:

function question() {
    var add(x, y) { return x+y; };
    var subtract(x, y) { return x-y; };
    var multiply(x, y) { return x*y };
    var operators = [add, subtract, multiply];

    this.a = Math.round(Math.random()*10);
    this.b = Math.round(Math.random()*10);
    var operatorIdx = Math.min(Math.floor(Math.random()*4),3);
    this.operator = operators[operatorIdx];
    this.result = operator(this.a,this.b);
    this.checkResult = function(givenResultString) {
        return (""+this.result == givenResultString);
    }
}

我在此处省略了除法,因为其余部分假定为整数,并且您必须更改初始化以防止除法产生小数值。直接的方法是初始化一个乘法,然后交换结果和 a。

于 2013-03-10T11:41:29.833 回答