C语言程序设计-[12] 循环结构中的break和continue语句

1、break语句

注1:前面讲for语句循环结构时,说了“表达式2“也是可以省略就是死循环了,解决办法是在循环体中加入if...break。


#include "stdio.h"

int main()
{
	int i=1, sum=0; //循环初始条件 
	for(;;)     //这里没有循环判定条件,所以这里是恒真的,与for(;1;)是等同的 
	{
		if(i>100) break;   //循环判定条件,当i>100跳出for循环,否则继续循环 
		sum+=i;     //循环体 
		i++;        //循环修正条件 
	}    
	printf("1+2+3+...+100=%d",sum);
	return 0;
}

注2:for(;;)是恒真的,那就相当于while(1),所以上面代码可以变成while(1)形式,这也是一种常用方法


#include "stdio.h"

int main()
{
	int i=1, sum=0; //循环初始条件 
	while(1)     //这里没有循环判定条件,所以这里是恒真的,与for(;1;)是等同的 
	{
		if(i>100) break;   //循环判定条件,当i>100跳出for循环,否则继续循环 
		sum+=i;     //循环体 
		i++;        //循环修正条件 
	}    
	printf("1+2+3+...+100=%d",sum);
	return 0;
}

注3:不管是循环结构还是switch结构,break只能跳出一层结构。下面举一个简单例子来说明:计算i*j的值,但是不计算自已乘自己。

#include "stdio.h"

int main()
{
	int i,j;
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=5;j++)
		{
			if(j==i) break;
			printf("i=%d,j=%d,i*j=%d\n",i,j,i*j);
		}
	}
	return 0;
}

从上面结果, 当j==i时,只跳出内层for结构。

2、continue语句

注1: 一般地,continue语句都会位于一个if语句中,即当满足某一条件时,结束本轮次循环(即跳过本轮次continue后面部分),进入下一轮次循环。

例如:打印出除5之外的10以内的自然数。

#include "stdio.h"

int main()
{
	int x;
    for(x=1;x<=10;x++)
    {
        if (x==5)
            continue;  
        printf("%3d",x);
    }
	return 0;
}

注2:while do-while语句中,执行continue句就立即去测试是否继续循环的条件。

#include "stdio.h"

int main()
{
	int i=1, sum=0; //循环初始条件 
	while(i<=10)     //循环判定条件
	{
		if(i==5) continue;   //执行后立即跳至i<=10判定,由于i++没有执行,所以一直停留在i=5,从而死循环 
		sum+=i;     //循环体 
		i++;        //循环修正条件 
	}    
	printf("1+2+3+4=%d",sum);
	return 0;
}
#include "stdio.h"

int main()
{
	int i=1, sum=0; //循环初始条件 
	do
	{
		if(i==5) continue;   //执行后立即跳至i<=10判定,由于i++没有执行,所以一直停留在i=5,从而死循环 
		sum+=i;     //循环体 
		i++;        //循环修正条件 
	}while(i<=10);     //循环判定条件    
	printf("1+2+3+4=%d",sum);
	return 0;
}

执行continue后立即跳至i<=10判定,由于i++没有执行,所以一直停留在i=5,从而死循环。

注3:但是for语句中,执行continue语句立即计算表达式3,然后计算表达式2测试继续循环的条件,这与上面是有区别的。

#include "stdio.h"

int main()
{
	int i, sum=0; 
	for(i=1;i<=10;i++)     //循环初始条件、循环判定条件、循环修正条件  
	{
		if(i==5) continue;   //执行后立即跳至i<=10判定,由于i++没有执行,所以一直停留在i=5,从而死循环 
		sum+=i;     //循环体 
	}    
	printf("1+2+3+4+6+7+8+9+10=%d",sum);
	return 0;
}

从上面来看,只跳过了5没有加进sum。

3、break和continue的流程图对比

从这两个图可以看出, break和continue跳出后,到达什么位置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值