我真的无法解释我的程序发生了什么。我真的无法发现可能导致问题的原因。它发生在这个函数中
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/