【 1. 循环 】
1.1 循环类型
循环类型 |
描述 |
while 循环 |
当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 |
for 循环 |
多次执行一个语句序列,简化管理循环变量的代码。 |
do…while 循环 |
除了它是在循环主体结尾测试条件外,其他与 while 语句类似。 |
嵌套循环 |
您可以在 while、for 或 do…while 循环内使用一个或多个循环。 |
while(condition) //condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。当条件为假时,程序流将继续执行紧接着循环的下一条语句。
{
// 这里放代码块
}
/*
1、init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
2、接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
3、在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
4、条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
*/
for ( init; condition; increment )
{
// 这里放代码块
}
/*
条件表达式出现在循环的尾部,所以循环中的 代码块 会在条件被测试之前至少执行一次。
如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 代码块 。这个过程会不断重复,直到给定条件变为假为止。
*/
do
{
// 这里放代码块
}while( condition );
1.2 循环控制语句
- 循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。C++ 提供了下列的控制语句。
控制语句 |
描述 |
break 语句 |
终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。 |
continue 语句 |
引起循环跳过主体的剩余部分,立即重新开始测试条件。 |
goto 语句 |
将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。 |
break 语句
- 当 break 语句出现在一个循环内时,循环会立即终止,且程序将继续执行紧接着循环的下一条语句。
- 它可用于终止 switch 语句中的一个 case。
- 当使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
#include <iostream>
using namespace std;
int main ()
{
// 局部变量声明
int a = 10;
// do 循环执行
do
{
cout << "a 的值:" << a << endl;
a = a + 1;
if( a > 15)
{
// 终止循环
break;
}
}while( a < 20 );
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/cbede8518c844d3f85b9e7e7696a355a.png)
continue 语句
- continue 会跳过当前循环中的代码,强迫开始下一次循环。
- 对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do…while 循环,continue 语句会导致程序控制回到条件测试上。
#include <iostream>
using namespace std;
int main ()
{
// 局部变量声明
int a = 10;
// do 循环执行
do
{
if( a == 15)
{
// 跳过迭代
a = a + 1;
continue;
}
cout << "a 的值:" << a << endl;
a = a + 1;
}while( a < 20 );
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b73ab574235b4e6fa2744a1afafd62d7.png)
#include <iostream>
using namespace std;
int main ()
{
// 局部变量声明
int a = 10;
for(a=10;a<20;a++)
{
if( a == 15)
{
a = a + 1;
continue;// 跳过后面的语句,执行下一次循环即开始执行a++
}
cout << "a 的值:" << a << endl;
}
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/8d484b32c6824beaa1e3ed1c6414ea3c.png)
goto 语句
- goto 语句允许把控制无条件转移到同一函数内的被标记的语句。在任何编程语言中,都不建议使用 goto 语句。 因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。
goto label;
...
...
label: statement;
#include <iostream>
using namespace std;
int main ()
{
// 局部变量声明
int a = 10;
// do 循环执行
LOOP:do
{
if( a == 15)
{
// 跳过迭代
a = a + 1;
goto LOOP;
}
cout << "a 的值:" << a << endl;
a = a + 1;
}while( a < 20 );
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/9b508c1592c24e0a92ee04baee411ad9.png)
1.3 无限循环
- 如果条件永远不为假,则循环将变成无限循环。
- for 循环实现 无限循环。由于构成循环的三个表达式中任何一个都不是必需的,可以将某些条件表达式留空来构成一个无限循环。
for(;;)
{
// 这里是无限循环执行的语句。
}
while(1)
{
// 这里是无限循环执行的语句。
}
【 2. 选择 】
语句 |
描述 |
if 语句 |
一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 |
if…else 语句 |
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 |
嵌套 if 语句 |
在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 |
switch 语句 |
一个 switch 语句允许测试一个变量等于多个值时的情况。 |
嵌套 switch 语句 |
在一个 switch 语句内使用另一个 switch 语句。 |
switch 语句
switch(expression){
case constant-expression :
statement(s);
break; // 可选的
case constant-expression :
statement(s);
break; // 可选的
// 您可以有任意数量的 case 语句
default : // 可选的
statement(s);
}
- switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
- 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
- case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
- 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
- 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
- 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
#include <iostream>
using namespace std;
int main ()
{
// 局部变量声明
char grade = 'D';
switch(grade)
{
case 'A' :
cout << "很棒!" << endl;
break;
case 'B' :
case 'C' :
cout << "做得好" << endl;
break;
case 'D' :
cout << "您通过了" << endl;
break;
case 'F' :
cout << "最好再试一下" << endl;
break;
default :
cout << "无效的成绩" << endl;
}
cout << "您的成绩是 " << grade << endl;
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c521f70325747ef9d1ad40b99830d76.png)
?:语句
- ? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
Exp1 ? Exp2 : Exp3; // 其中,Exp1、Exp2 和 Exp3 是表达式。
#include <iostream>
using namespace std;
int main ()
{
int i=5;
i==5? cout << "i等于5 " << endl :cout << "i不等于5 " << endl;
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/9e1614f2d3334ac687f6e2d157f694d1.png)