C 想摆脱滑雪吗
它只需要第一次和第二次卡片和数字,但在第三次它不需要输入和跳过并直接打印else逻辑,但我想正确地证明我的逻辑。输出如下所示: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(“输入第二张卡片类型和编号:
输入第一张卡片类型和编号: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;
}