C 为什么deos my else语句即使在if语句触发之前仍会触发?为什么会发生这种情况

C 为什么deos my else语句即使在if语句触发之前仍会触发?为什么会发生这种情况,c,C,嗨,我是C新手,我正在编写一个基本的刽子手游戏,当我运行代码时,else语句仍然会触发,即使在它触发之前if语句也会触发,为什么会发生这种情况 代码如下: #include <stdio.h> int main(int argc, char const *argv[]) { int Guesses = 0; int Completion = 0; char UserGuess; char Word[] = "fire"; while (Guesses <

嗨,我是C新手,我正在编写一个基本的刽子手游戏,当我运行代码时,else语句仍然会触发,即使在它触发之前if语句也会触发,为什么会发生这种情况

代码如下:

#include <stdio.h>

int main(int argc, char const *argv[]) {
  int Guesses = 0;
  int Completion = 0;
  char UserGuess;
  char Word[] = "fire";

  while (Guesses < 6) {
    if (Completion == 4) {
      printf("You Won\n");
      break;
    }

    printf("Please Enter Your Guess It Can Only Be A Letter Not A Word\n");
    printf("The Word Is 4 Characters Long\n");

    scanf("%c", &UserGuess);

    if (UserGuess == 'f') {
      printf("You Guessed One Of The Letters\n");
      printf("f_ _ _\n");
      Completion++;
    }

    if (UserGuess == 'i') {
      printf("You Guessed One Of The Letters\n");
      printf("_i_ _\n");
      Completion++;
    }

    if (UserGuess == 'r') {
      printf("You Guessed One Of The Letters\n");
      printf("_ _r_ \n");
      Completion++;
    }

    if (UserGuess == 'e') {
      printf("You Guessed One Of The Letters\n");
      printf("_ _ _e\n");
      Completion++;
    }
    else {
      printf("You Guessed The Letter Wrong try again\n");
      Guesses++;
    }
  }
}
#包括
int main(int argc,char const*argv[]{
整数猜测=0;
int完成=0;
字符用户猜测;
char Word[]=“fire”;
而(猜测<6){
如果(完成==4){
printf(“您赢了”\n);
打破
}
printf(“请输入您的猜测,它只能是一个字母,不能是一个单词\n”);
printf(“单词长度为4个字符\n”);
scanf(“%c”、&UserGuess);
如果(UserGuess='f'){
printf(“您猜到了其中一个字母\n”);
printf(“f_uu\n”);
完成++;
}
如果(UserGuess=='i'){
printf(“您猜到了其中一个字母\n”);
printf(“\u i\u\n”);
完成++;
}
如果(UserGuess=='r'){
printf(“您猜到了其中一个字母\n”);
printf(“\uu\r\n”);
完成++;
}
如果(UserGuess=='e'){
printf(“您猜到了其中一个字母\n”);
printf(“e\n”);
完成++;
}
否则{
printf(“您猜错了字母,请重试\n”);
猜测++;
}
}
}

查看您的
if..else

if (UserGuess == 'e') {
  printf("You Guessed One Of The Letters\n");
  printf("_ _ _e\n");
  Completion++;
}
else {
  printf("You Guessed The Letter Wrong try again\n");
  Guesses++;
}
如果您输入除“e”之外的任何字母,将打印“您猜错了字母”

您需要为所有条件添加
if..else..if
链:

if (UserGuess == 'f') {
  printf("You Guessed One Of The Letters\n");
  printf("f_ _ _\n");
  Completion++;
} else if (UserGuess == 'i') {
  printf("You Guessed One Of The Letters\n");
  printf("_i_ _\n");
  Completion++;
} else if (UserGuess == 'r') {
  printf("You Guessed One Of The Letters\n");
  printf("_ _r_ \n");
  Completion++;
} else if (UserGuess == 'e') {
  printf("You Guessed One Of The Letters\n");
  printf("_ _ _e\n");
  Completion++;
} else {
  printf("You Guessed The Letter Wrong try again\n");
  Guesses++;
}

你可能指的是一串if/else语句,而不是一串if。这与这里的问题是一样的:还有逻辑问题(假设有人猜到了
f
i
;你不打算同时显示
f
i
——现在,看起来你只会显示最新猜到的字母),您可能应该使用
“%c”
来输入
UserGuess
。这将跳过诸如换行符(以及空格和制表符)之类的空白。。。。。或者一个
开关
…我试着编辑代码,但它似乎仍然会打印else语句reason@HiddenSquid,再试一次;你一定改变了什么