【问题标题】:C++ Array function not returning correct resultC++ 数组函数没有返回正确的结果
【发布时间】:2015-11-05 14:52:07
【问题描述】:

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

功能:

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;

【问题讨论】:

  • 你不应该从循环中返回值,而只是保存它。最后返回largest。

标签: c++ arrays max


【解决方案1】:

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));

【讨论】:

    【解决方案2】:

    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;
    }
    

    【讨论】:

      【解决方案3】:
      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;
      

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

      【讨论】:

        猜你喜欢
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-23
        相关资源
        最近更新 更多