【C语言】如何产生数组最大值
产生数组最大值
@[TOC]
今日风和日丽,是个写(水 )博客的绝佳时机
和大家分享一串C语言中产生数组中的元素的最大值的代码
实现方式很简单,我们需要用到for循环和if语句
1 |
|
当我们运行代码的时候,输出的结果是10
看样子我们成功输出了数组的最大值,这串代码已经完成了,对不对?
但实际上这串代码是有问题的
先别往下滑,想想它的问题出在那里了呢?
——————————————————
正负性
当我们把数组里面的数字全部改成负数的时候
你会发现输出的结果等于0,并不是数组内的最大值-1
出现这个情况的原理十分简单,我们设定的int max = 0,而0>-1,输出的结果也自然是0了
解决这个问题的方法也非常简单
如果我们数组内的数全部小于0,那我们就设定MAX=数组内的某个数字,然后再进行比较,输出最大值不就行了?
1 | int main() |
- 避免不同数组的元素个数不同,max应该设置为arr[0]而不是arr[3]或者arr[5]
这时候再次运行我们的代码,可以看到结果已经正确的显示为-1了
进阶玩法
以自定义函数的形式实现此功能
使用自定义函数的时候,我们需要注意一个问题
那就是我博客之前写到过的 《传址调用和传值调用》
先把我们的主函数改造一番
1 | int main() |
其中sp就是我们要编写的自定义函数
因为自定义函数中的步骤需要改变我们主函数中的max,这里我们需要用取地址符,也就是传址调用
1 | sp(arr, sz,&max);//&max是传址调用 |
同样的,我们的自定义函数也需要使用int*来接收max的地址
1 | void sp(int arr[], int sz,int* pm) |
运行结果正确
结语
在制作自定义函数的时候,需要注意传址调用和传值调用的区别。具体介绍参考我之前的博客 [链接]
感谢你看到最后,如果对你有帮助的话,点个赞再走呗!
(没有帮助也可以点点赞~)
- 本文标题:【C语言】如何产生数组最大值
- 创建时间:2021-08-27 09:14:30
- 本文链接:posts/3186646925/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!