我正在尝试编写一个简单的代码来获取数组的最小值和最大值。问题是,如果我选择将这个值序列设置为5 2 -13 5 1.输出是最大数字是5最小数字是1.为什么代码忽略了负数?同样的事情,如果我把一个负数的序列,如-2 -4 -123 -4 5,最大数字是5,最小值是-4
我无法理解为什么!
cout<<"Enter the Value of the Array"<<endl;
cin>>valueOfArray;
cout<<"Enter the Array Elements"<<endl;
for(int i=0; i<valueOfArray;i++)
{
cin>>ArrayOfNumbers[i];
minimum=ArrayOfNumbers[0];
if(ArrayOfNumbers[i]>maximum)
{
maximum=ArrayOfNumbers[i];
}
else if(ArrayOfNumbers[i]<minimum)
{
minimum=ArrayOfNumbers[i];
}
}
cout<<"the Maximum number is "<<maximum<<endl;
cout<<"The Minimum number is "<<minimum<<endl;
答案 0 :(得分:1)
有一些问题,其中一些问题在其他答案中有所指出。
最终,为了获得正确的输出,您必须将minimum
和maximum
变量初始化为阵列外的极端对立面。
#include<climits>
long minimum = LONG_MAX;
long maximum = LONG_MIN;
for(int i = 0; i < valueOfArray; i++){
cin>>ArrayOfNumbers[i];
if (ArrayOfNumbers[i] > maximum) {
maximum = ArrayOfNumbers[i];
} else if (ArrayOfNumbers[i] < minimum) {
minimum = ArrayOfNumbers[i];
}
}
此解决方案将确保LONG_MIN
答案 1 :(得分:0)
你的循环逻辑有点不对。
也许这可以帮助
minimum=0;
maximum=0;
for(int i=0; i<valueOfArray;i++){
cin>>ArrayOfNumbers[i];
if(ArrayOfNumbers[i]>maximum){
maximum=ArrayOfNumbers[i];
}
else if(ArrayOfNumbers[i]<minimum){
minimum=ArrayOfNumbers[i];
}
}
发生这种情况是因为每次输入数据时,都会将最小值更改为第一个数据。