C 想摆脱滑雪吗

C 想摆脱滑雪吗,c,C,它只需要第一次和第二次卡片和数字,但在第三次它不需要输入和跳过并直接打印else逻辑,但我想正确地证明我的逻辑。输出如下所示: 输入第一张卡片类型和编号:S 5 输入第二张卡片类型和编号:S 5 输入第三张卡类型和编号:无Bonanza #包括 int main() { 字符t_1,t_2,t_3; int num1=0,num2=0,num3=0; printf(“输入第一张卡片类型和编号:”); scanf(“%c%d”,&t_1,&num1); printf(“输入第二张卡片类型和编号:

它只需要第一次和第二次卡片和数字,但在第三次它不需要输入和跳过并直接打印else逻辑,但我想正确地证明我的逻辑。输出如下所示:

输入第一张卡片类型和编号:S 5
输入第二张卡片类型和编号:S 5
输入第三张卡类型和编号:无Bonanza
#包括
int main()
{
字符t_1,t_2,t_3;
int num1=0,num2=0,num3=0;
printf(“输入第一张卡片类型和编号:”);
scanf(“%c%d”,&t_1,&num1);
printf(“输入第二张卡片类型和编号:”);
scanf(“%c%d”、&t_2、&num2);
printf(“输入第三张卡片类型和编号:”);
scanf(“%c%d”,&t_3,&num3);
如果((t_1==t_2==t_3)和&(num1==num2==num3))
{
printf(“双重财富”);
}
else如果((t_1==t_2==t_3)| |(num1==num2==num3))
{
printf(“富矿”);
}
其他的
{
printf(“无富矿”);
}
返回0;
}

如果
x
y
z
具有相同的值,则您认为像
x==y==z
这样的表达式为真

但这一假设是错误的:

它实际上意味着
(x==y)==z

  • (x==y)
    如果
    x
    等于
    y
    则为真(即1),否则为假(即0)
  • 因此,如果
    x
    等于
    y
    z
    等于真(1),或者如果
    x
    不同于
    y
    z
    等于0,则
    (x==y)==z
    为真(1)

要检查三个变量
x
y
z
是否相等,可以使用以下表达式:
(x==y)&(y==z)
。括号是不必要的,您也可以编写
x==y&&y==z
,这可能会稍微不那么可读。

将所有文本都用粗体显示违背了粗体
x==y==z
的目的,而不是您认为的那样。您想要的是
x==y&&y==z
。要获得良好的代码样式,请进一步使用基于钳形的分组:(x==y)&&&(y==z)不知道“跳过”是什么意思-可能是纸牌游戏中的某个术语。逻辑提示类似于扑克。拥有三张相同的卡片意味着“双重财富”,拥有三倍相同的价值或相同的类型意味着“财富”。@AlexanderStohr“良好的代码风格”在那里是一个意见问题。我认为这样的额外括号是多余的,因为我相信自己知道操作符优先(或者如果我忘记了以后再遭受……),3个输入没有问题的解决办法是什么?我不能接受三个输入,我可以取2个输入,在第三个输入的地方,它不会输出任何财富。@Choyon这是另一个问题:只需将
%c%d“
替换为
%c%d”
scanf
是一个非常复杂的函数,它对于交互式输入来说并不是很有用,但是对于教育目的来说它是可以的。谢谢
#include<stdio.h>
int main()
{
    char t_1,t_2,t_3;
    int num1=0,num2=0,num3=0;
    printf("Input 1st card type and number:  ");
    scanf("%c %d",&t_1,&num1);
    printf("Input 2nd card type and number:  ");
    scanf("%c %d",&t_2,&num2);
    printf("Input 3rd card type and number:  ");
    scanf("%c %d",&t_3,&num3); 
    
      if((t_1==t_2==t_3) && (num1==num2==num3))
      {
        printf("Double Bonanza\n");
      }
    else if((t_1==t_2==t_3) || (num1==num2==num3))
      {
          printf("Bonanza\n");
      }
      else
      {
          printf("No Bonanza\n");
      }
      return 0;
}