C++ 查找Max&;最小值

C++ 查找Max&;最小值,c++,C++,我试图找到最小值和最大值。我遇到以下两个问题: 仅输入负数时,最大值将等于0,而不是输入的最大值 当只输入正数时,我也有类似的问题。基本上,最小值将为0,而不是输入值 任何提示都将不胜感激 #include <iostream> using namespace std; int main() { int input; int max = 0; int min = 0; cout << "Enter number: "; whil

我试图找到最小值和最大值。我遇到以下两个问题:

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

    #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;
    }
    
    #包括
    使用名称空间std;
    int main()
    {
    int输入;
    int max=0;
    int min=0;
    cout>输入;
    如果(输入!=-1)
    {
    如果(输入>最大值)
    {
    最大值=输入;
    }
    如果(输入<分钟)
    {
    最小值=输入;
    }
    }
    }
    
    cout在开始时,不要设置为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;
    }
    
    int main(int argc,char**argv)
    {
    int输入;
    bool hasInput=false;
    cout>输入;
    int max=输入;
    int min=输入;
    cout>输入)
    {
    如果(输入==-1)中断;
    hasInput=true;
    如果(输入>最大值)
    {
    最大值=输入;
    }
    如果(输入<分钟)
    {
    最小值=输入;
    }
    
    cout在开始时,不要设置为0,而是在while循环之前询问第一个数字,并将min和max设置为该数字。作为补充说明,使用-1作为接受数字输入的退出条件可能会导致问题,您可能希望提前问他们数字的数量,或者检测非数字输入以结束t他喜欢这个节目

    编辑:示例代码:

    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;
    }
    
    int main(int argc,char**argv)
    {
    int输入;
    bool hasInput=false;
    cout>输入;
    int max=输入;
    int min=输入;
    cout>输入)
    {
    如果(输入==-1)中断;
    hasInput=true;
    如果(输入>最大值)
    {
    最大值=输入;
    }
    如果(输入<分钟)
    {
    最小值=输入;
    }
    
    cout就像@Turix所说的,问题是因为初始的
    max
    min
    值。您的
    max
    值应该是可能的最小整数值,以便任何大于它的值,同样地,
    min
    应该是可能的最大整数值。有了它,初始化变量像这样:

    int max = std::numeric_limits<int>::min();
    int min = std::numeric_limits<int>::max(); //#include <limits>
    
    int max=std::numeric_limits::min();
    int min=std::numeric_limits::max();/#include
    
    正如@Turix所说,问题在于初始的
    max
    min
    值。你的
    max
    值应该是可能的最小整数值,因此任何大于它的值都应该是可能的最大整数值。同样,你的
    min
    值应该是可能的最大整数值。有了这个值,初始化你的变量是这样的:

    int max = std::numeric_limits<int>::min();
    int min = std::numeric_limits<int>::max(); //#include <limits>
    
    int max=std::numeric_limits::min();
    int min=std::numeric_limits::max();/#include
    
    根据您的代码,我猜不会有负数。然后执行以下操作:

    int max = std::numeric_limits<int>::min();
    int min = std::numeric_limits<int>::max(); //#include <limits>
    
    编辑:来自另一个答案的这部分内容将很好

    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;
     }
    
    包括
    使用名称空间std;
    int main()
    {
    int输入;
    int hasInput=0;
    int max=std::numeric_limits::min();
    int min=std::numeric_limits::max();/#include
    cout>输入)
    {
    如果(输入==-1)中断;
    hasInput=1;
    如果(输入>最大值)
    {
    最大值=输入;
    }
    如果(输入<分钟)
    {
    最小值=输入;
    }
    }
    如果(hasInput==1)
    
    cout根据您的代码,我猜不会有负数。然后执行以下操作:

    int max = std::numeric_limits<int>::min();
    int min = std::numeric_limits<int>::max(); //#include <limits>
    
    编辑:来自另一个答案的这部分内容将很好

    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;
     }
    
    包括
    使用名称空间std;
    int main()
    {
    int输入;
    int hasInput=0;
    int max=std::numeric_limits::min();
    int min=std::numeric_limits::max();/#include
    cout>输入)
    {
    如果(输入==-1)中断;
    hasInput=1;
    如果(输入>最大值)
    {
    最大值=输入;
    }
    如果(输入<分钟)
    {
    最小值=输入;
    }
    }
    如果(hasInput==1)
    
    问题是否在于
    max
    min
    的初始值。是的,但我该如何解决它?想想看……您希望
    max
    一开始就尽可能低(这样任何大于它的输入值都将成为新的最大值)。相反,你希望
    min
    的起点尽可能高。你可以在这里找到常数来帮助你:给
    input
    一个初始值,比如
    int input=0
    。问题在于
    max
    min
    的初始值。是的,但我该如何解决它?想想看。。。您希望
    max
    以尽可能低的起点开始(以便任何大于它的输入值都将成为新的最大值)。相反,你希望
    min
    的起点尽可能高。你可以在这里找到常数来帮助你:为
    input
    提供初始值,例如
    int input=0
    。谢谢@user3482801,但我仍然有问题。你能举个例子吗?谢谢!谢谢@user3482801,但我仍然有问题。您能举个例子吗?谢谢!即使先键入-1,仅此更改也会打印出这些最小/最大值-尤其容易混淆/误导,如min>max。即使先键入-1,仅此更改将打印出这些最小/最大值-尤其容易混淆/误导,如min>max。照此,您的代码甚至会打印出这些最小/最大值如果先键入-1-特别容易混淆/误导最小值>最大值。很高兴看到
    而(cin>>输入)
    ..+1仅此一项。干杯。照此,即使先键入-1,代码也会打印出这些最小值/最大值-特别容易混淆/误导最小值>最大值。