分支循环(下)(二)

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

相关推荐
yugi9878382 分钟前
MATLAB的多层感知器(MLP)与极限学习机(ELM)实现
开发语言·matlab
楼田莉子2 分钟前
Linux学习之磁盘与Ext系列文件
linux·运维·服务器·c语言·学习
StandbyTime23 分钟前
C语言学习-菜鸟教程C经典100例-练习27
c语言
Never_Satisfied31 分钟前
C#获取汉字拼音字母方法总结
开发语言·c#
zh_xuan43 分钟前
kotlin 密封类
开发语言·kotlin
码小猿的CPP工坊1 小时前
C++软件开发之内存泄漏闭坑方法
开发语言·c++
Ethan-D1 小时前
#每日一题19 回溯 + 全排列思想
java·开发语言·python·算法·leetcode
仙俊红1 小时前
LeetCode174双周赛T3
数据结构·算法
满栀5851 小时前
分页插件制作
开发语言·前端·javascript·jquery
froginwe111 小时前
C 标准库 - <stdio.h>
开发语言