分支循环(下)(二)

9 、break和continue语句

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,此时需要用到C语言提供的break和continue关键字。

break只能用于循环和switch语句中,continue只能用于循环中

break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环(注意:break语句只能跳出一层循环)

continue的作用是跳过本次循环后边的代码,在for循环和while循环中有所差异。

9.1while循环中的break和continue

9.1.1break举例

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

结果:

代码分析:

上述代码打印了1 2 3 4后,当i==5时,循环执行break语句,循环结束,跳出循环。

所以break的作用就是永久的终止循环,只要break被执行,break外的第一层循环就终止了

因此,以后在循环中,如果想在某种条件下终止循环,则就可以使用break循环。

9.1.2continue举例

continue是继续的意思,在循环中的作用就是跳过本次循环中continue后边的代码,继续进行下一次循环的判断。

示例:

cpp 复制代码
//while循环中的continue
#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			continue;//当i==5时,就执行continue
		}
		printf("%d ", i);
		i += 1;
	}
	return 0;
}

结果:

执行上述代码时,虽然结果输出了1 2 3 4,但是代码一直陷入了死循环的状态,这是因为:i==5时,就执行continue,直接跳过了continue之后的代码,而直接去执行while后边的代码:i<=10;因为此时i==5,所以去执行i<=10时,始终是真的结果,所以这就是为什么代码会陷入死循环状态的原因。

continue的作用就是可以帮助我们跳过某一次循环continue后边的代码,直接到循环的判断部分,尽心下一次循环的判断,如果循环的调整是在continue后边的话,可能会造成死循环。

9.2for循环中的break和continue

9.2.1break

for循环break与while中的break一样,是用来终止循环的。不管循环需要执行多少次,只要执行了break语句,循环就彻底终止,跳出循环。

cpp 复制代码
//for循环中的break
#include<stdio.h>
int main()
{
	for (int i = 1; i <= 6; i++)
	{
		if (i == 3)
			break;
		printf("%d ", i);
	}
	return 0;
}

结果:

9.2.2continue

cpp 复制代码
//for循环中的continue
#include<stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 6;i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}

结果:

对于for循环中的continue语句,continue语句作用是跳过本次循环后的代码,直接去到循环的调整部分。(这是与while中的continue语句的区别)

注意:do... while语句中的break语句和continue语句的作用与while循环中的一样

9.3 总结:

while中的continue和for中的continue有区别:

对于while中的continue,continue被执行后,就去执行while中的判断语句。

而对于for中的continue,continue被执行后,就去执行for后的调整语句。

break只能用于循环和switch语句中;而continue只能用于循环中。

10、循环的嵌套

目前学习了三种循环的方法:for循环、while循环 、do while循环,C语言中是支持这三种循环之间相互嵌套的。

练习:找出100~200之间的素数,如果是素数,直接打印在屏幕上(素数即质数,只能被1和本身整数的数字)

思路:假设100~200之间任意的一个数为num,那么可以让num去除2~num-1之间中的数,如果num整除了2~num-1中的数(即:num%...==0)

那num就不是质数。

代码实现:

cpp 复制代码
//循环嵌套求100~200之间的质数
#include<stdio.h>
int main()
{
	int x = 100;
	int flag = 1;//可以标记该数是不是质数,如果是质数,flag=1,如果不是质数,则flag=0
	//拿到100~200之间的数字
	for (x = 100; x <= 200; x++)
	{
		flag = 1;
		//拿到2~num-1的数字
		for (int j = 2; j <= x - 1;j++)
		{
			if (x % j == 0)
			{
				flag = 0;//说明当前该x不是质数
			}
		}
		if (flag == 1)
		{
			printf("%d\n", x);
		}
	
	}
	return 0;
}

结果:

11、goto语句

C语言中提供了一种非常特别的语法,就是goto语句和跳转符号,goto语句可以实现在一个函数内跳转到设置好的标号处。

注意:goto语句只能在本函数内部进行跳转。

示例代码:

cpp 复制代码
//goto语句
#include<stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");
next:
	printf("跳过了haha的打印\n");

	return 0;
}

结果:

goto语句如果使用不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程。

示例:

cpp 复制代码
//goto语句使用不当会导致死循环
#include<stdio.h>
int main()
{
again:
	printf("11");
	printf("22");
	goto again;
	return 0;
}

上述代码在执行的过程中会导致死循环:

因此,在写代码的时候,尽量不适用goto语句。

但是goto语句也不是一无是处,比如:在多层循环的代码中,如果想快速跳出循环,那么此时使用goto语句就非常方便。

示例:

cpp 复制代码
//在多层for循环中使用goto语句
#include<stdio.h>
int main()
{
	for (...)
	{
		for (..)
		{
			,,,,
		}
		,,,
			for (..)
			{
				if (事件发生)
					goto  error;
			}
	}
error:
	....
	return 0;
}

在上述多层嵌套循环中,使用goto语句就非常方便(因为:使用goto语句就可以一步跳出循环,如果要使用break语句进行跳出循环的话,一个break只能跳出一层for循环,所以在多层嵌套循环中,使用goto语句就非常方便)

相关推荐
地球资源数据云3 分钟前
1900-2023年中国物种分布点位矢量数据集
大数据·数据结构·数据库·数据仓库·人工智能
c++之路12 分钟前
C++ 多线程
开发语言·c++
CHANG_THE_WORLD18 分钟前
<Fluent Python > Unicode 文本与字节
开发语言·python
AI人工智能+电脑小能手23 分钟前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index
凯瑟琳.奥古斯特23 分钟前
Bootstrap快速上手指南
开发语言·前端·css·bootstrap·html
牢姐与蒯27 分钟前
cpp数据结构之map
数据结构
我就是妖怪36 分钟前
Kimi K2.6 智能效果实测与能力全景展示
开发语言
中二痞39 分钟前
下载Python 版本,环境变量变更以及PyCharm更换python版本
开发语言·python·pycharm
故事和你9141 分钟前
洛谷-算法2-3-分治与倍增5
开发语言·数据结构·c++·算法·动态规划·图论
SilentSamsara42 分钟前
标准库精讲:collections/itertools/functools/pathlib 实战
开发语言·vscode·python·青少年编程·pycharm