分支循环(下)(二)

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语句就非常方便)

相关推荐
小武~9 小时前
Leetcode 每日一题C 语言版 -- 45 jump game ii
c语言·算法·leetcode
黑客思维者9 小时前
Python大规模数据处理OOM突围:从迭代器原理到TB级文件实战优化
开发语言·python·github·迭代器·oom
繁华似锦respect10 小时前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式
lkbhua莱克瓦2410 小时前
IO流练习(加密和解密文件)
java·开发语言·笔记·学习方法·io流·io流练习题
LaoZhangGong12310 小时前
深度学习uip中“uip_arp.c“
c语言·stm32·以太网·arp·uip·enc28j60
laocooon52385788610 小时前
一个C项目实现框架
c语言·算法
偶像你挑的噻10 小时前
3.Qt-基础布局以及事件
开发语言·数据库·qt
CHANG_THE_WORLD11 小时前
Python 学习三 Python字符串拼接详解
开发语言·python·学习
诸葛老刘11 小时前
next.js 框架中的约定的特殊参数名称
开发语言·javascript·ecmascript