永发信息网

麻烦解释下这个程序

答案:5  悬赏:70  手机版
解决时间 2021-07-21 01:21
  • 提问者网友:放下
  • 2021-07-20 08:27

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-07-20 09:02

findmax参数:
整型数组a(一个指针,实际上是第一个元素的内存地址);
数组元素个数n。



过程:
int *p,*s; //定义两个整型指针
for(p=a,s=a; p-a<n; p++) //s用来临时指向最大的那个数的内存地址,初值s=a使它指向第一个数组元素,p指针遍历a到a+n这段内存(p++是内存地址加1,使p指向下一个内存)
if (*p>*s ) s=p; //如果p所指向的内存里的数据比s的大,则让s指向p所指向的内存(将p所指的内存地址赋给s)


//整个for循环完之后,s就指向数组里数值最大的那个元素的内存了。


return(*s); //返回s所指内存里的数值。

全部回答
  • 1楼网友:行雁书
  • 2021-07-20 13:04
*p > *s 就可以了
  • 2楼网友:举杯邀酒敬孤独
  • 2021-07-20 12:27

findmax(int *a,int n)

{ int *p,*s;

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

if (*p>=*s ) s=p;

return(*s);

}

main()

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

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

}

  • 3楼网友:野慌
  • 2021-07-20 10:48
if(*p>*s)
  • 4楼网友:毛毛
  • 2021-07-20 09:51
if(s<p)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯