为了账号安全,请及时绑定邮箱和手机立即绑定

如果要比较保存最大值不是应该比较五次吗,for(i=1,i<5,i++),这不是只比较了四次吗,第一个下标是0没比较呀

for(i=1,i<5,i++)

如果在这里比较,0下标的元素10没有参加比较吧

正在回答

3 回答

replaceMax()函数里,第一句已经定义了「int max = arr[0];」,也就是把数组的第一个元素(下标为0)赋值给了变量max了啊,后面的循环和判断语句里,从不从数组的下标为0的元素开始都可以,从0开始判断5次和从1开始判断4次的结果都是一样的,因为arr[0]肯定是不会大于它自己的,所以就算从0开始判断,那一次判断条件也是不成立,也不可能执行if内部的代码块,因此为了条理清晰、代码直接、效率优先,就没有必要从下标0开始,而直接从下标1开始。再罗嗦一句就是,从下标0开始循环,也不会错,只不过呢会给人印象是写代码的人没有预见到代码的运行情况,思路不清晰。

0 回复 有任何疑惑可以回复我~

同问!!!  但是如果第一个数是最大的呢? 比如  int arr1[] = {41,10,3,12,22};  那他的判断语句就一直都不成立啦?

if(arr[i]>max)                      



0 回复 有任何疑惑可以回复我~
#1

慕神8379461

那就不用判断了啊,直接跳过然后输出就好
2019-02-09 回复 有任何疑惑可以回复我~

好吧,上面的mex已经调用了0下标了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果要比较保存最大值不是应该比较五次吗,for(i=1,i<5,i++),这不是只比较了四次吗,第一个下标是0没比较呀

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信