<b>求两个数中最大值,不用判断语句</b>[VC/C++编程]
本文“<b>求两个数中最大值,不用判断语句</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
#include "iostream.h"
#include "math.h"
#define bits ( sizeof( int ) * 8 - 1 )
static int CheckFlag( int x, int y )
{
int s1 = x >> bits;
int s2 = y >> bits;
s1=abs(s1);
s2=abs(s2);
return ( s1 * 2 + s2 );
}
static int SameSign( int Flag, int x, int y )
{
int t[2] = { x, y };
long z = x - y;
int s = z >> (bits+32);
s=abs(s);
return t[s];
}
static int DiffSign(int Flag,int x,int y) 对比
{
int t[2] = { x, y };
return t[Flag - 1];
}
static int (*FuncList[4])(int Flag,int x,int y)={SameSign, DiffSign, DiffSign, SameSign};
static int Max( int x, int y )
{
int Flag = CheckFlag( x, y );
return (*FuncList[Flag])(Flag,x,y);
}
void main()
{
int x,y,z;
cout<<"请输入整型x的值(-32768~32767):";
cin>>x;
cout<<"请输入整型y的值(-32768~32767):";
cin>>y;
z=Max(x,y);
cout<<"最大的数:"<<z<<endl;
}
#define bits ( sizeof( int ) * 8 - 1 ) //移动的位数
static int SameSign( int Flag, int x, int y ) //函数功效:x,y同号时的对比
static int DiffSign(int Flag,int x,int y) //函数功效:x,y异号时的对比
static int (*FuncList[4])(int Flag,int x,int y)={SameSign, DiffSign, DiffSign, SameSign}; //定义函数指针数组
static int Max( int x, int y ) //函数功效:求最大值
static int CheckFlag( int x, int y ) //函数功效:检测x,y的标记
/*
Flag 的值
+ +:0
- +;1
+ 1:2
- -:3
*/
以上是“<b>求两个数中最大值,不用判断语句</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |