零基础玩转C语言系列 | 循环语句


前言

我们已经掌握了if分支语句,当条件表达式成立,if后面的语句执行,否则不执行,但是这条语句只会执行一次。但是我们发现我们生活中很多实际的例子是同一件事情需要完成很多次,比如:一日三餐、太阳东升西落、春夏秋冬四季的变换。那我们怎么办?C语言给我们引入了循环语句


一、什么是循环语句?

循环语句是由循环体循环的终止条件两部分组成的。
循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体,判断程序是否继续循环的条件被称为循环终止条件


二、循环语句的分类

C语言中循环大致分为三类,分别为:while循环、for循环和do…while 循环

1.while循环

1.1 while循环流程

流程如下:
while循环

while循环的流程大致可以表述为:首先判断while表达式,如果表达式成立(!=0),执行循环体stmt语句,接着继续返回表达式循环判断;若表达式不成立(==0),或是在执行stmt语句中中遇到break语句,直接退出循环

1.2 while循环语法

// while语法结构
while (表达式)
{
   循环语句;
}

1.3 while循环代码示例

屏幕上打印1-10的数字,代码如下(示例):

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

上述代码表达式为:i<10,循环体为:printf("%d ",i)和i++
程序开始i=1,表达式成立,程序执行循环体语句,屏幕打印数字1,且i自增1,接着返回表达式判断,2<=10,表达式成立,屏幕打印2,,且i自增1,…直到循环到i=11,表达式不成立,循环结束。

注意:

  1. while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非 0)即可继续循环。
  2. 循环体中有必须要改变的条件表达式值的语句,否则就会很容易变成死循环(若上述徐循环体中没有i++语句,循环结构就变成一直输出1的死循环)
1.3.1 while循环中的break

下面代码的输出结果什么?

# include <stdio.h>

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

输出:1 2 3 4
不难看出,在循环中只要遇到break,就停止后期的所有循环,直到终止循环。所以,while中的break是用于永久终止循环

1.3.2 while循环中的continue

下面两段代码的输出结果什么?

# include <stdio.h>
// 代码1
int main()
{
   int i=1;
   while (i<=10)
   {
      if (i==5)
         continue;
      printf("%d ",i);
      i++;
   }
   return 0;
}

// 代码2
int main()
{
   int i=1;
   while (i<=10)
   {
      i++;
      if (i==5)
         continue;
      printf("%d ",i);
   }
   return 0;
}

代码1输出:1 2 3 4 - 光标一直在闪动;代码2输出:1 2 3 4 6 7 8 9 10
continue是用于终止本次循环,也就是本次循环中continue后面的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环入口的判断。

上述代码1,当i=5时,if表达式成立,continue执行,跳出本次循环,i不能自增,依旧是5,此时循环条件成立,继续循环;i=5室if表达式成立,再次执行continue语句,程序死循环;代码2中,i=4进入循环,经过自增,i=5,if条件表达式成立,continue执行,跳出本次循环,接着i=5进入循环,自增后i=6,if表达式不成立,continue得不到执行。所以代码2输出的结果为1 2 3 4 6 7 8 9 10。


2.for循环

2.1 for 循环流程

流程如下:
for循环流程

2.2 for循环语法

for(表达式1;表达式2;表达式3)
   循环语句;

表达式1为初始部分,用于初始化循环变量;
表达式2为条件判断部分,用于判断循环时候终止;
表达式3为调整部分,用户循环条件的调整;

不难发现,while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改不够集中方便。所以,for循环的风格更胜一筹!

2.3 while循环代码实例

屏幕上打印1-10的数字,代码如下(示例):

# include <stdio.h>

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

首先表达式1定义初始变量i=1,进入表达式2进行条件判断,i<=10,条件成立,进入循环体,屏幕打印i 的值,接着进入表达式3,i自增,一个循环结束。再判断,再循环,再自增,再判断…直到i不满足条件,循环退出。

2.3.1 for循环中的break和continue

在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的
下面代码会输出什么?

# include <stdio.h>
// 代码1
int main()
{
   int i=0;
   for (i=1;i<=10;i++)
      if(i==5)
         break;
      printf("%d ",i);
   return 0;
}
// 代码2
int main()
{
   int i=0;
   for (i=1;i<=10;i++)
      if(i==5)
         continue;
      printf("%d ",i);
   return 0;
}

代码1输出: 1 2 3 4, 代码2输出:1 2 3 4 6 7 8 9 10


3.do…while 循环

C语言中还有一种循环:do…while 循环,因为使用的场景有限,所以不是经常使用

3.1 do…while 循环流程

流程如下:
在这里插入图片描述

3.2 do…while 循环语法

do
   循环语句;
while (表达式);

3.3 do…while 循环代码实例

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

上述代码输出:1 2 3 4 5 6 7 8 9 10

三、总结

本文介绍了C语言中三种循环语句,他们在实际中的使用频率从大到小依次是:for>while>do-while
本篇文章就到这里了,希望能够给你带来帮助!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值