C++学习第六弹:循环

youziawa 发布于 2025-09-12 75 次阅读


军训结束了,现在来更新一下笔记。

在我们的程序中,往往会出现需要重复执行某段代码的情况,而语句一般是顺序执行的,当我们需要重复执行某个或某个语句组时,我们就会用到循环语句。循环语句有多种类型,以及循环控制语句,下面将一一列举。

循环类型

while 循环:

当给定条件为时,重复语句或语句组。它会在执行循环主体之前测试条件。以下是C++中 while 循环的用法。

while(condition)
{
   statement(s);
}
  • 在这段代码中,statement(s) 可以是一个单独的语句,也可以是几个语句组合而成的语句组。
  • condition 可以是任意形式表达式(如变量、算术运算、函数调用等)。编译器会将其结果隐式转换为 bool 类型,任何非0值都会被转换为 true ,0会被转化为 false 。
  • 当条件为 false 时,程序将会继续执行紧接着循环的下一条语句。

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语句有两个用法:

  1. 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句(即直接终止循环)。
  2. 它可用于终止 switch 语句中的一个 case(这个将会在下一期判断语句中讲到)。

下面我直接引用一张图片来直观展示 break 语句的用法(来源:菜鸟教程):

continue 语句:

C++中,continue 语句和 break 语句有点像,但 continue 语句不是直接终止循环,而是重新开始下一次循环。对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do...while 循环,continue 语句会导致程序控制回到条件测试上。

下面我直接引用一张图片来直观展示 continue 语句的用法(来源:菜鸟教程):

goto 语句:

任何编程语言都不建议使用 gotu语句goto语句容易导致程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。此处不进行说明。

无限循环:

当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C++ 程序员偏向于使用 for(;;) 结构来表示一个无限循环。