2016-10-23 77 views
-4

我正在使用HackerRank,它將分別輸入參數的4個數字(3,4,6,5),任務是能夠返回最高數字,但是當我編譯這個程序它會輸出3(a)而不是6(b),我不確定哪裏出錯了。C語言在if語句上返回錯誤的整數

#include <iostream> 
#include <cstdio> 
using namespace std; 

int max_of_four(int a, int b, int c, int d) { 
if ((a > b) && (a > c) && (a > d)) { 
    return a; 
} 
if ((b > a) && (b > c) && (b > d)) { 
    return a; 
} 
if ((c > b) && (c > a) && (c > d)) { 
    return a; 
} 
else { 
    return d; 
} 
} 

int main() { 
int a, b, c, d; 
scanf("%d %d %d %d", &a, &b, &c, &d); 
int ans = max_of_four(a, b, c, d); 
printf("%d", ans); 

return 0; 
} 
+2

請不要在這裏問關於在線代碼判斷引擎的問題。任何人都不可能告訴你自己的測試用例失敗,因爲這些通常都沒有披露。即使您測試的是在您的本地環境中運行,您可能錯過了測試在線挑戰中應用的一些邊緣案例。有創意並嘗試找到它們。此外,長期來看,這些問題可能沒有任何價值,除了欺騙在線競賽之外,沒有任何東西可以學到。 –

+0

您可以在_if語句中省略括號@ http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm – PinaGamer

+0

@PinaGamer我認爲括號使得表達式更加離散。在這方面沒有錯。 –

回答

1

第二個和第三個返回語句返回一個而不是b和c。

2

而是有這個簡單的版本:

int max_of_four(int a, int b, int c, int d) { 
    int max = a; 
    if(b > max) max = b; 
    if(c > max) max = c; 
    if(d > max) max = d; 

    return max; 
} 
0

您還沒有if語句第二和第三返回正確的變量。返回b和c。