2016-07-26 90 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");