gpt4 book ai didi

c - 操作数类型 ('char' 和 'char *' 不兼容?

转载 作者:行者123 更新时间:2023-11-30 20:49:19 25 4
gpt4 key购买 nike

有人知道这段代码有什么问题吗?它会出现上面的错误。我正在尝试创建一个程序来生成“随机”字母,并为用户提供最多 6 次猜测该字母的机会。

if ( 播放 != "y"|| 播放 != "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");
}

最佳答案

Play 似乎是一个(单个)char,而不是 char 数组。因此,您应该使用 'y' 而不是 "y"

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

这里似乎还存在逻辑错误 - 大概您打算使用 && 而不是 ||:

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

编辑:您现在已经添加了其余的源代码。这里有很多问题,但我将列出一些问题来帮助您入门。

  • Instructions() 的调用不在大括号内,因此 Instructions() 将有条件地调用,其余代码将无条件执行

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

    这应该是:

    if(answer == 'y' || answer == 'Y')
    {
    printf("\nYou entered Y. Let's play!\n");
    Instructions();
  • 您的 do {} while 语句为空。这也是一个无限循环,因为您的 scanf 答案位于循环之外。

        do{

    }while (answer == 'y' || answer == 'Y');

    您应该将 scanf 移至循环内部,并添加对 Play() 的调用。

  • CompareLetters 中的 Play 进行比较的 if 语句既不正确(没有名为 Play 的变量),而且错误place(CompareLetters 不应对此负责。)

    您应该将其移至 main,按照我上面提到的方式更新并与 answer 变量进行比较。

关于c - 操作数类型 ('char' 和 'char *' 不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com