当前位置: 首页 > 知识库问答 >
问题:

c:关于语句和参数的常规q[重复]

羊毅庵
2023-03-14

我正在学习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中的

谢谢:)

共有1个答案

彭鸿哲
2023-03-14

这是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规范的