调用STL的Algorithm的max_element方法。
template <class ForwardIterator>
ForwardIterator max_element ( ForwardIterator first, ForwardIterator last )
template <class ForwardIterator, class Compare>
ForwardIterator max_element ( ForwardIterator first, ForwardIterator last,
Compare comp )
实现方法:
template <class ForwardIterator>
ForwardIterator max_element ( ForwardIterator first, ForwardIterator last )
{
ForwardIterator largest = first
if (first==last) return last
while (++first!=last)
if (*largest<*first)// or: if (comp(*largest,*lowest)) for the comp version
largest=first
return largest
}
你只要实例化模板就可以了。
int *findmax(int *array,int size,int *index) {if (size <= 0) return NULL
int max = array[0]
*index = 0
for (int i = 1i <sizei++) {
if (array[i] >max) { // 如果大小相同的返回第一个则这么写,若返回最后一个则用>=
*index = i
max = array[i]
}
}
return &array[*index]
}
这个函数不应该这样定义,应该用返回值返回下标,不用返回指针,根据下标就能得到数组的元素了。既返回指针又返回下标相当于返回了多余的东西。函数设计的要紧凑不要做无谓的事情。
#include <stdio.h>//从键盘上输入十个数据存入数组a中,
//调用函数findmax求数组中的最大值并输
void findmax(int a[])
{
int i = 0,maxNum = a[0]
for(i =1i<10i++)
{
if(maxNum <a[i])
maxNum = a[i]
}
printf("output the max number:")
printf("%d\r\n",a[i])
}
int main()
{
int a[10],i
printf("Enter ten number:\r\n")
for(i=0i<10i++)
scanf("%d",&a[i])
findmax(a)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)