C 无论输入如何,输出相同

C 无论输入如何,输出相同,c,C,所以我写这个程序是一个两人玩的纸石剪刀游戏,不管每个玩家选择什么,结果都是“玩家1赢” #包括 内部主(空) { 长播放1选择,播放2选择,p,r,s; printf(“玩家1,输入纸张(p)、石头(r)或剪刀)\n”); player1Choice=getchar(); getchar(); printf(“玩家2,输入纸张(p)、石头(r)或剪刀)\n”); player2Choice=getchar(); getchar(); 如果((播放者1选择=p)和&(播放者2选择=r)) prin

所以我写这个程序是一个两人玩的纸石剪刀游戏,不管每个玩家选择什么,结果都是“玩家1赢”

#包括
内部主(空)
{
长播放1选择,播放2选择,p,r,s;
printf(“玩家1,输入纸张(p)、石头(r)或剪刀)\n”);
player1Choice=getchar();
getchar();
printf(“玩家2,输入纸张(p)、石头(r)或剪刀)\n”);
player2Choice=getchar();
getchar();
如果((播放者1选择=p)和&(播放者2选择=r))
printf(“玩家1获胜!\n”);
否则如果((player1Choice=r)和&(player2Choice=p))
printf(“玩家2获胜!\n”);
否则如果((播放者1选择=r)和&(播放者2选择=s))
printf(“玩家1获胜!\n”);
否则如果((播放者1选择=s)和&(播放者2选择=r))
printf(“玩家2获胜!\n”);
否则如果((玩家1选择=s)和&(玩家2选择=p))
printf(“玩家1获胜!\n”);
否则如果((玩家1选择=p)和&(玩家2选择=s))
printf(“玩家2获胜!\n”);
printf(“按任意键退出”);
getchar();
返回0;
}

我认为我的“if”语句中的逻辑“and”可能是造成问题的原因,但我不确定。

您缺少字符常量周围的单引号,并且在需要时使用
=
。所以改变

    if((player1Choice=p)&&(player2Choice=r))    
致:

对所有类似事件执行此操作

还可以去掉未使用的变量,
r
p
s


最后,打开编译器警告并注意它们-如果您允许的话,编译器会帮助您解决所有这些问题。

您缺少字符常量周围的单引号,并且在需要时使用
=
。所以改变

    if((player1Choice=p)&&(player2Choice=r))    
致:

对所有类似事件执行此操作

还可以去掉未使用的变量,
r
p
s


最后,打开编译器警告并注意它们-如果您允许的话,编译器会帮助您解决所有这些问题。

您声明了
p
r
s
,但您从未初始化它们。您还使用赋值(
=
)而不是相等性测试(
=
)。您的程序导致未定义的行为。看起来你的意图是:

if ((player1Choice == 'p') && (player2Choice == 'r'))
在修复这些问题之后,您可以消除虚假变量。或者,更改变量声明以包括初始化:

long player1Choice, player2Choice, p = 'p', r = 'r', s = 's';
您仍然需要解决
=
问题

您应该在编译器中打开更多警告。例如,对于您的程序,来自Clang:

$ clang -Wall example.c -o example
example.c:19:51: warning: variable 's' is uninitialized when used here
      [-Wuninitialized]
        else if((player1Choice=r)&&(player2Choice=s))
                                                  ^
example.c:4:43: note: initialize the variable 's' to silence this warning
long player1Choice, player2Choice, p, r, s;
                                          ^
                                           = 0
example.c:15:27: warning: variable 'p' is uninitialized when used here
      [-Wuninitialized]
        if((player1Choice=p)&&(player2Choice=r))    
                          ^
example.c:4:37: note: initialize the variable 'p' to silence this warning
long player1Choice, player2Choice, p, r, s;
                                    ^
                                     = 0
example.c:15:46: warning: variable 'r' is uninitialized when used here
      [-Wuninitialized]
        if((player1Choice=p)&&(player2Choice=r))    
                                             ^
example.c:4:40: note: initialize the variable 'r' to silence this warning
long player1Choice, player2Choice, p, r, s;
                                       ^
                                        = 0
3 warnings generated.

您已经声明了
p
r
s
,但从未初始化它们。您还使用赋值(
=
)而不是相等性测试(
=
)。您的程序导致未定义的行为。看起来你的意图是:

if ((player1Choice == 'p') && (player2Choice == 'r'))
在修复这些问题之后,您可以消除虚假变量。或者,更改变量声明以包括初始化:

long player1Choice, player2Choice, p = 'p', r = 'r', s = 's';
您仍然需要解决
=
问题

您应该在编译器中打开更多警告。例如,对于您的程序,来自Clang:

$ clang -Wall example.c -o example
example.c:19:51: warning: variable 's' is uninitialized when used here
      [-Wuninitialized]
        else if((player1Choice=r)&&(player2Choice=s))
                                                  ^
example.c:4:43: note: initialize the variable 's' to silence this warning
long player1Choice, player2Choice, p, r, s;
                                          ^
                                           = 0
example.c:15:27: warning: variable 'p' is uninitialized when used here
      [-Wuninitialized]
        if((player1Choice=p)&&(player2Choice=r))    
                          ^
example.c:4:37: note: initialize the variable 'p' to silence this warning
long player1Choice, player2Choice, p, r, s;
                                    ^
                                     = 0
example.c:15:46: warning: variable 'r' is uninitialized when used here
      [-Wuninitialized]
        if((player1Choice=p)&&(player2Choice=r))    
                                             ^
example.c:4:40: note: initialize the variable 'r' to silence this warning
long player1Choice, player2Choice, p, r, s;
                                       ^
                                        = 0
3 warnings generated.

谢谢,伙计们-这完全从我身边溜走了。谢谢,伙计们-这完全从我身边溜走了。这就像过去两天里关于RPS的第20个问题。学校从什么地方开始?:)这就像过去两天里关于RPS的第20个问题。学校从什么地方开始?:)