【发布时间】:2017-07-12 20:08:01
【问题描述】:
所以,我必须从一个随机猜谜游戏中编写一个程序。程序需要让玩家猜一个 1-100 之间的数字。至少必须使用一项功能。它需要告诉玩家他们是否太低/太高,让他们再试一次,或者如果他们猜到了,让他们再玩一次。
我有一些我无法弄清楚的错误。
44: 错误:'int winlose' 重新声明为不同类型的符号 9: 错误: 'int winlose(int)' 的先前声明 44: 错误: 'g' 没有在这个范围内声明
代码
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int winlose(int);
int main()
{
int g, n, x;
while (x!=0)
{
do
{
srand(time(NULL));
n = 1 + rand()%100;
cout<<"Welcome to the guessing game. I have a number between 1-100.
Can you guess it?"<<endl;
cout<<"Please enter your guess"<<endl;
cin>>g;
winlose(g);
} while (n!=0);
cout<<"Play again? Enter 0 for no, any other number for yes."<<endl;
cin>>x;
}
return 0;
}
int winlose(g)
{
if (g<n)
{
cout<<"Your guess is too low. Try again."<<endl;
cin>>g;
}
else if (g>n)
{
cout<<"Your guess is too high. Try again."<<endl;
cin>>g;
}
else (g=n)
{
cout<<"Congrats! You win. The number was "<<n<<endl;
n=0;
}
return g;
return n;
}
【问题讨论】:
-
int winlose(g)这不是一个有效的函数声明语法 -
int winlose(g)->int winlose(int g) -
[Off Topic] 只调用
srand一次,除非你真的知道自己在做什么。 -
每次猜测后您都在选择一个新数字。这使得数字过高或过低的提示以及他们重试的请求变得毫无意义。
-
x在首次使用时未初始化。在winlose中无法访问n。return n;永远不会到达,但是winlose的返回值永远不会被使用。您真的应该花一点时间来理解范围的概念。请参阅此cppreference page 和此Stack Overflow question。
标签: c++