查找Max&最小值

时间:2014-04-01 02:03:26

标签: c++

我正在尝试找到最小值和最大值。我遇到了以下两个问题:

  1. 仅输入负数时,最大值将等于0,而不是输入的最大值。
  2. 输入正数时我有类似的问题。基本上,最小值将为0而不是输入值。
  3. 任何提示都将不胜感激。

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int input;
        int max = 0;
        int min = 0;
    
        cout << "Enter number: ";
        while (input != -1)
        {
            cin >> input;
            if(input != -1)
            {
                if(input > max)
                {
                    max = input;
                }
    
                if(input < min)
                {
                    min = input;
                }
            }
        }
        cout <<"Max: " << max << " Min " << min << endl;
    }
    

3 个答案:

答案 0 :(得分:3)

从你的代码我猜测不会有负数。然后做这样的事情:

编辑:这部分来自另一个答案会很好。

include <iostream>
using namespace std;

int main()

{
    int input;
    int hasInput = 0;
    int max = std::numeric_limits<int>::min();
    int min = std::numeric_limits<int>::max(); //#include <limits>

    cout << "Enter number: ";
    while (cin >> input)
    {
        if(input == -1) break;
        hasInput = 1;
        if(input > max)
        {
            max = input;
        }
        if(input < min)
        {
            min = input;
        }
     }
        if(hasInput == 1)
        cout <<"Max: " << max << " Min " << min << endl;
 }

答案 1 :(得分:1)

在开始时,不是设置为0,而是在while循环之前请求第一个数字,并将min和max设置为该数字。作为旁注,使用-1作为接受数字输入的东西的退出条件可能会导致问题,您可能想要事先询问它们的数字或检测非数字输入以结束程序。

编辑:示例代码:

int main(int argc, char** argv)
{
int input;
bool hasInput = false;
cout << "Enter number: ";
cin >> input;
int max = input;
int min = input; 

cout << "Enter number: ";
while (cin >> input)
{
    if(input == -1) break;
    hasInput = true;
    if(input > max)
    {
        max = input;
    }
    if(input < min)
    {
        min = input;
    }
    cout << "Enter number: ";
 }
    if(hasInput)
    cout <<"Max: " << max << " Min " << min << endl;
}

忘了检查第一个输入是否为-1 ...我确定你可以找出那个。

答案 2 :(得分:1)

就像@Turix所说的那样,问题在于您的初始maxmin值。您的max值应该是可能的最小整数值,以便任何大于它,类似地,min应该是最大可能的整数值。有了这个,就像这样初始化你的变量:

int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>