簡體   English   中英

有人可以在我的代碼中找到與 C++ 中的 IF STATEMENT 相關的問題嗎?

[英]Can someone find the problem in my code related to IF STATEMENT in C++?

#include <iostream>
using namespace std;
int max_of_four(int q, int w, int e, int r)
{
    int x;
    if( q > w &&  q > e &&  q > r)
        {int x = q;}
    else if( w > q &&  w > e && w > r)
        {int x = w;}
    else if( e > w &&  e > q &&  e > r)
        {int x = e;}
    else if( r > w &&  r > e &&  r > q)
        {int x = r;}
    else{x = 0;}   
    return x;
}
int main() {
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    cout << max_of_four(a, b, c, d);
    return 0;
}

無論輸入是什么,它總是輸出 0。

我想我在if statement條件中遺漏了一些東西,請有人幫忙!

在 if 的int x = q; 定義了一個新變量x並且修改您稍后返回的x

你可能只想要x = q; x分配一個新值。 這也適用於其他如果。

或者您可以一起跳過作業:

int max_of_four(int q, int w, int e, int r)
{
    if( q > w &&  q > e &&  q > r)
        { return q; }
    else if( w > q &&  w > e && w > r)
        { return w; }
    else if( e > w &&  e > q &&  e > r)
        { return e; }
    else if( r > w &&  r > e &&  r > q)
        { return r; }

    return 0;
}

實際上,如果您有C++11或更高版本,則std::max()可以將初始化列表作為其參數:

int max_of_four(int q, int w, int e, int r)
{
    return std::max({ q, w, e, r }); // Need to #include <algorithm> for std::max
}

除了重新定義變量 x 之外,當 q、w、e 或 r 的值相同時,您的測試條件可能會被修剪是不夠的。 同樣從邏輯上講,返回值應該是四個變量中的任何一個,但它永遠不應該返回零。

   int max_of_four(int q, int w, int e, int r)
   {
       int max = q;
       if (w > max ) max = w;
       if (e > max ) max = e;
       if (r > max ) max = r;
       return max;
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM