浅谈break和continue

一、总论

在C语言中,如果某些状况发生时,需要提前终止循环,有两个关键字break和continue,他们都是都是控制流语句,作用都是改变程序的执行流程,但它们的方式和作用是不同的。下面我来和大家探讨一下

二、细则

1.break

break语句让外围 for,while或 do while循环或者 switch语句终止。多用于条件表达式和条件语句终止循环。用于强制退出当前循环或switch语句,即当满足某个条件时,程序会立即跳出循环或停止执行switch语句的分支,不再执行循环体内或switch语句后面的代码。

注意:break语句不像goto语句能够打破多重嵌套循环,仅仅会跳出内测的循环语句而不会一下子跳出外侧的循环语句。


2.continue

continue语句可以跳过for,while或do while循环中该层循环的剩余部分,直接进入循环的下一个。,在使用条件语句忽略循环剩余部分显得笨拙时使用。用于强制退出当前循环分支之后的部分从而进行循环的下一个分支,即当满足某个条件时,程序会立即跳出当先循环分支而继续进行下一个循环分支,不再执行本层循环分支后面的代码。

注意:switch语句不支持continue。continue语句在for循环和while循环中有所差异。

三、联系与区别

1:联系

我们都知道,两者都可以控制循环语句,都是跳过某些要执行的代码。

2:区别

1)break的作用是用于永久的终止循环。一个break语句只能执行一次,输出结果大多是循环分支中的一个或少量的,不满足条件后面的语句都不用考虑了。

2)continue的作用是跳过本次循环后面的代码而继续执行循环体。而一个continue语句在每个循环分支中都要进行判断,输出结果是较多的。

3)break比continue多一个在switch语句中的用法,这在switch语句中是非常重要的。

具体我在下面的代码中展示。

4)continue语句在for循环和while循环中有所差异。

四、代码示例

1.for循环

1)break语句

#include <stdio.h>
int main() 
{
	int i=0; 
    for (i=0; i<10; i++)
	{
        if (i==5) break;    //当i为5时,循环就结束了 
        printf("%d ",i);             
    }
    return 0;
}

2)continue语句

#include <stdio.h>
int main() 
{
	int i=0; 
    for (i=0; i<10; i++)
	{
        if (i==5) continue;    
		/*当i为5时,本次为5的循环分支后的语句就结束了 
       直接来到++的调整部分,还会执行其他小于十的循环分支*/
	    printf("%d ",i);             
    }
    return 0;
}

2.while(do while)循环

1)break语句

#include <stdio.h>
int main() 
{
	int i=0; 
    while(i<10)
    {
    	if(i==5) break;      //当i为5时,循环就结束了 
    	printf("%d ",i);
    	i++;
	}
    return 0;
}

这里我们不难看出break语句在while循环和for循环中是没有区别的。

2)continue语句

#include <stdio.h>
int main() 
{
	int i=0; 
    while(i<10)
    {
    	if(i==5) continue;      
		/*当i为5时,跳过本次循环之后的语句 
		其中i++也被跳过了*/
    	printf("%d ",i);
    	i++;
	}
    return 0;
}

这里为什么两者一样呢?

我们分析:continue可以帮我们跳过某一次循环后面的代码,进行下一次循环的判断。实例中i++语句就被跳过了。

do-while循环和while循环大体一致,再此不做赘述。

3.注意死循环

因此我们要留意,在while(do while)循环中,如果循环的调整是在continue的后面,有可能会造成死循环。

示例:

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

这就是一个死循环,i=0,会满足if的条件i<1,执行continue从而跳过了i++,i的值一直为0,没有结束循环的语句,为死循环。

因此,我们在设计代码时要在此留一个心眼。

4.循环的嵌套。

示例一:找出100~200之间的素数并打印出来

这里给出一种参考

#include <stdio.h>
int main() 
{
	int i,j,flag; 
    for(i=100;i<=200;i++)     //循环产生100到200的数字 
    {
    	for(j=2;j<i;j++)      
    	{
    		if(i%j==0)
    		{
    			flag=0; 
				break;
			}
			else
				flag=1;      //判断是否为质数 
		}
		if(flag==1)
			printf("%d ",i);
	}
    return 0;
}

这里的break只能跳出j的这一层循环,对i的循环没有影响。

示例二:利用循环语句输出数组(九九乘法表中去除带4的数)

   ----------------------------------------->

参考代码

#include<stdio.h>
int main()
{
	int i,j,s;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			s=i*j;
			if(s%10==4||s/10==4)
			{
				printf(" "); continue;   //跳过输出部分 
			}
			printf("%3d",s);
		}
		putchar('\n');
	}
	return 0;
}      

5.switch语句中的break

大家可以看看下面的代码输出为什么。

1)

#include<stdio.h>
int main()
{
    int i=0; 
	for(i=0;i<3;i++)
	{
		switch(i)
		{
			case 1:printf("%d",i);     //注意没有break 
			case 2:printf("%d",i);
			default :printf("%d",i);	
		}	
	}	
	return 0;
}      

输出的是011122

没有break每个case分支都会执行

2)

#include<stdio.h>
int main()
{
    int i=0; 
	for(i=0;i<3;i++)
	{
		switch(i)
		{
			case 1:printf("%d",i); break;   //注意有break 
			case 2:printf("%d",i); break;
			default :printf("%d",i);	
		}	
	}	
	return 0;
}      

输出的是012

在使用switch语句时,一定要注意选择性使用break;

写代码是一个不断修改,不断完善的过程。欢迎大家探讨斧正。

                                                                         且将新火试新茶,诗酒趁年华。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值