无论怎么输入都是平局,怎么改一下这个代码。

img


#include <stdio.h>
 
int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    int result=(a==1&&b==2) || (a == 2 && b == 3) || (a== 3&&b==1)?1:2;
    if (a == b) printf("平局");
    else printf("player %d win.", result); 
}

你输入12,直接被当作一个数字整个被a获取了,然后下一行的12被整个给了b,所以a==b
你有2个修改办法,一个是

#include <stdio.h>
 
int main()
{
    char a, b;
    scanf("%c%c", &a, &b);
    int result=(a=='1'&&b=='2') || (a == '2' && b == '3') || (a== '3'&&b=='1')?1:2;
    if (a == b) printf("平局");
    else printf("player %d win.", result); 
}

另一个是输入的时候加上一个空格
比如
1 2

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7491120
  • 这篇博客也不错, 你可以看下在主函数输入一个数,判断是否为素数。
  • 除此之外, 这篇博客: 函数调用不添加括号代表什么?中的 回调函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 回调函数的具体定义比较拗口,比较难以理解,因此比较生动的例子就是:小明到小红店里去购物,但是小红家恰好没货,因此小明留下了联系方式,等进货之后联系小明来购物

    更加清晰的解释为:如果将函数指针作为参数被传递到函数中,当这个函数指针被用于调用其指向的函数时,我们就称这个函数为回调函数

    回调函数的主要优势是解耦,即调用者和被调用者被分开,调用者无需了解谁是被调用者,它只需知道如果满足某条件之后,函数将被调用

  • 您还可以看一下 张云波老师的以太坊智能合约项目实战课程中的 员工第一次取款调试小节, 巩固相关知识点