所以,我必须从随机猜谜游戏中编写一个程序。该程序需要让玩家猜出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;
}
答案 0 :(得分:2)
除了函数声明之外,你犯了一些错误。 函数声明必须包含每个参数的类型,因此正确的方法是:
int winlose(int g);
您不能在else语句中使用条件:(else (g=n)
)。如果没有满足先前条件(if
和else if()
中的条件),则else语句是全能的。如果您只希望在特定条件下触发此操作,请使用其他else if()
。您不需要在每个else
语句的末尾都有if
;以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;
}
}