军训结束了,现在来更新一下笔记。
在我们的程序中,往往会出现需要重复执行某段代码的情况,而语句一般是顺序执行的,当我们需要重复执行某个或某个语句组时,我们就会用到循环语句。循环语句有多种类型,以及循环控制语句,下面将一一列举。
循环类型
while 循环:
当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。以下是C++中 while 循环的用法。
while(condition)
{
statement(s);
}
- 在这段代码中,statement(s) 可以是一个单独的语句,也可以是几个语句组合而成的语句组。
- condition 可以是任意形式表达式(如变量、算术运算、函数调用等)。编译器会将其结果隐式转换为 bool 类型,任何非0值都会被转换为 true ,0会被转化为 false 。
- 当条件为 false 时,程序将会继续执行紧接着循环的下一条语句。
风险提示:避免用浮点数做精确判零(如 while(x != 0.0)),因精度误差可能导致无限循环
while 循环的关键点是循环可能一次都不会执行。当条件被测试且结果为假时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。
while 循环应该挺好理解的,对吧?
do...while 循环:
不像 for 和 while 循环,它们是在循环头部测试循环条件。do...while 循环是在循环的尾部检查它的条件do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。以下是C++ 中do...while 循环的语法:
do
{
statement(s);
}while( condition );
请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。
for 循环:
多次执行一个语句序列,简化管理循环变量的代码。以下是C++中 for 循环的用法。
for ( init; condition; increment )
{
statement(s);
}
- 在这段代码中,init 会被首先执行,你可以在这里声明并初始化任何循环控制变量(作用域仅在循环中),当然,也可以什么都不写,只写一个分号。
- 接下来,会判断 condition 。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
- 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量(一般是增加步长值)。该语句可以留空,只要在条件后有一个分号出现即可。
- 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
鉴于不太好理解,我在下面给出一个实例:
#include <iostream>
using namespace std;
int main ()
{
// for 循环执行
for( int a = 10; a < 20; a = a + 1 )
{
cout << "a 的值:" << a << endl;
}
return 0;
}
这段代码的for循环中,首先声明了一个循环控制变量a,并将其初始化赋值为10,因为a=10,小于20,所以 condition 为真,开始执行循环主体。循环主体输出a的值之后,控制流执行 increment ,即将a的值+1,此时a=11,然后 condition 再次被判断,因为a=11小于20,因此重新执行循环。以此类推,当输出完a的值为19时,程序再次将a的值+1,此时a=20,condition 为假,跳出循环,循环结束。
同时,for 语句允许简单的范围迭代,我准备后面再单开一文写这个。
循环嵌套:
循环内部是可以嵌套另一个循环的,C++ 允许至少 256 个嵌套层次,但一般不建议过多的循环嵌套。同时 不同类型的循环可以任意嵌套。比如,一个 for 循环可以嵌套在一个 while 循环内,反之亦然。
下面是一个找质数的小程序。
#include <iostream>
using namespace std;
int main ()
{
int i, j;
for(i=2; i<100; i++) {
for(j=2; j <= (i/j); j++) {
if(!(i%j)) {
break; // 如果找到,则不是质数
}
}
if(j > (i/j)) {
cout << i << " 是质数\n";
}
}
return 0;
}
循环控制语句
break 语句:
C++中,break语句有两个用法:
- 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句(即直接终止循环)。
- 它可用于终止 switch 语句中的一个 case(这个将会在下一期判断语句中讲到)。
下面我直接引用一张图片来直观展示 break 语句的用法(来源:菜鸟教程):

continue 语句:
C++中,continue 语句和 break 语句有点像,但 continue 语句不是直接终止循环,而是重新开始下一次循环。对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do...while 循环,continue 语句会导致程序控制回到条件测试上。
下面我直接引用一张图片来直观展示 continue 语句的用法(来源:菜鸟教程):

goto 语句:
任何编程语言都不建议使用 gotu语句goto语句容易导致程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。此处不进行说明。
无限循环:
当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C++ 程序员偏向于使用 for(;;) 结构来表示一个无限循环。

Comments NOTHING