我试过寻找答案并自己解决这个问题,但我失败了。 我试图创建一个执行猜字游戏的程序。请注意,这是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");
}
答案 0 :(得分:1)
您收到该警告是因为您声明char solution
,然后按值将其传递给函数PlayOneGame(char solution)
,而不会初始化它。既然你以这种方式传递它,你暗示你打算将它用作常量(不是const
...我的意思是你只传递值,而不是对它的引用,所以它是在函数中不是真的可变...按照目前的情况,你根本不使用它,但这就是消息的情况。