12月30日 发表于 2013-12-23 16:05:18

//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

maomingkun 发表于 2013-12-24 13:39:45

真心看不懂啊

hate茶叶蛋 发表于 2013-12-25 10:26:09

很简单哈。使用了一个小技巧,之所以加flag,可以让你少写一个求数组最小值的函数,当你flag等于negative时,原来数组你最小的值成了最大的值,但返回的还是没有乘negative的值,至于传positive也就是1,求出的最大值也就是原值,所以相减就是最大值减去最小值,方法还是不错的
页: [1]
查看完整版本: //4、该程序功能:调用函数f,求a数组中最大值与b 数组中最小值之差。