1

所以我正在构建一个小型数学游戏,其中生成随机和,并在回答后添加到正确或错误的分数。进展顺利,我在某些事情上得到了一些帮助,并在此过程中学到了东西,但我遇到了另一个我无法弄清楚的问题。游戏在生成总和时在 +、-、* 和 / 运算符之间进行选择,并且 +、- 和 * 运行良好,但 / 经常需要程序不喜欢的十进制答案。我想尝试找出一种方法,使其不生成除以除以第一个数字时会导致十进制答案的数字。这是一些示例代码来清除我到目前为止的内容:

        var randomNum = new Random();
        num1 = randomNum.Next(0, 10);
        num2 = randomNum.Next(0, 10);
        char[] operators = { '+', '-', '*', '/' };
        char op = operators[randomNum.Next(operators.Length)];
        switch (op)
        {
            case '+':
                answer = num1 + num2;
                label1.Text = num1.ToString() + " + " + num2.ToString() + " = ";
                break;

            case '-':
                answer = num1 - num2;
                label1.Text = num1.ToString() + " - " + num2.ToString() + " = ";
                break;

            case '*':
                answer = num1 * num2;
                label1.Text = num1.ToString() + " * " + num2.ToString() + " = ";
                break;

            case '/':
                answer = num1 / num2;
                label1.Text = num1.ToString() + " / " + num2.ToString() + " = ";
                break;
         }

我尝试将说明 num1 和 num2 的位移动到每个案例中,以便它们看起来像这样:

            case '/':
                num1 = randomNum.Next(0, 10);
                num2 = randomNum.Next(0, 10);
                answer = num1 / num2;
                label1.Text = num1.ToString() + " / " + num2.ToString() + " = ";
                break;

但是我无法想象我可以在括号中放入什么而不是使用 (0, 10) 来避免小数和答案。有没有一种方法可以让它确定答案是否为小数,以及是否重新滚动 num2 以尝试获得整数答案?谢谢!

4

2 回答 2

1

因为整数除法向下舍入,您应该更改num1以确保精确除法:

num1 = randomNum.Next(0, 10);
num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = num1 / num2;
num1 = answer * num2;

if num1 = 7and num2 = 3, answerwill be 2andnum1变成6; 和_ num1 == 6_num2 == 3answer == 2

您还可以生成num2answer计算num1

num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = randomNum.Next(0, 10);
num1 = answer * num2; // answer == num1 / num2
于 2013-09-09T13:41:39.533 回答
1

很简单。发送整数,你会得到一个平分的数字(对孩子来说很容易)。

public static class TestWholeNumber
{
    public static int ReturnWholeNumber(int testnum)
    {
        var randomNum = new Random(Guid.NewGuid().GetHashCode());

        int num2 = 0;
        do
        {
            num2 = randomNum.Next(1, 10);
        }
        while (testnum % num2 != 0);
        return num2;
    }
}
于 2013-09-09T13:47:48.150 回答