c++ - 奇怪的错误。在循环中使用 rand() 和数组

标签 c++ arrays for-loop random error-handling

我真的无法解释我的程序发生了什么。我真的无法发现可能导致问题的原因。它发生在这个函数中

void test()
{
    srand(time(NULL));

    questionNo = 1;

    for (testLoop = 0; testLoop < 10; ++testLoop)
    {
        const char opArray[3] = { 'x', '+', '-' };
        int pickValue = rand() % 3;
        char Operator = opArray[pickValue];

        int n1 = rand() % 20 + 1;
        int n2 = rand() % 20 + 1;

        if (Operator = '+')
            answer = n1 + n2;
        else if (Operator = '-')
            answer = n1 - n2;
        else
            answer = n1 * n2;

        cout << "Question " << questionNo << "\n";
        ++questionNo;
        cout << n1 + " " << Operator + " " << n2 << "?";
        userAnswer = cin.get();

        if (userAnswer = answer)
        {
            cout << "\n\n Correct!\n";
            system("cls");
            ++score;
        }
        else
        {
        cout << "\n\n Incorrect!\n";
        system("cls");
        }
        Sleep(500);
    }
    cout << "You scored " << score << " out of 10!";
    fileWrite(score);
}

发生的情况的示例如下。 这输出到控制台

问题一
@Øÿ×╝׳×0ƒ11?

那到底是什么???
它还每次都会跳过两个问题。例如它去

“问题一”
《问题3》
《问题5》

最佳答案

您在此代码段中使用赋值运算符 = 而不是比较运算符 ==

    if (Operator = '+')
        answer = n1 + n2;
    else if (Operator = '-')
        answer = n1 - n2;
    else
        answer = n1 * n2;

按照以下方式修改

    if (Operator == '+')
        answer = n1 + n2;
    else if (Operator == '-')
        answer = n1 - n2;
    else
        answer = n1 * n2;

这个语句也有同样的错误

   if (userAnswer = answer)

也代替

   userAnswer = cin.get();

使用运算符>>

sin >> userAnswer;

这句话也有错别字

    cout << n1 + " " << Operator + " " << n2 << "?";

应该有

    cout << n1 << " " << Operator << " " << n2 << "?";

关于c++ - 奇怪的错误。在循环中使用 rand() 和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33962370/

相关文章:

java - 用户在for循环java中输入更大的数字,错误 "bad operand type"

C++ 字符串操作给我奇怪/不一致/错误的结果

c++ - 简单的线程! C++

c++ - 返回指针而不是 vector::迭代器并将 vector::迭代器转换为指针

ios - Swift 如何在 AnyObject 数组中查找对象

c++ - 调试断言错误 - 列表迭代器不兼容

c++ - 程序陷入循环

c++ - 指向派生类的基类分配内存地址的指针

c++ - 数组成员的默认复制赋值

php - 处理两个 $_POST 时出现警告 : array_merge(): Argument #1 is not an array,