打印4个数字中最大的数字优化

时间:2015-08-30 06:42:32

标签: c++ optimization logic

#include <iostream>
using namespace std;
int main()
{
    int num1,num2,num3,num4;
    int x;
    int y;
    cin>>num1>>num2>>num3>>num4;
    if (num1 > num2)

    {
         x=num1;
    }
    else
        {x = num2;
        }
    if(num3>num4)
        {y = num3;
        }
    else
    {
        y= num4;
    } 
    if (x>y)
    {cout<<"the largest number is:"<<x;

    }
    else
    {
        cout<<"the largest number is :"<<y;
    }
    return 0;
}

这是我打印4个数字中最大数字的代码。 问题是我被要求优化或压缩解决方案。 我试过但找不到另一种方法来编写这样的程序。任何人都可以帮我优化解决方案并使其更好.. 忽略语法错误..

5 个答案:

答案 0 :(得分:5)

可以这么简单:

int max = std::max( std::max( num1, num2 ), std::max( num3, num4 ) );

答案 1 :(得分:4)

#include<iostream>

using namespace std;

int main() {
    int x, m;
    cin >> x;
    m = x;
    for (int i = 0; i < 3; ++i) {
        cin >> x;
        m = m > x ? m : x;
    }

    cout << "The largest number is: " << m << endl;
    return 0;
}

使用循环。

答案 2 :(得分:1)

一种方法是将值存储在数组中并迭代它:

int num[4];    
cin >> num[0] >> num[1] >> num[2] >> num[3];

int max = num[0];
for (int i = 1; i < 4; ++i) {
    if (num[i] > max) {
        max = num[i];
    }
}
cout << "The largest number is:" << max << endl;

答案 3 :(得分:1)

从C ++ 11开始,你可以直接进行

const int biggest = std::max({num1, num2, num3, num4});

答案 4 :(得分:0)

试试这个:))在这种情况下我不使用std库。只需使用if-else语句,如下所示。 if(a> b)然后返回a b。 在其他情况下,我们可以创建一个数组并向用户请求输入。首先我们设置此数组中的第一个元素是MAX值。使用循环并检查。如果当前元素大于MAX,则我们将MAX值更新为当前值。

int maxOfTwoNumber(int a, int b){ return a>b? a : b; }
int maxOfFourNumber(int a, int b, int c, int d){
    return maxOfTwoNumber(maxOfTwoNumber(a, b), maxOfTwoNumber(c, d));
}