这是一个简单的入门类(class)问题。我必须编写一个程序,要求用户输入3个数字,并确定最大和最小数字。
我只需要使用if
语句。
这就是我到目前为止所尝试的:需要进行4次比较。
int x, y, z;
int smallest, largest;
cout << "Please enter 3 numbers to compare: " ;
cin >> x >> y >> z;
smallest = x;
largest = x;
if (y > largest)
largest = y;
if (z > largest)
largest = z;
if (y < smallest)
smallest = y;
if (z < smallest)
smallest = z;
cout << "largest: " << largest << ", and smallest: " << smallest << endl;
我的问题是:是否可以仅使用3个或更少的比较?我认为当y > largest
时,它还告诉我们其他内容吗? 最佳答案
您的代码的问题在于您会浪费很多信息。在诸如此类的“挑战”中,您必须充分利用已有的东西。所以当你说,例如
if (y > largest)
不要只对待
true
大小写。还应尝试对条件不成立的情况进行推理。if ( x < y )
{
smallest = x;
biggest = y;
}
else
{
smallest = y;
biggest = x;
}
if ( z < smallest )
smallest = z;
else if ( z > biggest )
biggest = z;
这仅包含3个比较。
关于c++ - 如何以最少的比较获得3个值中的最大值和最小值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16743782/