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