C语言语句篇——循环语句

Hello~我是芝士,前一篇分享的是分支语句,本篇给大家分享循环语句,主要有三个循环语句:while循环、do while 循环和 for 循环。

1. while 循环

在C语言中主要有三种循环,我们首先介绍while循环。之前已经学习过了if语句,其实while循环与if语句也有相似之处。

1.1 语法形式与逻辑

对于while循环,其语法的形式如下:

while (表达式)
{
	执行语句;
}

while能够实现循环的效果,当表达式为真(非零),那么会一直执行语句。在我们之前学习过的if语句中,if中的表达式为真,会执行相应的语句,而while与if最大的不同之处就是能够实现循环
整个循环的逻辑可以如下图所示:
在这里插入图片描述
程序执行进入while循环后,先对表达式进行判断,如果表达式判断结果为假(0),循环结束;表达式判断结果为真(非0),执行语句,并且再次进行判断是否进入下一次语句的执行

1.2 循环举例

为了更好地理解while循环的逻辑,这里用两个例子进行感受
例子1:在屏幕上打印 1~10 的值

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

	return 0;
}

输出结果

1
2
3
4
5
6
7
8
9
10

在这段代码中,我们看到输出了想要的结果,这里需要关注的是while循环判断条件,当i>10时候,表达式为假,因此循环结束。
例子2:假设我们想要实现更加复杂的效果:
1.当遇到数字5的时候跳出循环
2.遇到数字5跳过不打印
遇到数字5的时候跳出的循环,代码如下

#include <stdio.h>
int main()
{
	int i = 0;
	while (i <=10)
	{
		
		i++;//遇到数字5的时候跳出循环
		if (i == 5)
		{
			break;

		}
		printf("%d\n", i);
	
	}
	return 0;
}

遇到数字5跳过不打印,代码如下

#include <stdio.h>
int main()
{
	int i = 0;
	while (i <=10)
	{
		//遇到数字5的时候跳过打印
		i++;//i++要放在continue之前,不然光标一直停留在打印4之后
		if (i == 5)
		{
			continue;
		}
		printf("%d\n", i);
	}
	return 0;
}

最后我们可以看到两种实现效果
在这里插入图片描述
不难发现,与第一个例子不同的除了加入了if条件判断外,最关键的是加入了两个新的关键字:break和continue。并且我们可以直观的看到这两个关键字的效果: break是跳出整个while循环;continue是跳出当前条件的循环

1.3 break和continue

关于这两个关键字,break我们在前面的switch语句中已经有所接触,并且不难发现其功能相同,都是跳出整个语句。关于这两个关键字的逻辑在while循环中的体现可以见下图:
在这里插入图片描述
从上图可知:
while循环中的break:在循环中只要遇到break,就停止后期的所有的循环,直接终止循环是循环是永久终止的;
while循环中的continue:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,直接跳转到while语句的判断部分。进行下一次循环的入口判断。

2. do while 循环

除了while循环外,还有一种do while循环,但是其用的相对较少一些。

2.1语法形式与逻辑

对于do while循环的语法形式如下:

do
{
	执行语句;
} while (表达式);

与while循环不同, do while 循环是先进行执行语句,然后再进行表达式的判断。表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
这里需要注意的是:不要漏了while(表达式)后面的分号( ; )
整个循环的逻辑可以如下图所示:
在这里插入图片描述
进入do while循环之后,直接先执行do后面的语句,然后再进行while(表达式)判断,如果表达式结果为真(非0),则继续执行语句;表达式结果为假(0),结束循环。因此我们不难发现,do语句有一个特点:就是能够保证这个循环至少执行一次

2.2 循环举例

由于do while 循环的语句至少执行一次,因此常在一些特定情境中使用,下面进行举例来感受do while循环的逻辑。
例子1:在屏幕上打印1~10的值

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

输出结果

1
2
3
4
5
6
7
8
9
10

该段代码中,进入程序入口之后,首先执行do后面的语句即:printf(“%d\n”, i)打印了数字1,i++,然后再进行while中表达式的判断。
同样的,如果我们想要实现遇到某个条件跳出循环或者跳过本次循环的效果,同样可以借助break和continue关键字。

2.3 break和continue

同理,前面介绍了关于do while的逻辑逻辑流程图,在break和continue的影响下,逻辑流程图如下所示:
在这里插入图片描述
由上图可知,do while中的break和continue与while循环中的功能相似。
do while中的break:语句开始执行,首先执行do后面的语句,遇到break之后跳出整个循环体,结束循环。
do while中的break:语句开始执行后,同样先执行do后面的语句,当遇到continue时,就跳过本次循环continue后面的代码,直接来到表达式判断部分。
do while 循环 break 举例:

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

当程序开始执行起来,一旦触发条件i == 5,则会执行break,使其跳出循环,不再执行后面的语句。因此最后在控制台输出1 2 3 4。
do while 循环continue举例:

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

这是一旦触发条件i==5时,程序直接来到表达式判断部分——i<=10,此时i++没有执行,i的值一直不变,再次进入do语句中,直接陷入死循环。执行效果如下图:
在这里插入图片描述

3. for 循环

for循环相比于do while循环会更加常用一些。

3.1 语法形式与逻辑

关于for循环的语法形式如下:

for(表达式1; 表达式2; 表达式3)
{
	执行语句;
}

其中,表达式1是循环变量的初始化;表达式2是循环结束的判断条件;表达式3是循环变量的调整。
整个循环的逻辑可以如下图所示:
在这里插入图片描述
程序执行进入for循环后,先对表达式1循环变量初始化,然后进入表达式2的判断,判断结果为假(0),循环结束;判断结果为真(非0),对for循环中的语句进行执行,然后进入表达式3,对循环变量进行调整。循环一直到表达式2的结果为假,跳出循环。
需要注意的是,整个循环过程中,表达式初始化(表达式1),只被执行一次,剩下的表达式2,执行语句、表达式3不断地进行着。

3.2 循环举例

为了更直观地感受for循环的执行逻辑,这里举例感受:
在屏幕上打印1~10的值:

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

根据前面的逻辑规则:表达式1:int i =1;表达式2:i <= 10;表达式3:i++
当进入for循环后首先对整型变量i进行初始化赋值,因为此时i=1是小于10(满足表达式2),因此进入循环内部执行语句,在屏幕上打印数字1,然后来到i++的位置,对整型变量i进行调整,如此执行下去。当 i 的值增加到11的时候
不满足条件表达式2,此时循环结束,跳出循环。因此在屏幕上输出的结果为:
在这里插入图片描述
那么如果在执行语句中增加某些条件,比如跳过某个数字的打印或者遇到某个数字时直接结束循环,应该运用到哪些操作?

3.3 break和continue

与前面两种循环非常相似的,for循环要中途结束循环或者遇到某个条件不执行本次程序代码,也同样用到break和continue。对这两个关键字加入到for循环后的整个循环流程图如下所示:
在这里插入图片描述
当执行语句中设置了某些条件,遇到break之后,直接跳出并结束循环遇到continue之后,跳过本次循环的执行语句来到表达式3的位置,对变量进行调整,然后为下一次循环做准备。

4. while 和 for 循环对比

通过本次的梳理不难发现其实while循环和for循环有许多相似之处,都包括初始化、判断、调整三大块。下面进行一个更加直观的对比,以实际例子观察。
在屏幕上打印1~10的数字的while循环和foe循环:
在这里插入图片描述
从以上代码中我们可以很直观地发现,while循环和for循环都能够实现相应的循环,并且都具有初始化、判断以及调整这三个部分。但是,相较于while循环for循环的这三个模块相对几种,而while循环会相对分散一些。因此如果后续在编写程序过程中有较多代码,for循环在形式上更加优于while循环,有利于代码的维护。当然在外面实际应用过程中需要使用哪一种循环,需要根据外面的需要进行灵活使用。

好了,以上就是本次要分享的所用内容,因为自己的拖延症,导致这篇迟迟没有写完,但是但是尊滴需要继续加油啦!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值