文章目录

  • 专栏导读
  • 文章导读
  • 什么是循环
  • while循环
  • do while循环
  • for循环
  • 循环结构中的break与continue
    • break
    • continue
  • goto语句

专栏导读

作者简介:花想云,在读本科生一枚,致力于 C/C++、Linux 学习。

专栏简介:本文收录于 C语言初阶专栏,本专栏主要内容为C语言的初阶知识的全套讲解,包含初识C语言、函数、数组、分支与循环、操作符、指针初阶的讲解。

相关专栏推荐:C语言进阶系列数据结构与算法

文章导读

本篇文章主要内容为学习C语言中的循环结构,并掌握whiledo whilefor三种形式的循环,并认识关键字breakcontinue以及goto语句。


什么是循环

什么是循环?简单定义,循环就是不断地重复做一件事情。在一段程序中,同样也能实现循环。C语言为我们提供了三个关键字来实现三种不同形式的循环:

  • while
  • for
  • do while

虽然有三种不同形式的循环,但它们也仅仅是长的样子不同罢了。不管是哪一种循环方式,都是由两个基本结构组成的:

  • 循环的内容
  • 进入循环的条件

首先来看看while循环。

while循环

while的语法结构很简单:

while(表达式){...//循环语句}
  • 表达式:进入循环的条件若表达式的结果为真,则执行循环语句;若为假,则不执行
  • 循环语句: 循环的内容

举个例子,若是我们需要在屏幕上打印 0—9 的数字,只需这样写:

int main(){    int i = 0;    while (i < 10)    {        printf("%d ", i);        i=i+1;    }    return 0;}


这段代码的运行逻辑是:

  • 判断表达式是否为真,若为真,则进入循环,执行循环语句
  • 执行完循环语句,再次判断表达式是否为真,若为真,就继续执行循环语句,如此往复

再来看看while循环的兄弟——do while。

do while循环

do while循环的语法结构是这样的:

do{//...(循环语句)}while(表达式);
  • 表达式:进入循环的条件若表达式的结果为真,则执行循环语句;若为假,则不执行
  • 循环语句: 循环的内容

do while循环与while循环非常相似,只有一点不同:

  • while先判断表达式,再执行循环语句
  • do while先执行循环语句,再判断表达式

若我们还想在屏幕上打印 0—9 ,则需要这样写:

int main(){    int i = 0;    do    {        printf("%d ", i);        i = i + 1;    } while (i < 10);    return 0;}

再来认识一下for循环。

for循环

for循环的语法结构:

for(表达式1; 表达式2; 表达式3){...//循环语句;}
  • 表达式1:用于初始化循环变量
  • 表达式2:用于判断进入循环的条件是否为真
  • 表达式3:用于控制循环遍历

什么是循环变量

  • 用于控制循环的变量,例如上面两个例子中的变量i;

for循环所说与while循环长相差异有点大。但是对比一下就会发现相似的地方:

  • while循环的循环变量定义在{}的外面,for循环可以定义在()外面,也可以定义在()里面。
  • 1,2两种写法其实并没有本质区别,只不过第一种写法是C99标准才支持的。
1.定义在里面(C99支持)for (int i = 0; i < 10; i++);2.定义在外面int i = 0;for (i = 0; i < 10; i++);
  • while循环的判断是否进入循环的表达式在()中,for循环的判断为表达式2
  • while循环控制循环变量的语句{}内,for循环中为表达式3

利用for循环在屏幕上打印 0—9 的数字,应该这样写:

for (int i = 0; i < 10; i++){    printf("%d ", i);}

循环结构中的break与continue

为了好的控制循环,C语言还为我们提供了两个关键字breakcontinue,以适应各种复杂的情况。

break

这里的break与上一章分支语句中的switch语句中的break作用相似。

break的作用:

  • 在循环结构中当程序执行到break时,就立即停止循环并彻底结束循环

用法示例:

在打印0—9的过程中,加入break语句,看看是什么效果:

int main(){    int i = 0;    while (i<10)    {        if (i == 5)        {            break;        }        printf("%d ", i);        i = i + 1;    }    return 0;}


这段程序的运行逻辑是:

  • 在循环的过程中,当 i 的值为5时。满足进入if的条件,执行break,循环就不会在往下执行
  • 注意,这时i的值是5.屏幕上打印1—4

break在三种循环中的作用都是相同的,这里就不再一一举例。

continue

continue的作用:

  • 在循环结构中,当程序执行到continue语句时,不再执行本次循环,直接进入下一次循环。注意,不是彻底结束循环,而仅仅是结束本次循环

用法示例:

打印 0—9 的数字时,不想打印5:

int main(){    int i = 0;    for (int i = 0; i < 10; i++)    {        if (i == 5)        {            continue;        }        printf("%d ", i);    }    return 0;}

goto语句

C语言中提供了可以随意滥用的 goto 语句和标记跳转的标号。从理论上 goto 语句是没有必要的,实践中没有 goto 语句也可以很容易的写出代码。

但是某些场合下 goto 语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

  • 例如,一次跳出两层或多层循环

多层循环这种情况使用 break 是达不到目的的。它只能从最内层循环退出到上一层的循环。

goto 语言真正适合的场景如下:

for(...)    for(...)   {        for(...)       {            if(disaster)                goto error;       }   }    …error:     ...// 处理错误情况

如上,程序中不管嵌套了多少层循环,只要遇到goto语句,就会跳到goto语句标记(例如error)的地方并继续向下执行。

点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
*** ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓***