我有下面的代码,它不适用于最后两个条件语句:else-if 和 else。使用 strcmp,我认为如果 player1 和 player2 都具有相同的字符串,那么这个 else-if 主体将被启用,但它没有。相反,它再次循环并要求输入剪刀、石头或纸。此外,输入汉堡包和石头之类的东西,不会激活其他部分,而是要求剪刀、石头和纸输入。
update1:根据调试器,据我所知,这似乎是因为之前的 else-if 之一已用尽。如果我为 player1 输入纸,为 player2 输入纸,那么它会输入:'else if(strcmp(player1, "paper") == 0)'。但它不会打印任何东西,因为它的主体中没有另一张纸。然后,它在 while 循环中再次循环(再次要求输入:石头、纸或剪刀),永远不会达到:'else if(strcmp(player1,player2) == 0)'
update2:如果我将 'else if(strcmp(player1,player2) == 0) 放在最顶部,则以 'if' 语句开始。该程序有效。但是,由于类似的情况, else 仍然无法正常工作。将它放在顶部是行不通的,因为它应该包含任何其他不是剪刀、石头或纸的措辞。
#include <stdio.h>
#include <string.h>
int main(void) {
char player1[25];
char player2[25];
while(1){
printf("please type one of the following: rock, paper or scissors. Player1 goes first\n");
scanf("%24s%24s",player1,player2);
if(strcmp(player1, "rock") == 0)
{
if (strcmp(player2, "scissors") == 0)
printf("player 1 wins, rock crushes scissors\n");
else if(strcmp(player2, "paper") == 0)
printf("player 2 wins, paper covers rock\n");
}
else if(strcmp(player1, "scissors") == 0)
{
if(strcmp(player2, "paper") == 0)
printf("player 1 wins, scissor cuts paper\n");
else if(strcmp(player2, "rock") == 0)
printf("player 2 wins, rock crushes scissors\n");
}
else if(strcmp(player1, "paper") == 0)
{
if(strcmp(player2, "rock") == 0)
printf("player 1 wins, paper covers rock\n");
else if(strcmp(player2, "scissors") == 0)
printf("player 2 wins, scissor cuts paper\n");
}
else if(strcmp(player2, "rock") == 0)
{
if (strcmp(player1, "scissors") == 0)
printf("player 2 wins, rock crushes scissors\n");
else if(strcmp(player1, "paper") == 0)
printf("player 1 wins, paper covers rock\n");
}
else if(strcmp(player2, "scissors") == 0)
{
if(strcmp(player1, "paper") == 0)
printf("player 2 wins, scissor cuts paper\n");
else if(strcmp(player1, "rock") == 0)
printf("player 1 wins, rock crushes scissors\n");
}
else if(strcmp(player2, "paper") == 0)
{
if(strcmp(player1, "rock") == 0)
printf("player 2 wins, paper covers rock\n");
else if(strcmp(player1, "scissors") == 0)
printf("player 1 wins, scissor cuts paper\n");
}
else if(strcmp(player1,player2) == 0)
{
printf("nobody wins, let’s sing it again!\n");
}
else
{
printf("incorrect input, try again\n");
}
}
return 0;
}