我正在学习c。我遇到一个关于温度的作业,我不懂。你们能帮我澄清一些事情吗?
这是密码
// compute mean and median temperatures
int main()
{
vector<double> temps; // temperatures
for (double temp; cin>>temp; ) // read into temp
temps.push_back(temp); // put temp into vector
**// compute mean temperature:
double sum = 0;
for (int x : temps) sum += x;
cout << "Average temperature: " << sum/temps.size() << '\n';**
// compute median temperature:
sort(temps); // sort temperatures
cout << "Median temperature: " << temps[temps.size()/2] << '\n';
}
现在第二个块(//计算平均温度)是我无法遵循的东西。
首先,for语句与单个参数一起使用。这难道不意味着只有一个初始表达式,没有条件吗?
我也不认为我对int X有明确的理解:temps在这段代码中没有定义int X。它不会因为没有赋值而导致错误吗?假设它的值为1;它做什么/检查什么?它是否检查X在向量temp中的拟合次数?那么为什么不这样做呢:
int sum_of_measurements = 0; //value of all measurements
for (int y = 0; y <= temps.size(); ++y){
sum_of_measurements = sum_of_measurements + temps[y]; // add value of measurement to the total for each measurement
}
double mean = sum_of_measurements/temps.size();
cout << mean <<'\n';
//rest of code
这个标识符叫什么,以便我可以了解更多信息(int X:temps中的:
)
谢谢:)
这是C 11中介绍的基于范围的循环。
类似以下语句:
for (int someVal: someCollection)
将对集合中的每个项目(每次迭代一个)设置someVal
,并对其进行迭代。
在您的特定情况下(将x
的类型更改为更合适的类型后),片段:
double sum = 0;
for (double x : temps)
sum += x;
在功能上等同于:
double sum = 0;
for (int i = 0; i < temps.size(); ++i)
sum += temps[i];
主要内容:形参和实参的区别和联系如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值。 这一节我们先来讲解C语言函数的参数,下一节再讲解C语言函数的返回值。 C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来
书中的这部分内容描述了 Swift 编程语言的正式语法。这里描述的语法意在帮助你了解语言的更多细节,而不是允许你直接实现解析器或者编译器。 Swift 语言相对较小,因为看上去出现在 Swift 代码中各种地方的常见类型、函数和运算符实际上是在 Swift 标准库中定义的。尽管这些类型、函数和运算符不是 Swift 语言自身的一部分,但它们还是在书中这部分的讨论当中大量使用了。 如何阅读语法 用来
本页内容包括: 如何阅读语法 本书的这一节描述了Swift编程语言的形式语法。这里描述的语法是为了帮助您更详细的了解该语言,而不是让您直接实现一个解析器或编译器。 Swift语言相对小点,这是由于在Swift代码中几乎无处不在的许多常见的的类型,函数以及运算符都由Swift标准库来定义。虽然这些类型,函数和运算符不是Swift语言本身的一部分,但是它们被广泛用于这本书的讨论和代码范例。 如何阅读语
我对这个方法引用语法有点困惑。 需要一个双函数,然而,尽管温度较高,lessThanTemp仍然是有效的参数。lessThanTemp()只接受一个参数。 这一行到底发生了什么:? MCVE:
C++标准中的哪种特定语言是造成这种格式不佳的原因? 当两个模板定义定义一个模板的相同专门化时(当它们是一个模板的两个不同专门化时),它在哪里说明? 它在哪里说这是不允许的(重新定义相同的专门化)?
数组 多变量解构 剩余参数与扩展语句相反,它将不定数量的逗号分隔的表达式收集到数组中。 扩展语句 同样,对象字面量可以做同样的事情: 剩余参数 技术上,JavaScript已经在每个函数上设置了一个 变量(除了箭头函数),但是arguments 有很多问题,其中之一就是它在技术上不是数组。 注意: 通常扩展语句和剩余参数被引用为Spread和Rest运算符,但它们不是根据ECMAScript规范的