C 如果“else”和“or”

C 如果“else”和“or”,c,C,你好,这是我的作业代码 首先,若要测试所有骰子是否相等,它们也等于游戏的轮数 第二,若要测试所有骰子是否相等,但它们不等于整数 第三,如果要测试是否至少有一个骰子不等于整数 第四个是测试没有骰子等于整数 注意:printf只是为了测试语句 但现在程序给出了四个。如何修复它,并以更好的方式编写此代码 int dice1=1, dice2=1, dice3=1, round=3, point=0; if( (dice1 == dice2) && (dice2 == di

你好,这是我的作业代码

首先,若要测试所有骰子是否相等,它们也等于游戏的轮数

第二,若要测试所有骰子是否相等,但它们不等于整数

第三,如果要测试是否至少有一个骰子不等于整数

第四个是测试没有骰子等于整数

注意:printf只是为了测试语句

但现在程序给出了四个。如何修复它,并以更好的方式编写此代码

int dice1=1, dice2=1, dice3=1, round=3, point=0;

    if(   (dice1 == dice2) && (dice2 == dice3) && (dice1 == dice3) && (dice1 == round) )    printf("1");        
    else if(   (dice1 == dice2) && (dice2 == dice3) && (dice1 == dice3) && (dice1 == round) )   printf("2");    
    else if( dice1==round ? point++ : point  || dice2==round ? point++ : point  ||   dice3==round ? point++ : point ) printf("3");  
    else printf("4");

我猜你在期待第二个条件,所有骰子都相等,但不等于回合,触发。但你仍然在检查:

dice1 == round
也就是说,它与第一个if检查完全相同。此外,与其检查1==2,2==3,1==3,不如检查:

1 == 2 && 2 == 3

因为这意味着如果两个条件的计算结果都为真,那么1也必须等于3。

您的第三个if语句正在检查point的值
if ((dice1 == dice2) && (dice2 == dice3) && (dice1 == round)) {
    printf("1");
} else if ((dice1 == dice2) && (dice2 == dice3) && (dice1 != round)) {
    printf("2");
} else if ((dice1 != round) || (dice2 != round) || (dice3 != round)) {
    printf("3");
} else if ((dice1 != round) && (dice2 != round) && (dice3 != round)) {
    printf("4");
}
您已将点初始化为0 您正在使用point++post increment,这意味着在if检查后point的值将从0增加到1。您可以通过使用++点而不是点++来修复它。
这将是一个预增量,if检查的值将是1而不是0

您的前两个条件相同。还有,为什么要在条件中执行增量?对不起,应该是骰子=roundI感谢您是编程新手,但在提出任何问题之前,您应该先看看这一点:
if(dice1 == dice2 && dice2 == dice3) {
    if(dice1 == round)
        printf("1");
    else
        printf("2");
}
else if(dice1 != round || dice2 != round || dice3 != round)
    print("3");
else fi(dice1 != round && dice2 != round && dice3 != round)
    print("4");