-3

このコードの何が問題なのか誰にもわかりません。上記のエラーが表示されます。「ランダムな」文字を生成し、ユーザーにその文字を推測する機会を最大 6 回与えるプログラムを作成しようとしています。

if ( Play != "y" || Play != "Y" )

編集:完全なコード

// This function displays game instructions, and returns nothing.
void Instructions();

// This function plays one game, and returns "W" if the player wins
// or "L" if the player runs out of guesses. 
char Play();

//this function prompts the player to make a guess and returns that guess
char getLetter();

//The function returns 1 if the guess matches the solution and returns a 0 if they do not match
char guess();

// This function returns a random letter between "A" and "Z 
char getAnswer();

int CompareLetters(char guess, char answer);

int main()
{ 

    char answer;


    //1. Greet the user and ask if they would like to play a guessing game.
    printf("\nHello there!\nWould like to play a guessing game?Enter Y or N: \n");
    scanf(" %c", &answer);

    if(answer == 'y' || answer == 'Y')
        Instructions();
    {
        printf("\nYou entered Y.  Let's  play!\n");

        do{

        }while (answer == 'y' || answer == 'Y');
    }
    printf("\nMaybe next time.\n");
    printf("\nGoodBye for now.\n");
    return -1;
} 


void Instructions()
{
    printf("I have a capital letter in mind. You have 6 chances to guess which letter I am \nthinking. I will let you know if you are too high or too low.\n");
    printf("After each guess, you will be informed if your guess is too high or too low.\nGood luck!\n");

}

int PlayGuess(char answer)
{
    int NumGuesses=0; int WinOrLose=0;

    while (NumGuesses < MAX_GUESSES && WinOrLose==0);
    {

        //6. If the player guesses wrong for a 6th time, console them and let the program end with a return code of 1.  
        char guess;
        guess = getLetter();
        CompareLetters(guess,answer);
        if(CompareLetters(guess,answer)==1)
        {
            WinOrLose = 1;
        }
        else
        {
            NumGuesses++;
        }
    }
    if (WinOrLose==1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

//3. Generate a "random" character between 'A' and 'Z'.  This will be the value the player will try to guess. 
char getLetter()
{
    char guess=0;
    printf("Please enter your letter guess:", guess);
    scanf(" %c",&guess);
    return guess;
}

int CompareLetters(char guess, char answer)
{
    if(guess == answer)
    {
        return 1;
    }
    else
    {
        ////5. If the player does not guess the right answer, display whether the guess is "too high" or "too low". 
        if (guess < answer)
        {
            printf("Your guess is too low.");
        }
        else
        {
            printf("Your guess is too high.");
        }

        {
            printf("\nDo you want to play again? Y or N: \n");

        }
        if ( Play != 'y' &&  Play != 'Y' )
            printf("Thanks for playing.Goodbye!/n");
}
4

3 に答える 3

1

C では、二重引用符で囲まれた一連の文字は文字列を表し、メモリ内ではconst char *. あなたの変数Playには単一charのが含まれており、char*. コンパイラにchar定数を使用するように指示する方法は、次のように文字を一重引用符で囲むことです。

Play != 'Y'
于 2013-10-13T19:31:43.280 に答える
0

変数Playはcharを取っているので、使用してみてください''""char* リテラルにも使用されます。次のようにしてみてください。

if ( Play != 'y' || Play != 'Y' )

それ以外の

 if ( Play != "y" || Play != "Y" )
于 2013-10-13T19:29:58.193 に答える