比较大小问题
有三个变量 分别为 a,b,c, 取值可以为0,1,2,3.
但是三个变量同时取值只有0,可以重复,也就是说三个变量可以取到这种情况,例如 0,0,1,
不可能同时出现两个1 ,两个2,两个 3,
还有就是如果是a为0,那么b为1,
c为2.时我要得到最小值b,但是0不算最小值,也就是说0除外。
我没有考虑两个0的情况代码为这样。
int fun(int a,int b, int c)
{
_IF(a < b)
{
_IF(a < c)
{
_IF (a* c== 0 && a+ b!= 0)
{
_IF(a== 0 )
{
strRetBOMCode = b;
}
else
{
strRetBOMCode = a;
}
}
else
{
strRetBOMCode =a;
}
}
else
{
_IF (a* c== 0 && a+ c!= 0)
{
_IF(a== 0 )
{
strRetBOMCode =c;
}
else
{
strRetBOMCode =a;
}
}
else
{
strRetBOMCode = c;
}
}
}
else
{
_IF(b < c)
{
_IF (b* c== 0 && b+ c!= 0)
{
_IF(b== 0 )
{
strRetBOMCode =c;
}
else
{
strRetBOMCode = b;
}
}
else
{
strRetBOMCode = b;
}
}
else
{
_IF (b* c== 0 && b+ c!= 0)
{
_IF(b== 0 )
{
strRetBOMCode = c;
}
else
{
strRetBOMCode = b;
}
}
else
{
strRetBOMCode =c;
}
}
}
return strRetBOMCode
}
怎么样才能很快的比较出来,我这只有一部分。大家帮帮忙,求大侠们了......
[解决办法]
- C/C++ code
#define Max(a,b,c) (a>(b>c?b:c)?a:(b>c?b:c))#include <iostream>#include <string>using namespace std;int func(int a,int b,int c)//判断条件函数{ //-1表示无最大值 if(a || b || c) { if(a == b && (a == 1 || a == 2 || a == 3)){cout<<"不合法"<<endl;return -1;} //是三个变量同时取值只有0,可以重复,也就是说三个变量可以取到这种情况, //不可能同时出现两个1 ,两个2,两个 3, else if( a == c && (a == 1 || a == 2 || a == 3)) { cout<<" 不合法"<<endl; return -1; } else if( b == c && (b == 1 || b == 2 || b == 3 )) { cout<<" 不合法"<<endl; return -1; } else//为 0,0的情况! { if(a == c && a == 0) return b; else if(a == b && a == 0) return c; else if(b == c && c == 0) return a; else return Max(a,b,c); } } else { cout<<"三个变量都是0\n"<<endl; } return 0;}int main(){ int a; int b; int c; cout<<"输入a,b,c: "; cin>>a; cin>>b; cin>>c; int temp=func(a,b,c); if(temp >= 0) { cout<<"最大值: "<<temp<<endl; } else { cout<<"无最大值"<<endl; } return 0;}//大概的写了一下,不对的地方你在修改一下,应该就差不多了吧