【发布时间】:2016-03-01 22:48:15
【问题描述】:
我真的无法解释我的程序发生了什么。我真的无法发现可能导致问题的原因。它发生在这个函数中
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);
}
下面是一个例子。 这输出到控制台
问题 1
@Øÿ×╝׳×0ƒ11?
那是什么???
它每次也会跳过两个问题。例如它去
“问题 1”
“问题 3”
“问题5”
【问题讨论】:
-
向 c 字符串添加字符(在大多数情况下)是错误的:
Operator + " " -
你有:
cout << n1 + " " << Operator + " " << n2 << "?";——但你可能应该两次都用<<代替+:cout << n1 << " " << Operator << " " << n2 << "?";至少看起来更正统。 -
if (Operator = '+')应该是if (Operator == '+')(注意双精度=)
标签: c++ arrays for-loop random error-handling