【发布时间】:2021-11-29 13:14:48
【问题描述】:
我编写了以下代码,允许用户输入一个数组并给出该数组中的最大值和最小值
当我输入数组值的长度 = 4 并且数组元素为:- 32,152,38 时,它给出的输出为 最大值 = 1973314801 和最小值 = 24(意外值)
以下代码:-
#include<iostream>
using namespace std;
int main()
{
int n;
cout<<"input length of array = ";
cin>>n;
int array[n];
for(int i=0; i<n;i++)
{
int a;
cout<<"input element "<<i+1<<" = ";
cin>>a;
}
int max=array[0];
int min=array[0];
for(int i=0; i<n;i++)
{
if(array[i]>max)
{
max=array[i];
}
if(array[i]<min)
{
min=array[i];
}
}
cout<<"max = "<<max<<endl;
cout<<"min = "<<min;
}
但是当我在代码中定义数组的值时,它会给出预期的输出(min=3 和 max=12)
code(已经定义数组值的代码):-
#include<iostream>
using namespace std;
int main()
{
int array[4]={3,6,9,12};
int max=array[0];
int min=array[0];
for(int i=0; i<4;i++)
{
if(array[i]>max)
{
max=array[i];
}
if(array[i]<min)
{
min=array[i];
}
}
cout<<"max = "<<max<<endl;
cout<<"min = "<<min;
}
这可能是什么问题?
【问题讨论】:
-
cin >> a;?您从未将读入的值存储到array。在第二种情况下,array已经有价值,所以它起作用了。array[n]是 VLA,它是 GCC 中的编译器扩展,使您的代码不可移植。 STL 有很多实用函数 找std::minmax_element -
@KeshavNischal 你也可以试试下面的答案。
标签: c++ arrays max min iostream