break和continue

我们之前讲过了分支结构和循环结构,在switch语句也大致了解了一下break,这里要先注意一点,break和continue是两个关键字!!!

而今天我们再来详细介绍一下break和continue的用法。

  • break:用于永久的终止循环,只要break被执行,直接就会跳出本层循环,继续往后执行。
  • continue:跳过本次循环continue后边的代码,在for循环和while循环中有所差异的。

我们分别在三种循环中对比一下它们的效果。

  • while循环中的break和continue

  • break举例

#include <stdio.h>
int main()
{
    int i = 1;
    while(i <= 10)
    {
        if(i == 5)
            break;//当i等于5后,就执行了break,循环就终止了
        printf("%d ",i);
        i = i + 1;
    }
    return 0;
}

 i在一开始初始化为1,进入while循环开始,判断i是否<=10,成立是显而易见的,然后再进入if判断i是否等于5,不成立,跳过if,执行printf语句,输出为1,最后给i自增1,此时i等于2,回到while语句的判断,依次类推……直到i等于5时,if成立,执行break,退出这一层的while,也跳过了printf语句和i=i+1,因为只有一层循环,所以直接结束该程序,最后结果为:1 2 3 4

  • continue举例 

continue在循环中的作用就是跳过本次循环中continue后边的代码,直接抵达下一次循环的判断。

 我们将上面的代码中的break换成continue会是什么结果呢?

#include <stdio.h>
int main()
{
    int i = 1;
    while(i <= 10)
    {
        if(i == 5)
            continue;
        //当i等于5后,就执行了continue,直接跳过continue下面的代码,开始下一次循环
        printf("%d ",i);
        i = i + 1;
    }
    return 0;
}

我们上面已经分析了它的循环过程,所以我们省略前面的部分,直接到i等于5的时候,执行continue,跳过了下面的语句,重新回到了while的循环的判断,然后又再次进入了if判断是否等于5,成立,执行continue,又重新回到了while的循环判断……就这样,进行了死循环,因为i等于5时,一直无法抵达i=i+1,所以执行了死循环。

  • for循环中的break和continue

  • break举例

我们之前讲过for循环和while循环的区别,所以break在这里的用法和while循环是一样的

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

 这和while的运行过程是一样的,先执行i=1,然后判断是否符合条件,i<=10条件符合,所以执行下面的语句,先执行if的判断,判断不成立,跳过if语句,执行printf,最后,执行第三个表达式i++对自己进行自增。此时i等于2,再次执行第二个表达式判断i<=10,以此类推……所以最后结果为1 2 3 4。

  • continue举例

我们再来将上面代码中的break换成continue会是什么结果呢?

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

注意了!!!这里的continue导致的运行过程可不一样了,那么哪里不一样呢?我们直接来到i等于5时,执行了continue语句,跳过了printf,然后回到了i++给自己自增1,你没有看错,只跳过了printf,没有跳过i++,为什么呢?因为i++虽然是最后执行的,但是它是在for的()内的,你可以理解为是i++是和其他两个语句在同一行的,continue管不到for的第三个表达式。所以最后结果为1 2 3 4 6 7 8 9 10。注意没有5噢

  • do while循环中的break和continue

do while循环中,break和continue的用法与while循环几乎一模一样,所以我们这里不再过多解释了。

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

//do while 下的continue
#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i = i + 1;
	}while (i <= 10);
	return 0;
}
  • 循环的嵌套

现在我们已经介绍完了三种循环和他们所使用的关键字。这三种循环只有嵌套在一起才能更好的解决问题。

我来给大家留个小作业(实际上是想偷懒……):

练习:找出100~200之间的素数,并打印在屏幕上

注:素数又称质数,只能被1和本身整除的数字。

题目解析:

  • 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
  • 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤循环解决。
  • 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

 如果有不确定思路是否正确的朋友,可以打在评论区,我来为你解答。

最后,我们再来介绍一个特殊的语句——goto语句

  • goto语句

这是一种十分特殊的语句,它可以跳转到本函数内所标记好的位置。我们用一个例子来详细介绍一下。

例如:

#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");
next:
	printf("跳过了haha的打印\n");
	return 0;
}

我们依次往下执行,到goto next;直接跳过printf语句,执行next:下面的语句,所以最后结果为

hehe

跳过了haha的打印

goto语句一般使用很少,因为C语言是一种结构化的语言,goto很有可能会打乱程序的运行流程,所以一般能不用就尽量不去使用,一般都是用在多层循环内,我们刚刚说过,break只能跳出本层的循环,如果循环层数过多,就需要用到goto语句。

例如:

for(……)
{
    for(……)
    {
        for(……)
        {
            if(disaster)
                goto error;         
        }    
    }
}
error:
    //……

今天的内容就到这里了,如果有什么疑问,可以打在评论区噢。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值