在没有初始化C ++的情况下使用该变量

时间:2016-02-22 01:09:56

标签: c++ variables initialization stack execute

我试过寻找答案并自己解决这个问题,但我失败了。 我试图创建一个执行猜字游戏的程序。请注意,这是IS作业。但是,我没有寻找答案,我正在寻找洞察力。执行此程序后,我收到错误"变量'解决方案'正在使用而没有初始化C ++。

有什么想法吗?

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #define MAXGUESSES 4
    void GuessItRules();
    int PlayOneGame(char);
    char GetTheLetter();
    int IsAWinner(char, char);
    void CompareTheLetters(char guess, char letter);



    int main()
    {
    //declare additional variables
    //declare FILE pointer
    FILE *inp;
    int numGames, i = 0;
    //letter from file
    char letter;
    //variable for the return of the PlayOneGame function
    int didYouWin;


    char solution;


    //display instructions
    GuessItRules();
    //connect to the file HINT: use fopen
    inp = fopen("letterinput.txt", "r");

    //get number of games to play
    printf("How many games? (1 to 5): ");
    scanf("%d", &numGames);

    //this for loop will allow the player to play more than one game
    //without recompiling
    for (i = 0; i < numGames; i++)
    {
        //get a letter from file - use fscanf
        fscanf(inp, "%c", &letter);
        //print the letter back onto the screen, just to test
        //printf("\nThe letter is %c\n", letter);

        //Play one game (Call PlayOneGame function)
        //remember the function has an int return type
        printf("Let's play game %d\n", i + 1);
        PlayOneGame(solution);
        //tell the player if they have won or lost (test the variable didYouWin)

      }

      //close file
    fclose(inp);
    return 0;
}




    char GetTheLetter()
    {
    char guess;
    printf("\nMake a guess (CAPITAL LETTERS ONLY):");
    scanf("%c", &guess);
    return guess;
    }

    void CompareTheLetters(char guess, char letter)
    {
    if (guess == letter)
    {
        printf("\nThe Letter and the guess are the same (%c)\n",guess);
    }
    else 
    if (guess < letter)
    {
        printf("The letter comes after your guess (%c)", guess);
    }
    else 
    if (guess > letter)
    {
        printf("The letter comes before your guess (%c)", guess);
    }

    }

    int IsAWinner(char guess, char letter)
    {
    if (guess == letter)
    {
        return 1;
    }
    else
        if (guess < letter)
        {
            return 0;
        }
        else
            if (guess > letter)
            {
                return 0;
            }
    }

    int PlayOneGame(char solution)
    {
    int numGuesses = 0;
    //SHOULD BE INITIALZED TO 1
    int winOrLose = 1;
    // user guess

    char guess = 0;

    //char solution = 0;
    char letter = 0;


    //As long as the user  has not used up the maximum number
    //of guesses and has not guessed correctly 
    //the game will continue using this while loop
    while (numGuesses < MAXGUESSES && winOrLose == 1)
    {
        printf("Getting guess number %d\n", numGuesses+1);
        //function call to GetTheletter - returns to guess variable
        GetTheLetter();
        //function call to IsAWinner - returns to winOrLose variable (0 or 1)
        IsAWinner(guess, letter);
        //function call to CompareTheLetters - gives the user  a message
        CompareTheLetters(guess, letter);
        //update counter for number of guesses used
        numGuesses = numGuesses + 1;

    }

    return winOrLose;  //(0 or 1)

    }

    //add the other function definitions

    void GuessItRules()
    {
    printf("Welcome to the Letter Guessing Game\n");
    printf("\nFirst, you will enter the number of games you want 
    to play (1 - 5      games)\n");
    printf("For each game you will have 4 chances to guess each letter\n");
    printf("Let's begin:\n");
    }

1 个答案:

答案 0 :(得分:1)

您收到该警告是因为您声明char solution,然后按值将其传递给函数PlayOneGame(char solution),而不会初始化它。既然你以这种方式传递它,你暗示你打算将它用作常量(不是const ...我的意思是你只传递值,而不是对它的引用,所以它是在函数中不是真的可变...按照目前的情况,你根本不使用它,但这就是消息的情况。