5-3. 循环辅助,break和continue

  • 学习人数 30K+
  • 适合所有人群学习
avatar
林耿亮

你好编程主讲老师

上一节中我们讨论了循环结构。这一节中,我们继续学习两个新的关键词break和continue,用于编写更加为复杂的循环流程。

1. 有限循环的3个要素

#include <stdio.h>
int main()
{
    int i = 0;
    while(1)
    {
        printf("%d ", i);
        i++;
    }
    printf("\ni=%d ", i);
    return 0;
}

死循环

上面这段代码将陷入死循环,无限次数地打印i的值。除非你按下组合键Ctrl + C结束程序。

让我们想办法把这段代码变为有限次数的循环,仅循环10次。

在上一节中我们探讨了有限次数循环程序的3个要素。

  1. 开始时,为计数器设置初始值。
  2. 计数器与一个有限值比较作为循环条件
  3. 更新计数器

这段程序满足了1、3两个要素,但是循环条件始终为真,无法结束循环。我们只要将while中的循环条件改为i < 10,这样计数器i将只能从0自增到9,完成10次循环。

2. 使用break打破循环

要达到上述效果,我们可以修改while中的循环条件。但是,现在有了一个新选择。

可以将循环条件放置于while括号以外的地方,并配合上break关键词,也能达到同样的效果。

#include <stdio.h>
int main()
{
    int i = 0;
    while(1)
    {
        if (i == 10)
        {
            break;
        }
        printf("%d ", i);
        i++;
    }
    printf("\ni=%d ", i);
    return 0;
}

break10次跳出

这下代码仅打印了出了0到9就退出循环了。while的循环条件依然始终为真,因此没法指望从while处跳出循环。但是,我们把实际的循环条件放置到了if语句中。计数器i在0到9时,无法进入if内部。而一旦i为10,进入if内部,执行了break语句,立即跳出了while循环。

break打破循环

break执行后,程序立刻从break处跳至循环结束。break语句后的循环行为将均不执行。

让我们把if和break放到printf的后面。

#include <stdio.h>
int main()
{
    int i = 0;
    while(1)
    {
        printf("%d ", i);
        if (i == 10)
        {
            break;
        }
        i++;
    }
    printf("\ni=%d ", i);
    return 0;
}

break11次跳出

这一次比上面多打印了数字10。i为10时,printf函数将先执行。而后遇到if语句,条件满足进入if语句。break被执行,这才跳出循环。

最后我们把if和break放到循环的最后。

#include <stdio.h>
int main()
{
    int i = 0;
    while(1)
    {
        printf("%d ", i);
        i++;
        if (i == 10)
        {
            break;
        }
    }
    printf("\ni=%d ", i);
    return 0;
}

break10次跳出2

这一次的结果和第一次结果一致,输出了0到9。 当i的值为9被打印后,紧接着i自增为10,最后进入if执行break,跳出了循环。