C++ 在C+中查找最小最大值+;

C++ 在C+中查找最小最大值+;,c++,C++,我的练习如下:给定一个包含N个整数的列表,求其平均值(作为双精度)、最大值、最小值和范围。您的程序将首先要求输入N,即用户将输入的列表中的整数数。然后用户将再输入N个数字 这是我的密码: #include "stdafx.h" #include <iostream> using namespace std; int main() { int n; cout << "Input n: "; cin >> n; int firs

我的练习如下:给定一个包含N个整数的列表,求其平均值(作为双精度)、最大值、最小值和范围。您的程序将首先要求输入N,即用户将输入的列表中的整数数。然后用户将再输入N个数字

这是我的密码:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    int n;
    cout << "Input n: ";
    cin >> n;

    int first;             //**LINE NUMBER 1**
    cout << "No 1 is: ";
    cin >> first;
    int max = first;
    int min = first;

    for (int i=1; i<n;i++) //**LINE NUMBER 2**
    {
        int x;
        cout << "No " << i+1 << " is: ";
        cin >> x;
        first = x;         //**LINE NUMBER 3**
        if (max < x)
        {
           max = x;
        }
        if (min > x)
        {
           min = x;
        }
    }
    cout << "max is: " << max << endl;
    cout << "min is: " << min << endl;
    cout << "mean is: " << (double) (max+min)/2 << endl; //**LINE NUMBER 4**
    cout << "range is: " << max - min << endl;

    return 0;
}
#包括“stdafx.h”
#包括
使用名称空间std;
int main()
{
int n;
cout>n;
int first;//**行号1**
cout>首先;
int max=第一;
int min=第一;
对于(int i=1;i井:

从本质上讲,没有一行是错误的。更重要的是,它们最好用另一种方式来完成。即:

  • int first=0
    只是确保开始时
    first==0
    int first;
    可能会导致问题,因为它最初被分配给一个任意数字(无论变量指向的内存地址发生了什么)

  • 虽然
    ++i
    i++
    在for循环中的工作方式与迭代器相同,但它们在其他用法上有着非常细微的区别。请阅读更多关于这方面的信息

  • first+=x
    本质上是
    first=first+x
    ,它更清晰地勾勒出了您的代码和它之间的区别。这也清楚地说明了为什么
    int first=0
    如此重要。如果
    first
    是一些随机值,那么所有数字的总和(这就是第一个
应该是的)将随机分配到一个数字,而不总是0

  • 事实上,最后一个是唯一一个你是错的。
    平均值
    被定义为所有数据的总和除以数据点的数量(与
    平均值
    相同)其中,
    中值
    被描述为数据的中点,或者是描述数据最大值和最小值之间中点的数字。您计算的
    平均值
    实际上是
    中值
    。其复杂性在于有时,根据您的数据,
    平均值=中值
    。例如,如果您的数据是
    3,4,5
    ,则平均值和中值都等于
    4


  • 我希望这能为你澄清一些事情:)

    这是作弊吗?你是什么意思?这里的方法没有使用
    迭代器
    算法
    。这个问题及其解决方案来自麻省理工学院的开放课程:前两个差异是风格上的。至于后两个差异,如果输入了两个以上的值,你的代码将无法正确计算平均值。显然,你的测试用例不足。谢谢你的详细回答!我很清楚,除了一点:初始化
    first==0
    后,我立即用
    cin>>first
    覆盖它。这真的重要吗?不,我没有意识到你这么做了。如果你将初始化为不同的值,那么使用
    first=0
    是非常重要的就我所理解的你的评论而言,
    int first=0;
    int first;
    没有任何区别,因为我首先用
    cin>>立即覆盖它;
    我对吗?据我所知,是的