重庆工程职业技术学院论坛

 找回密码
 注册(开放注册)
搜索
查看: 4293|回复: 0
打印 上一主题 下一主题

[计算机类] 求三个数中最大者的几种方法!

[复制链接]
跳转到指定楼层
1#
发表于 2006-9-7 15:39:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


方法1:根据基本算法编制函数

下面直接给出程序。
int my_max(int x,int y,int z)
{
 int max;
 max=x;
 if(y>max)max=y;
 if(z>max)max=z;
 return max;
}


方法2: 用条件运算符

假设三个数存放在三个变量x,y,z中,可用下面的条件运算符求得最大数。
(1) 不用中间变量
   x>y ? (x>z?x:z)y>z?y:z)
算法说明:先将x和y比较,若x>y,则最大数必定在x和z中间,因此再取x和z中的最大者;否则,最大数必定在y和z中间,因此就取y和z中的最大者。

(2) 用一个中间变量m
  (m=x>y?x:y)>z?m:z
算法说明:先取x和y的最大者并赋值给m,然后求m和z中的最大者

(3) 不用中间变量
  (x>y&&x>z)?xy>z?y:z)
算法说明:先看x是否比y和z都大,若是,x即为最大者,否则,最大者必定在y和z中间,因此就取y和z的最大者。


方法3:用宏

(1)定义带三个参数的宏
先定义如下带参数的宏
#define MAX(x,y,z) (((x)>(y)&&(x)>(y))?(x)(y)>(z)?(y):(z)))
然后在程序中使用上述宏替换即可。
注意:(1)上述宏定义中的每个形参及整个宏体都要加上小括号,原因请参阅“定义带参数的宏时,宏体中的形参为什么一定要加小括号?”专题。(2)该宏定义中使用了方法2中(3)的算法。也可以使用其中的(1)或(2)的算法来定义宏体。
(2)定义带二个参数的宏
#define MAX(x,y) ((x)>(y)?(x):(y))
使用时,应该这样:MAX(MAX(a,b),c),其中的a、b、c为实参,它的算法与方法2中的(2)是一样的。

转贴自:http://www.hljcre.com/dispbbs.asp?boardID=15&ID=1866
您需要登录后才可以回帖 登录 | 注册(开放注册)

本版积分规则

手机访问本页请
扫描左边二维码
         本网站声明
本网站所有内容为网友上传,若存在版权问题或是相关责任请联系站长!
站长联系QQ:7123767   myubbs.com
         站长微信:7123767
请扫描右边二维码
www.myubbs.com

小黑屋|手机版|Archiver|重庆工程职业技术学院论坛 ( 琼ICP备10001196号-2 )

GMT+8, 2024-4-20 19:03 , Processed in 0.239400 second(s), 15 queries .

Powered by 高考信息网 X3.3

© 2001-2013 大学排名

快速回复 返回顶部 返回列表