求救C++编程实现findmax函数

求救C++编程实现findmax函数,第1张

最简单的方法:

调用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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12085496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存