提交 80168b86 编写于 作者: W wizardforcel

2019-08-26 11:01:53

上级 11176ffe
......@@ -2,7 +2,7 @@
> 原文: [https://beginnersbook.com/2017/08/cpp-do-while-loop/](https://beginnersbook.com/2017/08/cpp-do-while-loop/)
正如上一篇关于 [`while`循环](https://beginnersbook.com/2017/08/cpp-while-loop/)的教程中所讨论的,循环用于重复一个语句块,直到给定的循环条件返回`false`。在本教程中,我们将看到`do-while`循环。`do-while`循环类似于 while 循环,但它们之间存在差异:在`while`循环中,首先计算条件,然后执行循环体内的语句,另一方面在`do-while`循环中执行 - 首先执行,然后评估条件。
正如上一篇关于[`while`循环](https://beginnersbook.com/2017/08/cpp-while-loop/)的教程中所讨论的,循环用于重复一个语句块,直到给定的循环条件返回`false`。在本教程中,我们将看到`do-while`循环。`do-while`循环类似于`while`循环,但它们之间存在差异:在`while`循环中,首先计算条件,然后执行循环体内的语句,另一方面在`do-while`循环中执行 - 首先执行,然后求值条件。
#### `do-while`循环的语法
......@@ -15,10 +15,11 @@ do
## `do-while`循环如何工作?
首先,循环内的语句执行,然后条件得到评估,如果条件返回`true`,则控制跳转到`do`以进一步重复执行它,这会重复发生,直到条件返回`false`。一旦条件返回`false`,控制就会在`do-while`之后跳转到程序中的下一个语句。
首先,循环内的语句执行,然后条件得到求值,如果条件返回`true`,则控制跳转到`do`以进一步重复执行它,这会重复发生,直到条件返回`false`。一旦条件返回`false`,控制就会跳转到程序中`do-while`之后的下一个语句。
![C++ do while loop flow diagram](img/8a5f1d9785c32edcb5c78c6f602d2b04.jpg)
## C++中的`do-while`循环示例
## C++ 中的`do-while`循环示例
```cpp
#include <iostream>
......
# C++中的`continue`语句
# C++ 中的`continue`语句
> 原文: [https://beginnersbook.com/2017/08/cpp-continue-statement/](https://beginnersbook.com/2017/08/cpp-continue-statement/)
在循环内使用`continue`语句。每当在循环内遇到`continue`语句时,控制流直接跳转到循环的开头以进行下一次迭代,跳过循环体内语句的执行以进行当前迭代
在循环内使用`continue`语句。每当在循环内遇到`continue`语句时,控制流直接跳转到循环的开头以进行下一次迭代,跳过循环体内当前迭代的语句的执行
#### `continue`语句的语法
......@@ -12,7 +12,7 @@ continue;
## 示例:`for`循环中的`continue`语句
正如你可以看到输出缺少值 3,但循环迭代`num`值 0 到 6。这是因为我们在循环中设置了一个条件,这样就可以了`num`值等于 3 时遇到语句。因此,对于此迭代,循环跳过`cout`语句并开始下一次循环迭代。
正如你可以看到输出缺少值 3,但循环迭代`num`值 0 到 6。这是因为我们在循环中设置了一个条件,这种情况下`num`值等于 3 时遇到语句。因此,对于此迭代,循环跳过`cout`语句并开始下一次循环迭代。
```cpp
#include <iostream>
......
# 在 C++中使用`break`语句
# 在 C++ 中使用`break`语句
> 原文: [https://beginnersbook.com/2017/08/cpp-break-statement/](https://beginnersbook.com/2017/08/cpp-break-statement/)
**中断语句**用于以下两种情况:
**`break`语句**用于以下两种情况:
a)使用`break`语句立即退出循环。每当在循环内遇到`break`语句时,控制流就会直接从循环中退出。它与`if`语句一起使用,只在循环内部使用(参见下面的示例),以便它仅在特定条件下发生。
a)使用`break`语句立即退出循环。每当在循环内遇到`break`语句时,控制流就会直接从循环中退出。它与`if`语句一起使用,只在循环内部使用(参见下面的示例),以便它仅在特定条件下发生。
b)用于箱体后的`switch`箱控制结构。通常,在`switch case`中的所有情况都跟一个`break`语句,以避免后续的情况(参见下面的例子)执行。无论何时在`switch-case`块中遇到,控制器都从`switch-case`体中出来。
b)用于`switch-case`控制结构。通常,在`switch case`中的所有情况都跟一个`break`语句,以避免后续的情况(参见下面的例子)执行。无论何时在`switch-case`块中遇到,控制流都从`switch-case`体中出来。
#### `break`语句的语法
......@@ -20,7 +20,7 @@ break;
## 示例 - 在`while`循环中使用`break`语句
在下面的示例中,我们有一个从 10 到 200 运行的`while`循环,但由于我们有一个在循环计数器变量值达到 12 时遇到的`break`语句,循环终止并且控制流跳转到程序中的下一个语句之后循环体
在下面的示例中,我们有一个从 10 到 200 运行的`while`循环,但由于我们有一个在循环计数器,变量值达到 12 时遇到`break`语句,循环终止并且控制流跳转到程序中循环体之后的下一个语句
```cpp
#include <iostream>
......@@ -104,7 +104,7 @@ Case 2
Hey, I'm out of the switch case
```
在这个例子中,我们在每个`case`块之后都有`break`语句,这是因为如果我们没有它,那么后续的`case`块也会执行。不间断的同一程序的输出将是:
在这个例子中,我们在每个`case`块之后都有`break`语句,这是因为如果我们没有它,那么后续的`case`块也会执行。没有`break`的同一程序的输出将是:
```cpp
Case 2
......
# C++中的`goto`语句
# C++ 中的`goto`语句
> 原文: [https://beginnersbook.com/2017/08/cpp-goto-statement/](https://beginnersbook.com/2017/08/cpp-goto-statement/)
......@@ -25,7 +25,7 @@ label2:
> `goto`语句几乎从不在任何开发中使用,因为它们很复杂,使得程序的可读性更低,更容易出错。代替`goto`,你可以使用[`continue`](https://beginnersbook.com/2017/08/cpp-continue-statement/)和[`break`语句](https://beginnersbook.com/2017/08/cpp-break-statement/)。
## C++中`goto`语句的示例
## C++ 中`goto`语句的示例
```cpp
#include <iostream>
......@@ -45,8 +45,7 @@ int main(){
}
```
**
输出:**
**输出:**
```cpp
Enter a number: 42
......
# C++中的函数
# C++ 中的函数
> 原文: [https://beginnersbook.com/2017/08/cpp-functions/](https://beginnersbook.com/2017/08/cpp-functions/)
函数是用于执行特定任务的代码块,例如,假设您正在编写一个大型 C++程序,并且在该程序中,您希望多次执行特定任务,例如显示从 1 到 10 的值,为了做到这一点,你必须编写几行代码,每次显示值时都需要重复这些行。另一种方法是在函数内写入这些行,并在每次要显示值时调用该函数。这将使您的代码简单,可读和可重用。
函数是用于执行特定任务的代码块,例如,假设您正在编写一个大型 C++ 程序,并且在该程序中,您希望多次执行特定任务,例如显示从 1 到 10 的值,为了做到这一点,你必须编写几行代码,每次显示值时都需要重复这些行。另一种方法是在函数内写入这些行,并在每次要显示值时调用该函数。这将使您的代码简单,可读和可重用。
#### 函数的语法
......@@ -73,7 +73,8 @@ return_type function_name(parameter_list);
**注意:**在提供`parameter_list`时,您可以避免参数名称,就像我在上面的示例中所做的那样。我给了`int sum(int,int);`而不是`int sum(int num1,int num2);`
**函数定义:**编写函数的全部函数称为定义函数。
**函数定义:**编写函数的全部称为定义函数。
**函数定义语法:**
```cpp
......@@ -89,23 +90,25 @@ return_type function_name(parameter_list) {
function_name(parameters);
```
现在我们已经理解了函数的**工作,让我们看看 C++中的函数类型**
现在我们已经理解了函数的**工作原理**,让我们看看 C++ 中的函数类型。
## 函数类型
我们在 C++中有两种类型的函数:
![C++ types of functions: built-in and user-defined](img/78f29a2371b2731fd049ba6271ab480a.jpg)
1)内置函数
2)用户定义的函数
### 1)内置函数
内置函数也称为库函数。我们不需要声明和定义这些函数,因为它们已经在 C++库中编写,例如`iostream``cmath`等。我们可以在需要时直接调用它们。
内置函数也称为库函数。我们不需要声明和定义这些函数,因为它们已经在 C++ 库中编写,例如`iostream``cmath`等。我们可以在需要时直接调用它们。
#### 示例:C++内置函数示例
#### 示例:C++ 内置函数示例
这里我们使用内置函数`pow(x, y)`,它是`x``y`。此函数在`cmath`头文件中声明,因此我们使用`#include`指令将该文件包含在我们的程序中。
这里我们使用内置函数`pow(x, y)`,它是`x``y`次幂。此函数在`cmath`头文件中声明,因此我们使用`#include`指令将该文件包含在我们的程序中。
```cpp
#include <iostream>
......@@ -121,8 +124,7 @@ int main(){
}
```
**
输出:**
**输出:**
```cpp
32
......@@ -131,7 +133,8 @@ int main(){
### 2)用户定义的函数
![C++ functions](img/54490c8094bd9a1485e3b26ccf406a2a.jpg)
我们已经看过用户定义的函数,我们在本教程开头给出的示例是用户定义函数的示例。我们在程序中声明和写入的函数是用户定义的函数。让我们看另一个用户定义函数的例子。
我们已经看过用户定义的函数,我们在本教程开头给出的示例是用户定义函数的示例。我们在程序中声明和编写的函数是用户定义的函数。让我们看另一个用户定义函数的例子。
#### 用户定义的函数
......
# C++函数中的默认参数
# C++ 函数中的默认参数
> 原文: [https://beginnersbook.com/2017/08/cpp-default-arguments/](https://beginnersbook.com/2017/08/cpp-default-arguments/)
在调用函数时不提供任何参数或仅提供少量参数时,将使用默认参数。在编译程序期间使用默认参数。例如,假设您有一个[用户定义的函数](https://beginnersbook.com/2017/08/cpp-functions/) `sum`声明如下:`int sum(int a=10, int b=20)`,现在在调用此函数时,您不提供任何参数,简称为`sum()`;那么在这种情况下结果将是 30,编译器使用函数签名中声明的默认值 10 和 20。如果你只传递一个这样的参数:`sum(80)`那么结果将是 100,使用传递的参数 80 作为第一个值,20 个从默认参数中获取。
在调用函数时不提供任何参数或仅提供少量参数时,将使用默认参数。在编译程序期间使用默认参数。例如,假设您有一个[用户定义的函数](https://beginnersbook.com/2017/08/cpp-functions/)`sum`声明如下:`int sum(int a=10, int b=20)`,现在在调用此函数时,您不提供任何参数,简称为`sum()`;那么在这种情况下结果将是 30,编译器使用函数签名中声明的默认值 10 和 20。如果你只传递一个这样的参数:`sum(80)`那么结果将是 100,使用传递的参数 80 作为第一个值,20 个从默认参数中获取。
## 示例:C++中的默认参数
## 示例:C++ 中的默认参数
```cpp
#include <iostream>
......@@ -50,10 +50,11 @@ int sum(int a, int b, int c){
正如您在上面的示例中所看到的,我在函数声明期间仅为两个参数`b``c`分配了默认值。您可以为所有参数或仅选定的参数指定默认值,但在仅为某些参数指定默认值时,请记住以下规则:
> **如果为参数指定默认值,则后续参数必须为其分配默认值,否则将出现编译错误。**
> **如果为参数指定默认值,则必须为后续参数分配默认值,否则将出现编译错误。**
**例如:**让我们看一些有效和无效的案例。
**有效:**以下函数声明有效 -
**有效:**以下函数声明有效:
```cpp
int sum(int a=10, int b=20, int c=30);
......@@ -62,7 +63,7 @@ int sum(int a, int b, int c=30);
```
**无效:**以下函数声明无效 -
**无效:**以下函数声明无效
```cpp
/* Since a has default value assigned, all the
......
# C++递归示例
# C++ 递归示例
> 原文: [https://beginnersbook.com/2017/08/cpp-recursion/](https://beginnersbook.com/2017/08/cpp-recursion/)
函数调用自身的过程称为递归,相应的函数称为**递归函数**。理解递归的流行示例是阶乘函数。
**阶乘函数:** `f(n) = n * f(n-1)`,基本条件:如果`n <= 1``f(n)= 1`。不要担心我们将讨论什么是基本条件为什么它很重要
**阶乘函数:** `f(n) = n * f(n-1)`,基本条件:如果`n <= 1``f(n)= 1`。不要担心我们将讨论什么是基本条件,以及为什么它很重要。
在下图中。我已经证明了在函数达到基本条件之前,阶乘函数如何调用自身。
![C++ recursion](img/7e7491750402933465fdf20aa6556520.jpg)
让我们用 C++程序解决问题。
让我们用 C++ 程序解决问题。
## C++递归示例:阶乘
## C++ 递归示例:阶乘
```cpp
#include <iostream>
......@@ -60,9 +60,9 @@ if (n <= 1)
**直接递归:**当函数调用自身时,它被称为直接递归,我们上面看到的例子是直接递归示例。
**间接递归:**当函数调用另一个函数并且该函数调用调用函数时,这称为间接递归。例如:函数 A 调用函数 B,函数 B 调用函数 A.
**间接递归:**当函数调用另一个函数并且该函数调用这个函数时,这称为间接递归。例如:函数 A 调用函数 B,函数 B 调用函数 A。
### C++中的间接递归示例
### C++ 中的间接递归示例
```cpp
#include <iostream>
......
# C++中的数组
# C++ 中的数组
> 原文: [https://beginnersbook.com/2017/08/cpp-arrays/](https://beginnersbook.com/2017/08/cpp-arrays/)
数组是存储在连续内存位置的类似项的集合。在编程中,有时一个简单的变量不足以容纳所有数据。例如,假设我们要存储 500 名学生的标记,这个任务有 500 个不同的变量是不可行的,我们可以定义一个大小为 500 的数组,可以保存所有学生的标记。
数组是存储在连续内存位置的类似项的集合。在编程中,有时一个简单的变量不足以容纳所有数据。例如,假设我们要存储 500 名学生的信息,这个任务有 500 个不同的变量是不可行的,我们可以定义一个大小为 500 的数组,可以保存所有学生的信息。
![C++ arrays](img/7fa84216b7da3bc81c48ff11c995f4c3.jpg)
## 用 C++声明一个数组
有几种方法可以声明一个数组。
方法 1:
```cpp
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册