当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>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
*/

相关内容
赞助商链接