我正在为学校开展HILO游戏,该计划通过询问该数字是高还是低来猜测用户数量。我的代码工作正确,但我还需要一个案例,当用户猜测数字时,数字被猜到但用户再次选择高或低。 这就是我的代码:
void GuessNumber(int lowVal, int highVal)
{
int midVal = 0;
char userAnswer = '-';
midVal = (highVal + lowVal) / 2;
cout << "Is it " << midVal << " (l,y,h)? " << endl;
cin >> userAnswer;
if ((userAnswer != 'l') && (userAnswer != 'h'))
{
cout << "Your number is " << midVal << endl;
}
else {
if (userAnswer == 'h')
{
GuessNumber(lowVal, midVal);
}
else if (userAnswer == 'l')
{
GuessNumber(midVal, highVal);
}
}
return;
}
答案 0 :(得分:2)
除非您不知道,否则不应要求用户更高/更低。所以你唯一能够发现作弊的时候就是你知道答案是两个值(N或N + 1)中的一个并且你问用户是否是N并且他们说它更低(或者你询问它是否为N + 1并且他们说更高。)
所有其他案例都不值得担心,因为你们已经知道确切的答案(用户不能欺骗你,告诉他们你们知道答案),或者至少还有三个可能的答案(在这种情况下,任何回复)可能是正确的。)