《C语言程序设计:现代方法》第2版第14章练习题9的b

是求一个MEDIAN(x ,y , z) ,三个整数的中值,看到网上不多,有一个用两数差之间的乘积来判断(估计是利用两数差的乘积和0比),看上去也有点复杂。这里就提供一个相对比较直观的算法。

1、嵌套的条件判断函数求最大值和最小值

注意到:

x > y ? x : y

这个可以得到x 和 y 中的较大值。所以稍加考虑,就可以得出三个数的最大值解法

( x> y ? x : y ) > z ? ( ( x > y ) ? x : y ) : z

然后反过来就可以得到三个数的最小值,就是把大于号反过来。

( x < y ? x : y ) < z ? ( ( x < y ) ? x : y ) : z

2 、如何求得中间值

一开始比较难以想到 ,后来发现三个值求得最大、最小,那么剩下的就是中间值,所以如果是三书之和前去前两个数,就是中间值,所以有:

((x) + (y) + (z) )- (((x)>(y)?(x):(y))>(z)?((x)>(y)?(x):(y)):(z)) - ( (((x) < (y))?(x):(y))< (z)?(((x)<(y))?(x):(y)):(z))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值