C ++如何在n个元素的一维数组中查找最小值和最大值?

问题描述

编写一个程序,要求用户输入整数n。该程序应提示用户输入n个整数并将它们存储在一维数组中。然后程序应输出数组中的最小和最大元素。

int main()
{
    int n,a,b;
    cin>>n;
    int ma=0,mi=0;
    int num[n];
    cin>>num[0];
    for(int i=1;i<n;i++)
    {
        cin>>num[i];
        a=num[i];
        b=num[i-1];
        if(a>b)
            ma=a;
        if(a<b)
            mi=a;
    }

    cout<<mi<<endl;
    cout<<ma;
}

给定元素时,不会正确显示最小值和最大值。我的错误在哪里?

解决方法

您错过了算法中的第一个值永远不会设置为最小值或最大值。 假设所有数字都是正数

int main()
{
    int n;
    cin>>n;
    int ma=0,mi=2147483647;
    int num[n];
    for(int i=0;i<n;i++)
        {
            cin>>num[i];
            if(num[i] > ma)
                ma = num[i];
            if(num[i] < mi)
                mi = num[i];
        }


    cout<<mi<<endl;
    cout<<ma;
}
,

我会尝试以下代码:

std ::vector < int > v (n);
std ::copy_n (std ::istream_iterator < int,char > (cin),begin (v),n);
auto const r ((std ::minmax_element) (begin (v),end (v)));
return std ::cout << * r .first << '\n' << * r .second ? EXIT_SUCCESS: EXIT_FAILURE;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...