【问题标题】:Finding max and min integers from user input using for loop in C++?在 C++ 中使用 for 循环从用户输入中查找最大和最小整数?
【发布时间】:2017-06-05 23:17:17
【问题描述】:

以下代码旨在要求用户指定他们想要输入的整数个数,然后找到并显示它们之间的最大值和最小值。但是,它没有编译,这可能是因为我初始化 minInt 和 maxInt 变量的方式,但我不确定。请帮忙!提前致谢!

#include <iostream>
using namespace std;
int main()

{
        int inNum, inInt, minInt, maxInt, i;

        minInt = INT_MAX;
        maxInt = INT_MIN;
        cout << "How many numbers would you like to enter?" << endl;
        cin >> inNum;
        cout << "Please enter " << inNum << " integers." << endl;
        for(i = 0 ; i < inNum; i++)
        {
                cin >> inInt >> endl;
                if(inInt > maxInt)
                {
                        maxInt = inInt;
                }
                if(inInt < minInt)
                {
                        minInt = inInt;
                }
        }
        cout << "min: " << minInt << endl;
        cout << "max: " << maxInt << endl;
        return 0;
}

【问题讨论】:

  • 错误信息是什么(以及它是哪一行)?
  • cin &gt;&gt; inInt &gt;&gt; endl; endl 告诉输出流打印换行符并将流刷新到底层介质。它不应该在输入语句中。
  • 您还需要#include &lt;climits&gt;
  • 另外,使用 C 的 INT_MAXINT_MIN 的 C++ 方式分别是 numeric_limits&lt;int&gt;::max()numeric_limits&lt;int&gt;::min(),可在 &lt;limits&gt; 中找到。
  • 下面是粘贴的错误信息: minmax.cpp: In function 'int main()': minmax.cpp:7:11: error: 'INT_MAX' was not declared in this scope minInt = INT_MAX; ^ minmax.cpp:8:11: 错误:'INT_MIN' 未在此范围内声明 maxInt = INT_MIN; ^ minmax.cpp:14:16: 错误: 'operator>>' 不匹配(操作数类型是 'std::basic_istream::__istream_type {aka std::basic_istream}' 和 '') cin >> inInt >> endl;

标签: c++ loops for-loop max min


【解决方案1】:

这是你的问题:

cin >> inInt >> endl;

这里不需要endl

cin >> inInt;

【讨论】:

    【解决方案2】:

    我发现了 2 个错误:

    1. 不包括&lt;climits&gt;,其中定义了INT_MAXINT_MIN
    2. cin不支持endl

    所以代码应该是这样的:

    #include <iostream>
    #include <climits>
    
    using namespace std;
    int main()
    {
        int inNum, inInt, minInt, maxInt, i;
    
        minInt = INT_MAX;
        maxInt = INT_MIN;
        cout << "How many numbers would you like to enter?" << endl;
        cin >> inNum;
        cout << "Please enter " << inNum << " integers." << endl;
        for(i = 0 ; i < inNum; i++)
        {
                //Error 3: cin >> inInt >> endl; cin does not support endl
                cin >> inInt;
                if(inInt > maxInt)
                {
                        maxInt = inInt;
                }
                if(inInt < minInt)
                {
                        minInt = inInt;
                }
        }
        cout << "min: " << minInt << endl;
        cout << "max: " << maxInt << endl;
        return 0;
    }
    

    【讨论】:

    • 您好,当我根据您的建议重写代码时,它可以编译,但不能正常工作。例如,如果我指定要输入两个整数,然后输入 1 和 2,我的最大值将为 2,但最小值为 0。
    • 我认为它必须是 INT_MAXINT_MIN 值,让我编辑我的答案
    • 啊,我现在明白了。如果两者都定义为 0,如果我的输入都是大于零的正整数,那么最小值将始终为 0。无论如何,感谢 Alejandro 的帮助!!
    • INT_MININT_MAX&lt;climits&gt; 中定义,不应像您所做的那样自行定义。
    猜你喜欢
    • 2019-09-18
    • 2018-09-21
    • 2014-08-03
    • 2016-06-13
    • 2016-10-20
    • 2016-03-03
    • 2013-10-05
    • 1970-01-01
    • 2020-07-10
    相关资源
    最近更新 更多