我正在使用函数和中点为数字猜测器编写程序,以找出所选择的数字。我有一个问题编译,我无法弄清楚问题????
我的问题描述:
playOneGame
函数的返回类型应为void。这应该 在1到100的范围内实现一个完整的猜谜游戏。
shouldPlayAgain
函数应该有一个布尔返回类型。它 应该提示用户确定用户是否想再玩一次, 读入一个字符,如果字符是'y'则返回true,和 否则返回false。此外,您应该实现辅助函数
getUserResponseToGuess
和getMidpoint
。应该在里面调用它们 你的playOneGame
功能。
getUserResponseToGuess
。此功能应该提示用户 短语“是吗? (h / l / c):“替换令牌的值 。它应该返回一个char。 char应该是三个中的一个 可能的值:'h','l'或'c'。它应该具有以下内容 签名:char getUserResponseToGuess(int guess)
getMidpoint
。这个函数应该接受两个整数,它应该 返回两个整数的中点。如果有两个值 在范围的中间,你应该始终选择较小的 两个。它应具有以下签名:int getMidpoint(int low, int high)
我的代码:
#include<iostream>
using namespace std;
void playOneGame;
char getUserResponseToGuess(int guess);
int getMidpoint ( int low, int high);
int main() {
do
{
playOneGame();
} while (shouldPlayAgain());
return 0;
}
void playOneGame
{
int a = 100;
cout << "\nGuess a number between 1 and 100. " <<endl;
getUserResponseToGuess ( a);
}
char getUserResponseToGuess(int guess)
{
while (true)
{
int guess = getMidpoint(minimum, maximum);
std::cout << "\nIs it [h]igher/[l]ower/[e]qual to " << guess << "? ";
char answer;
if (!(std::cin >> answer))
{
std::cerr << "error reading user input, program exiting\n";
exit(1);
}
if (answer == 'h')
minimum = guess + 1;
else if (answer == 'l')
maximum = guess - 1;
else if (answer == 'e')
{
std::cout << "Well, isn't that nice.\n";
return;
}
if (minimum > maximum)
{
std::cerr << "hey, you lied to me!\n";
exit(1);
}
}
}
int getMidpoint ( int low, int high)
{
int mid;
mid = (low + high) / 2;
return mid;
}
答案 0 :(得分:1)
void playOneGame;
不是函数转发声明。 void playOneGame();
是。同样适用于函数定义。
此外,您应该定义shouldPlayAgain()
并<stdlib.h>
exit()
才能正常工作。
并且getUserResponseToGuess()
只有return
而不是返回有用的内容,并且它不会在默认分支上返回任何内容。