C++随机猜数游戏错误

C++ Random Number Guessing Game Errors

本文关键字:游戏 错误 随机 C++      更新时间:2023-10-16

所以,我必须从一个随机猜谜游戏中编写一个程序。程序需要要求玩家猜测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(int g);

不能在 else 语句中使用条件:(else (g=n)(。如果前面的条件(ifelse if()中的条件(都不满足,则 else 语句是一个包罗万象的语句。如果只希望在特定条件下触发此操作,请使用其他else if()。您不需要在每个if声明的末尾都有else;以else if(){...}结尾是完全正确的.

您还需要与'=='进行比较,而不是'='=是赋值运算符,g=n会将 g 的值设置为 n。如果要检查g是否等于n,则必须使用g==n

您应该在外部循环中调用srand(),否则每次猜测后,值都会更改。

其余部分经过校正,有时会稍作更改以使其性能正确:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
bool winlose(int number, int givenNumber);
int main(){
int g, n, x;
bool guessed;
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;
do {
cout<<"Please enter your guess"<<endl;
cin>>g;
guessed = winlose(g, n); 
} while (!guessed);
cout<<"Play again? Enter 0 for no, any other number for yes."<<endl;
cin>>x;
} while (x!=0);
return 0;
}
bool winlose(int g, int n) {
if (g<n) {
cout<<"Your guess is too low. Try again."<<endl;
return false;
}
else if (g>n) {
cout<<"Your guess is too high. Try again."<<endl;
return false;
}
else {
cout<<"Congrats! You win. The number was "<<n<<endl;
return true;
}
}