该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
using std::cout;
using std::cin;
using std::endl;
int cmp ( const void *a , const void *b ){
return *(int *)a - *(int *)b;
}//比较函数
int maxEnum(int max){
int i;
int num[max];
for ( i = 0; i < max; i ++ ){
num[i] = pow(2,i);
}
//找出比本身大一点的
qsort(num,max,sizeof(int),cmp);
for ( i = 0; i < max; i ++ ){
if( num[i] > max ){
return (num[i] - 1);
//返回枚举上限
}
}
}
int leastEnum(int least){
int i = abs(least);
int j;
int num[i];
if( least < 0){
for ( j = 0; j < i; j ++ ){
num[j] = pow(2,j);
}
qsort(num,i,sizeof(int),cmp);
for ( j = 0; j < i; j ++ ){
if( num[j] > i){
return -( num[j] - 1);
//返回枚举下限
}
}
}else{
return 0;
}
}
bool abn(int a , int b){
return (a + abs(a) == 0 && b + abs(b) == 0) ? false : true;
} //异常处理
bool numCenter(int a , int b){
int maxVal;
int leastVal;
if(abn(a , b)){
a > b ? maxVal = maxEnum(a),leastVal = leastEnum(b) : maxVal = maxEnum(b),leastVal = leastEnum(a);
cout << "该枚举范围为:" << leastVal << " -> " << maxVal;
}else{
cout << "参数错误,程序已终止!";
return false;
}
}
int main(void){
int *maxVal = new int;
int *leastVal = new int;
cout << "import:";
cin >> *maxVal;
cin.clear();
cin >> *leastVal;
if(!(numCenter(*maxVal , *leastVal))){
return 0;
//出错结束;
}
return 0;
}