『C语言从入门到进阶』第 ② 期 - 循环语句

举报
花想云 发表于 2023/05/31 20:44:53 2023/05/31
【摘要】 本篇文章主要内容为学习C语言中的循环结构,并掌握while、do while、for三种形式的循环,并认识关键字break、continue以及goto语句。

image.png

💐文章导读

本篇文章主要内容为学习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;
}

image.png

这段代码的运行逻辑是:

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

再来看看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;
}

image.png

再来认识一下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);
}

image.png

🌷循环结构中的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;
}

image.png

这段程序的运行逻辑是:

  • 在循环的过程中,当 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;
}

image.png

🌷goto语句

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

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

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

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

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

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。