C语言循环之while、do while 循环以及break、continue的用法

C语言循环之while、do while 循环

书接上回,今天继续复习一下学习到的C语言中的循环,while循环和do while循环,以及break,continue 的用法!篇幅较长,请耐心观看!纯个人理解,若有错误请指正!(doge)

1.while循环

1.1while循环格式

while(表达式)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号

while循环格式 与 if语句格式相类似,但while循环是若表达式满足条件可循环重复执行语句,if则是执行一次语句。

if(表达式)
 语句;//if 可实现嵌套

1.2while循环逻辑流程

在这里插入图片描述
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0(非0),则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次循环。

注:图中的break、continue 是C语言的关键字(后面介绍) 这两个关键字不仅能用于循环中,也能用于选择分支语句中(switch case语句 ,if 嵌套,多分支语句)

1.3while循环示例练习

#include <stdio.h>
int main()
{
	int i = 0;//初始化部分
	while (i <10)//判断部分
	{
		printf("%d ", i);//执行语句
		i = i + 1;//调整部分
	}
	return 0;
}
//和for语句对比
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)//初始化、判断、调整
	{
			printf("%d ", i);//执行语句
	}
	return 0;
}

总结:for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形式上 for 循环要更优⼀些。

1.4while(1)死循环的应用

1.4.1 while(1)重复循环的用法:

#include <stdio.h>
int main()
{
	int i = 1;
	while (1)//恒满足判断条件(非0)
	{
		printf("%d ", i);//重复循环执行打印 i 的值,不会停止,除非强行中断。
	}
	return 0;
}

while(1) 这种写法在写程序中会经常用到,表示死循环,重复执行while循环下的语句。while(1) 常量 1 恒满足while 判断条件(非0),所以一直重复执行语句。

1.4.2 while(1)停留、死等的用法:

#include <stdio.h>

int main()
{
	int i = 1;
	printf("%d ", i);//打印 i 的值
	while (1);//程序一直停留在这里不会自己结束,除非强行中断。
	printf("hehe");//hehe 的值不会打印
}

上述代码中的while (1)用于程序停留 死等,顺序执行完后,执行到while语句一直停留,死等,不会继续往下执行,所以printf(“hehe”);不会打印。

下面给出几个嵌入式中的示例(仅供参考):

int main(void)
{
	LedDrvInit();
	KeyDrvInit();
	while(1);//死等
}
int main(void)
{
	/*使能GPIOA时钟*/
	rcu_periph_clock_enable(RCU_GPIOA);
	/*配置GPIO GPIOA 推挽输出 速度2MHZ 第八脚*/
	gpio_init(GPIOA,GPIO_MODE_OUT_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_8);
	
	while(1)//重复执行下面的语句
	{
		while(gpio_input_bit_get(GPIOA,GPIO_PIN_0) == RESET)
		{
			gpio_bit_write(GPIOA,GPIO_PIN_8,SET);
		}
		gpio_bit_write(GPIOA,GPIO_PIN_8,RESET);
	}
}

2.do while循环

2.1 do while 格式

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

与while 循环很像 但执行逻辑流程不同。下面介绍 do while() 循环逻辑流程。

2.2 do while 循环逻辑流程

在这里插入图片描述
在 do while 循环中先执⾏图上的“语句”,执⾏完语句,再去执⾏“判断表达式”,判断表达式的结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。

2.3 do while 循环示例练习

#include <stdio.h>
int main()
{
	int i = 1;//初始化部分
	do
	{
		printf("%d ", i);//打印 i 的值
		i = i + 1;//调整部分
	}while(i<=10);//判断部分
	return 0;
}

上述代码逻辑:先打印一遍 i 的值,然后 i 再加1,最后再判断 i (i=1) 是否小于等于10,满足条件继续执行,再次先打印 i (i=2)的值,以此循环直到i>10,不满足条件。跳出循环 结束程序执行流程。
⼀般 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以使用较少⼀些,这里不过多介绍了,后续更新嵌入式编程中会用到。

3.break continue 语句

3.1 break continue 作用

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中
提供了 break 和 continue 两个关键字,就是应⽤到循环中的。
• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。
• continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的。

3.2 break continue 代码示例

  1. break
int main()
{
	int i = 1;
	while (i <= 10)
	{	
		if (i == 5)
			break;//当i等于5后,就执⾏break,循环就终⽌了
		printf("%d ", i);//打印 i 的值 只打印到4 
		i = i + 1;
	}
	return 0;
}

打印了1,2,3,4后,当i等于5的时候,循环在 break 的地⽅终⽌,不再打印,不再循环。所以 break 的作⽤就是永久的终⽌循环,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤break 来完成我们想要的效果。

  1. continue
int main()
{
	int i = 1;
	for (i = 1;i < 10;i++)
	{
		if(i==5)//这⾥continue跳过了后边的打印,来到了i++的调整部分
			continue;
		printf("%d ", i);//i = 5 跳过该语句
	}
	return 0;
}

i = 5时跳过continue 后面的语句,所以最终打印结果为 1 2 3 4 6 7 8 9
所以continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发⽣的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤continue 来实现。

3.3 continue在 while 循环 for循环中的差异

  1. continue 在while循环中
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)//当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
			continue;//因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

运行结果如下,程序不会结束 陷入死循环 (使用Ctrl + C 可以终止程序)
在这里插入图片描述

  1. continue 在for循环中
int main()
{
	int i = 1;
	for (i = 1;i < 10;i++)
	{
		if(i==5)//这⾥continue跳过了后边的打印,来到了i++的调整部分
			continue;
		printf("%d ", i);//i = 5 跳过该语句
	}
	return 0;
}

运行结果如下:
在这里插入图片描述
两种情况对比
在这里插入图片描述
总结:
在while循环中 continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。
而在for循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发⽣的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤continue 来实现。
至于break 语句 在for循环和while循环中没有什么差异,作用都一样 以及 break continue 在do while 中的作用 也一样,这里就不过多介绍了。

以上就是本篇博客的内容,下次更新用C语言编程实现扫雷游戏,会涉及到函数的概念,请见后续更新!!!

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值