问题描述
编写一个程序,要求用户输入整数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;