C ++数组函数没有返回正确的结果

时间:2015-11-05 14:52:08

标签: c++ arrays max

我正在编写一个函数来返回数组的最大值,目前它没有返回正确的值。

功能:

int findMax(int maximum[ARRAY_SIZE])
{   
    int largest=maximum[0];

     for(int i=0;i<ARRAY_SIZE;i++)
    {
        if (maximum[i]>largest)
        {
          return largest=maximum[i];
        }
    }
}

主要功能部分:

cout<<"Maximum number: "<< findMax(numbers) <<endl;

3 个答案:

答案 0 :(得分:2)

return largest=maximum[i];这一行将通过返回找到的第一个元素来提前返回循环。

可能你想在循环后只做largest = maximum[i];然后return largest;

但是你使用的是C ++,为什么需要推出自己的findMax函数:

int array[] = {1,100,65,21,12,5};
int* max = ::max_element(begin(array), end(array));

答案 1 :(得分:1)

return(有点)立即结束函数调用。您想要的是更新largest以及findMax return largest的结尾。

您可能还想阅读完整的C ++课程并以更合理的方式命名参数。

int findMax(int data[], std::size_t size)
{   
    int largest=data[0];

    for(std::size_t i=0 ; i < size ; ++i)
    {
        if (data[i] > largest)
        {
            largest = data[i];
        }
    }

    return largest;
}

答案 2 :(得分:0)

for(int i=0;i<ARRAY_SIZE;i++)
{
    if (maximum[i]>largest)
    {
          return largest=maximum[i];
    }
}

当找到更大的值时,循环语句将停止,它可能不会检查数组中的所有元素。 应修改如下:

for(int i=0;i<ARRAY_SIZE;i++)
    {
        if (maximum[i]>largest)
        {
          largest=maximum[i];
        }
    }
return largest;

每次检查数组中的元素时,如果它大于当前最大值,则将最大值更新为当前元素。最后返回最大值