首页 > 编程笔记 > C语言笔记 阅读:8

C语言中的break和continue(非常详细,附带实例)

在本节中,带大家学习 C 语言的两个关键字,即 break 和 continue,用于编写更为复杂的循环流程。

C语言break跳出循环

在 C语言中,break 是一个关键字,用于跳出当前循环结构(for、while、do-while 循环),并继续执行循环后面的代码。

当程序执行到 break 语句时,程序会立即跳出循环并执行下一条语句。也就是说,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;
}
该代码中,while 的循环条件依然始终为真,因此不能期望从 while 处跳出循环。但是,我们把实际的循环条件放置到了 if 语句中。

计数器 i 为 0~9 时,程序无法进入 if 内部。一旦计数器 i 为 10,程序就进入 if 内部,执行了 break 语句,并立即跳出了 while 循环。

运行结果为:

0 1 2 3 4 5 6 7 8 9
i=10


break 语句被执行后,程序立刻从 break 处跳至循环结束,break 语句后的循环行为将均不执行。我们可以尝试修改代码,把 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;
}
运行结果为:

0 1 2 3 4 5 6 7 8 9 10
i=10

可以看出,这一次比上面多输出了数字 10。因为当 i 为 10 时,printf() 函数将先被执行。然后,当程序遇到满足循环条件的 if 语句时,它进入 if 语句,执行 break,并跳出循环。

最后,我们尝试把 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;
}
运行结果为:

0 1 2 3 4 5 6 7 8 9
i=10

这一次的结果和第一次结果一致,输出为 0~9。当 i 的值为 9 并被输出时,i 自增为 10,最后程序进入 if 语句,执行 break,并跳出循环。

除了上述的用法,我们还可以在其他场景中使用 break。例如,我们可以编写一个密码验证程序,要求用户输入密码,如果用户输入的密码不正确,则程序将输出密码错误提示,并要求用户重新输入密码:
#include <stdio.h>
int main()
{
    int password;
    while(1)
    {
        scanf("%d", &password);
        if (password == 12345)
        {
            break;
        }
        printf("password error\n");
    }
    printf("welcome back\n");
    return 0;
}
运行结果为:

123
password error
1234
password error
12345
welcome back

当用户输入正确的密码时,程序将跳出循环,输出“welcome back”并结束运行。如果用户输入的密码错误,则程序会一直提示密码错误并要求用户重新输入,直到用户输入正确的密码。

C语言continue开始新一轮循环

在 C语言中,continue 是一个关键字,用于跳过循环结构(for、while、do-while 循环)中前循环的剩余部分并开始下一次循环。也就是说,当程序执行到 continue 语句时,它会立即跳过当前循环中后续的语句,直接进入下一次循环。

例如:
#include <stdio.h>
int main()
{
    int i = 0;
    while(i < 20)
    {
        if (i == 6)
        {
            i = 15;
            continue;
        }
        printf("%d ", i);
        i++;
    }
    return 0;
}
运行结果为:

0 1 2 3 4 5 15 16 17 18 19

该代码使用 while 循环输出 0~19 的数字,其中 0~5 是正常输出的。当变量 i 为 6 时,if 条件满足,i 被赋值为 15,接着执行 continue。continue 将跳过本次循环的内容,重新开始循环。因此,6~14 的值被跳过,从 15 开始继续循环直到 19。

需要注意的是,在使用 continue 语句时,需要确保程序不会陷入无限循环,即需要保证循环条件最终能够得到满足或者在循环内部使用 break 语句。另外,过多使用 continue 语句也会影响程序的可读性和可维护性。

使用break和continue

在 for 循环中,同样可以使用关键字 break 和 continue 来控制循环的执行流程。

1) 在for循环中使用continue

关键字 continue 也可以用于 for 循环。例如:
#include <stdio.h>
int main()
{
    for(int i = 0; i < 20; i++)
    {
        if (i == 6)
        {
            i = 15;
            continue;
        }
        printf("%d ", i);
    }
    return 0;
}
运行结果:

0 1 2 3 4 5 16 17 18 19

在这段代码中,当 i 等于 6 时,我们使用 continue 关键字跳过这次循环。

值得注意的是,在 for 循环中使用 continue 关键字会产生不同于 while 循环的结果。因为 for 循环在每次循环结束后,将执行 for 语句括号内的第三个表达式,即更新计数器表达式。因此,当 for 循环遇到 continue 关键字时,它将先执行 i++ 语句,将 i 的值更新为 16,然后开始新一轮的循环,判断表达式 i < 20 是否成立。

2) 在for循环中使用break

除了关键字 continue,我们还可以在 for 循环中使用关键字 break。例如:
#include <stdio.h>
int main()
{
    int i = 0;
    for(i = 0; i < 20; i++)
    {
        if (i == 6)
        {
            break;
        }
    }
    printf("%d ", i);
    return 0;
}
运行结果为:

6

在这段代码中,当 i 等于 6 时,使用 break 关键字跳出循环。与 continue 关键字不同,使用 break 关键字后,for 循环将直接跳出循环,而不更新计数器。

3) 循环嵌套中使用break和continue

在循环嵌套中,使用 break 和 continue 关键字时,会影响哪个循环呢?下面我们来看一个实例:
#include <stdio.h>
int main()
{
    for(;;)
    {
        for(;;)
        {
            break;    // 跳出内层循环
        }
        break;      // 跳出外层循环
    }
    return 0;
}
在循环嵌套中,break 和 continue 会影响它们所处的直接上级循环。对于上面的代码,内层循环调用 break 跳出自身的循环进入外层循环,外层循环再次调用 break 结束外层循环。

相关文章