我正在编写一个函数来返回数组的最大值,目前它没有返回正确的值。
功能:
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;
答案 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;
每次检查数组中的元素时,如果它大于当前最大值,则将最大值更新为当前元素。最后返回最大值