C 为什么deos my else语句即使在if语句触发之前仍会触发?为什么会发生这种情况
嗨,我是C新手,我正在编写一个基本的刽子手游戏,当我运行代码时,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 <
#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,再试一次;你一定改变了什么