2016-07-26 91 views
-5

你好,这是我的作业代码片。如果其他'和''或'

首先“如果”测试所有骰子是否相等,也等于游戏的圆号。

第二个“(else)if”测试所有骰子是否相等,但它们不等于整数。

第三个“(else)if”测试是否至少有一个骰子不等于整数。

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

注意: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"); 
+1

你的前两个条件是相同的。另外,你为什么试图在条件内执行增量? – csmckelvey

+0

对不起,它应该是骰子!= round – aaa

+0

我明白你是编程新手,但你应该试着在你提出任何问题之前看看这个:http://stackoverflow.com/help/how-to-ask –

回答

1

我猜你期待第二个条件,所有骰子等于但不等于一轮,触发。但您仍在检查:

dice1 == round 

即使这与第一次检查完全相同。此外,而不是检查1 == 2,2 == 3,1 == 3,你可以只检查:

1 == 2 && 2 == 3 

,因为这意味着1必须也等于如果3如果两个条件评价为真。

0
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

你的第三个if语句检查点
的价值,你已经初始化指向0
您使用点++(后增量),这意味着该点的值将增加从0到1在if检查后。你可以通过使用++点来代替point ++来修复它。
这将是一个预增量,并通过检查值,如果是1而不是0

1
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");