循环语句小结

目录

while循环

while循环语法结构:

while语句的执行流程:

while语句中的break和continue

 for循环

for循环语法结构:

for语句的执行流程:

for循环中的break和continue 

do while循环

do while循环语法结构:

do while语句的执行流程:

do while循环中的break和continue

  通过分支语句,我们明白,当条件满足的情况下,对应的语句会执行,否则不执行,但是这个语句只会执行一次。然而生活中很多实际的例子是:同一件事我们需要完成很多次,于是,C语言中引入了循环语句,可以实现循环。

while循环

while循环语法结构:

while(表达式)

               循环语句;

while语句的执行流程:

和if语句一样,while语句不加{}一次只能控制一条语句,加上{}后可控制多条语句。

例如:实现在屏幕上打印1~10的数字

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

若这里不加{},则循环语句只执行一次,打印一个1就结束。

while语句中的break和continue

break实例:

  这里简单分析一下这段代码,当i初始化等于1时,满足循环条件小于10,进入循环,循环依次进行,当i=1时,不等于5,,打印1,i++;当i=2时,不等于5,,打印2,i++;当i=3时,不等于5,,打印3,i++;当i=4时,不等于5,,打印4,i++。此时i等于5,满足i==5的条件,进入if判断,执行break,直接跳出整个循环,因此屏幕上只打印1 2 3 4 。

总结:

break在while循环中的作用:在循环中只要遇到break,就跳出循环,停止后期所有的循环,直接终止循环。因此,while中的break是用于永久终止循环的。(一个break跳出一层循环。)

continue实例:

 在这里,屏幕上虽然只打印出了1 2 3 4 ,但是控制台上的光标依然在闪烁,这里表示循环一直在进行,这里做一个简单的分析:当初始化i等于1,i<=10,满足条件进入循环,循环依次执行,当i=1时,不等于5,打印1,i++;i=2时,不等于5,打印2,i++;i=3时,不等于5,打印3,i++;i=4时,不等于5,打印4,i++。此时i=5,执行continue,结束本次循环,不执行打印与i++,直接回到while循环,由于没有执行i++,所以这里的i还是等于5,进入if判断,满足i=5,再次回到while循环,所以光标一直在while循环与continue之间跳动(如下图),循环一直进行,所以屏幕上打印1 2 3 4却不显示结束,而是显示光标一直在跳动。

总结:

continue在while循环中是用于终止本次循环的,也就是本次循环中的continue后面的代码不会执行,但不是跳出while循环,而是直接跳转到while语句判断部分,进行下一次循环的入口判断。

那么怎么跳出这个死循环呢?只需要改动一下代码,就可以跳出死循环,如下图:

 通过这个例子,可以得出while循环使用的步骤:

1、初始化。例如:int i=0;

2、条件判断部分。例如:while(i<=10)

3、调整部分。例如:i++;

因此一旦条件改变,while容易进入死循环,接下来,我将介绍for循环,对比两种循环。

 for循环

for循环语法结构:

for(表达式1;表达式2;表达式3)

循环语句;

表达式1:表达式1为初始化部分,用于初始化循环变量。

表达式2:表达式2为条件判断部分,用于判断循环是否终止。

表达式3:表达式3为调整部分,用于循环条件的调整。、

for循环的变种:

for(表达式1;表达式2;表达式3)中的表达式可以任意省略(尽量不要随意省略),甚至可以都省略。例如:

int main()
{
	for (;;)
	{
		printf("编程\n");
	}
	return 0;
}

不过这样就没有判断 条件,编译器会默认为真,会无限循环打印。

for循环中的控制变量可以不止一个。例如:

int main()
{
	int x, y;
	for (x = 0, y = 1; x < 2 && y < 4; ++x, y++)
	{
		printf("编程\n");
	}
	return 0;
}

x初始化为0,y初始化为1,x<2与y<3同时满足,执行循环体,打印编程,x+1=2,y+1=2,x<2与y<3同时满足,执行循环体,打印编程,x+1=3,y+1=3,y<4满足但是x<2不满足,因此结束循环。若用一个控制变量实现该代码效果,下面两段代码可以替换:

int main()
{
	int x = 0;
	int y = 0;
	for (x = 0; x < 2; x++)
	{
		for (y = 1; y < 2; y++)
			printf("编程\n");
	}
	return 0;
}
int main()
{
	int x = 0;
	int y = 0;
	for (x = 0; x < 1; x++)
	{
		for (y = 1; y < 3; y++)
			printf("编程\n");
	}
	return 0;
}

for语句书写建议:

1、不可在for循环体内修改循环变量,防止for循环失去控制(代码会比较混乱)。例如:

这段代码等同于:

int main()
{
	int i = 0;
	while (i < 10)
	{
		printf("编程\n");
		i += 2;
	}
	return 0;
}

2、建议for语句的循环控制变量的取值采用前闭后开区间的写法。例如

    int i = 0;
	for(i=0;i<11;i++)  //建议
  //for(i=0;i<=10;i++)不建议

for语句的执行流程:

和if、while语句一样,for语句不加{}一次只能控制一条语句,加上{}后可控制多条语句。

例如:实现在屏幕上打印1~10的数字

  可以发现在while循环中的三个条件,由于格式的问题,使得三个部分很可能相隔较远,这样查找修改就不够集中和方便。所以,for循环的格式更胜一筹。(for循环使用的频率也是最高的)

for循环中的break和continue

break实例:

 当i=1,小于11,进入for循环,不等于5,打印1,执行i++,i=2,小于11,进入for循环,不等于5,打印2;执行i++,i=3,小于11,进入for循环,不等于5,打印3;执行i++,i=4,小于11,进入for循环,不等于5,打印4;执行i++,i=5,满足if判断条件,执行break,跳出整个循环,因此屏幕上打印1 2 3 4。因此,我们发现在for循环中,break语句的作用和在while中是一样的。

总结:

break在for循环中的作用:在循环中只要遇到break,就跳出循环,停止后期所有的循环,直接终止循环。因此,for中的break是用于永久终止循环的。(一个break跳出一层循环。)

continue实例:

 这里简单分析一下这段代码, 当i=1,小于11,进入for循环,不等于5,打印1,执行i++,i=2,小于11,进入for循环,不等于5,打印2;执行i++,i=3,小于11,进入for循环,不等于5,打印3;执行i++,i=4,小于11,进入for循环,不等于5,打印4;执行i++,i=5,满足if判断条件,执行continue,跳过本次循环,不执行后面的打印,直接来到for循环,继续执行i++,i=6,小于11,进入for循环,不等于5,打印6;执行i++,i=7,小于11,进入for循环,不等于5,打印7;执行i++,i=8,小于11,进入for循环,不等于5,打印8;执行i++,i=9,小于11,进入for循环,不等于5,打印9;执行i++,i=10,小于11,进入for循环,不等于5,打印10;执行i++,i=11,不满足循环条件(<=11),结束循环。因此,我们发现在for循环中,continue语句的作用和在while中是一样的。同时从这里也可以反应出,for循环与while循环的作用没有区别,但是从形式上来说,for的形式更优。

总结:

continue在for循环中是用于终止本次循环的,也就是本次循环中的continue后面的代码不会执行,但不是跳出for循环,而是直接跳转到for语句判断部分,进行下一次循环的入口判断。

do while循环

do while循环语法结构:

                                                      do

                                                              循环语句;

                                                        while(表达式);

和if、while、for语句一样,do while语句不加{}一次只能控制一条语句,加上{}后可控制多条语句。

do while语句的执行流程:

从do while语句的执行流程可以看出do while语句的特点:即程序运行就执行循环体一次,然后再进行条件判断,这就保证了循环至少执行一次,使用的场景有限,所以不是经常使用。

例如:实现在屏幕上打印1~10的数字

当i初始化等于1时,不用判断,直接打印i,i++,i=2,此时进行判断,i=2<11,继续执行循环体,打印2,i++,i=3,判断i=3<11,继续执行循环体;打印3,i++,i=4,判断i=4<11,继续执行循环体......打印9,i++,判断i=10<11,继续执行循环体;打印10,i++,i=11,判断i=11,不小于11,因此不满足循环判断条件,结束循环。

do while循环中的break和continue

break实例:

当i=1时,进入循环,打印1,执行i+1=2,进行条件判断2<11,继续执行循环;打印2,i++,i=3,进行条件判断3<11,继续循环;......打印10,i++,i=11,进行条件判断11!<11,循环结束。

总结:

break在do while循环中的作用:在循环中只要遇到break,就跳出循环,停止后期所有的循环,直接终止循环。因此,do while中的break是用于永久终止循环的。(一个break跳出一层循环。)

continue实例:

 在这里,屏幕上虽然只打印出了1 2 3 4 ,但是控制台上的光标依然在闪烁,这里表示循环一直在进行,这里做一个简单的分析:当初始化i等于1,进入循环,打印1,i++,i=2,进行while条件判断,2<11,继续执行循环体;打印2,i++,i=3,进行while条件判断,3<11,继续执行循环体;打印3,i++,i=4,进行while条件判断,4<11,继续执行循环体;打印4,i++,i=5,满足分支语句if判条件i等于5,结束本次循环,i=5,进入dq while循环,满足分支语句if判条件i等于5,结束本次循环......所以屏幕上打印1 2 3 4却不显示结束,而是显示光标一直在跳动。

总结:

continue在for循环中是用于终止本次循环的,也就是本次循环中的continue后面的代码不会执行,但不是跳出for循环,而是直接跳转到for语句判断部分,进行下一次循环的入口判断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值