//4、该程序功能:调用函数f,求a数组中最大值与b 数组中最小值之差。
#include <stdio.h>enum FLAG {positive=1,negative=-1};
float f(float *x,int n,enum FLAG flag)
{ float y; int i;
y=x;
for(i=1;i<n;i++) if(flag*x>flag*y) y=x;
return y;
}
main()
{ float a={3,5,9,4,2.5,1},b={3,-2,6,9,1};
printf("%.2f\n",f(a,6,positive)- f(b,5,negative));
}
这是正确的
求解释 flag*x>flag*y什么意思?
自己看着代码 写出的答案是0
真心看不懂啊 很简单哈。使用了一个小技巧,之所以加flag,可以让你少写一个求数组最小值的函数,当你flag等于negative时,原来数组你最小的值成了最大的值,但返回的还是没有乘negative的值,至于传positive也就是1,求出的最大值也就是原值,所以相减就是最大值减去最小值,方法还是不错的
页:
[1]