永发信息网

解释下这个程序 谢谢

答案:2  悬赏:40  手机版
解决时间 2021-05-07 06:25
  • 提问者网友:太高姿态
  • 2021-05-06 06:55

findmax(int *a,int n)

{ int *p,*s;

for(p=a,s=a; p-a<n; p++)

if ( ) s=p;

return(*s);

}

main()

{ int x[5]={12,21,13,6,18};

printf("%d\n",findmax(x,5));

}

求最大值的,()内的条件我也不知道。麻烦解释下,谢谢咯

最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-05-06 07:38

findmax函数传递两个参数, 一个是数组首地址,一个是数组的长度.


findmax函数中指针p用来遍历数组. 指针s用来保存最大值. 初始化都为x[0];


利用数组的长度,以及数组的首地址,遍历数组, 每当找出一个比指针s指向的数大的值是, 就把该数的地址保存到s中.


遍历结束后, s保存的就是数组中最大数的地址.然后返回该数.(注意不是返回该数的地址.)


在findmax的遍历中, 用*s和数组中的每个数进行比较. 所以括号处应该填入的是*s<*p


因为比较的是数. 而不是地址.所以要解引用.

全部回答
  • 1楼网友:千夜
  • 2021-05-06 08:12
if(s<p)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯