C ++随机数猜测游戏错误

时间:2017-07-12 20:08:01

标签: c++

所以,我必须从随机猜谜游戏中编写一个程序。该程序需要让玩家猜出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;
}

1 个答案:

答案 0 :(得分:2)

除了函数声明之外,你犯了一些错误。 函数声明必须包含每个参数的类型,因此正确的方法是:

int winlose(int g);

您不能在else语句中使用条件:(else (g=n))。如果没有满足先前条件(ifelse 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;
    }
}