C++ 在C+中查找最小最大值+;
我的练习如下:给定一个包含N个整数的列表,求其平均值(作为双精度)、最大值、最小值和范围。您的程序将首先要求输入N,即用户将输入的列表中的整数数。然后用户将再输入N个数字 这是我的密码: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
#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>>立即覆盖它;
我对吗?据我所知,是的