慕桂英3245725
2019-01-15 16:45
for(i=1,i<5,i++)
如果在这里比较,0下标的元素10没有参加比较吧
replaceMax()函数里,第一句已经定义了「int max = arr[0];」,也就是把数组的第一个元素(下标为0)赋值给了变量max了啊,后面的循环和判断语句里,从不从数组的下标为0的元素开始都可以,从0开始判断5次和从1开始判断4次的结果都是一样的,因为arr[0]肯定是不会大于它自己的,所以就算从0开始判断,那一次判断条件也是不成立,也不可能执行if内部的代码块,因此为了条理清晰、代码直接、效率优先,就没有必要从下标0开始,而直接从下标1开始。再罗嗦一句就是,从下标0开始循环,也不会错,只不过呢会给人印象是写代码的人没有预见到代码的运行情况,思路不清晰。
同问!!! 但是如果第一个数是最大的呢? 比如 int arr1[] = {41,10,3,12,22}; 那他的判断语句就一直都不成立啦?
if(arr[i]>max)
好吧,上面的mex已经调用了0下标了
C语言入门
926021 学习 · 20793 问题
相似问题