C语言break和continue的语句用法

 更新时间:2021年04月13日 11:48:57   作者:土豆哥666  
这篇文章主要介绍了C语言break和continue的语句用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.知识了解

在c语言中,为了使用循环控制更灵活,c语言允许在特定条件成立时使用break语句和continue语句控制循环的执行过程

  • ♞break:用于循环语句和switch语句中,它跳出所在的那一层循环语句或者switch语句。
  • ♞continue:用于循环语句中,他跳出所在的那一轮循环,继续下一轮循环。

这是它们两个的定义和使用逻辑,但是为了弄懂它们在具体的使用情况,我们可以把上述的定义全部拉满,就可以了,嘿嘿!

♕循环语句:在c语言中,无非是三种循环语句,while循环,do…while循环,for循环。

那么我们就每一个循环举一个例子,就可以挖掘我们需要知道的东西啦。理论存在,例子来了!!!

2.for循环中break和continue语句的用法

输出100~ 200能同时被3,5,和7整除的整数: ①

#include <stdio.h>
void main()
{	int n;
	for (n=100;n<=200;n++)
	{
		if(n%3!=0||n%5!=0||n%7!=0)
			continue;
		printf("%d\n",n );
	}
}

输出结果

1

如果要是不用continue完成上述条件

#include <stdio.h>
void main()
{	int n;
	for (n=100;n<=200;n++)
	{
		if(n%3==0 && n%5==0 && n%7==0)

		printf("%d\n",n );
	}
}

运行结果与上面相同

但是如果加上break则发生了奇妙的化学反应

#include <stdio.h>
void main()
{	int n;
	for (n=100;n<=200;n++)
	{
		if(n%3==0 && n%5==0 && n%7==0)break;

		printf("%d\n",n );
	}
}

输出结果:

2

所以在for循环里面,第一个例子可以看出,continue一般接在if判断语句的后面,用来控制循环变化。continue就像是门卫一样,只要你还满足条件,就给我进去循环去,变成我不想要的样子,在放你出去进行下面的语句,可能这么说有点抽象,可以看下面的动态图解

3

这里就可以明白continue的存在就是不让下面的语句动,只有不满足判断语句才可以跳出来,执行下面的语句。一看就是个狠人呀!!!

对于③里面的break可以看出是直接跳出循环,105满足条件,没问题,循环结束了,break的存在就像是一个固执的老头,只要满足需求了,后面的人就不要了,我也不看了的感觉。

3.while循环continue语句的用法 ①

int i,n=0;
while(i<10)
{
    n++;
    if(i>5) continue;
    i++;
}
printf("i=%d,n=%d",i,n);

运行结果

4

上述代码执行完成后是死循环,因为i=6时满足if条件,执行continue语句,i的值仍为6,执行下一轮循环,满足if条件,执行continue语句,i值仍为6,这样就变成了死循环。

4.switch语句中break和continue语句的用法

你看到上面这个小标题一定会想我去,这个土豆哥有点瓦呀,switch语句中不能使用continue语句,侬晓得哇!!!

毋庸置疑,在switch case 语句中不能使用continue 关键字。continue语句的作用是跳出本次循环,转入执行下一次循环。故而,continue语句只能用于循环语句中,而switch case语句为多分支选择语句,不是循环语句。

但是直到我看见了这个题目,改变了我的一些看法。

在这里插入图片描述

为了大家方便验证:(代码如下)

#include <stdio.h>
int main(void)
{
	int k=0;char c='A';
	do
	{
		switch(c++)
		{
			case 'A':k++;break;
			case 'B':k --;
			case 'C':k+=2;break;
			case 'D':k=k%2;continue;
			case 'E':k=k*10;break;
			default:k=k/3;
		}
		k++;
	}while(c<'G');
	printf("k=%d\n",k );
	return 0;
}

运行结果

5

然后我又把continue语句删除后的运行结果

#include <stdio.h>
int main(void)
{
	int k=0;char c='A';
	do
	{
		switch(c++)
		{
			case 'A':k++;break;
			case 'B':k --;
			case 'C':k+=2;break;
			case 'D':k=k%2;
			case 'E':k=k*10;break;
			default:k=k/3;
		}
		k++;
	}while(c<'G');
	printf("k=%d\n",k );
	return 0;
}

运行结果

6

然后我再把continue语句换成break语句的运行结果

#include <stdio.h>
int main(void)
{
	int k=0;char c='A';
	do
	{
		switch(c++)
		{
			case 'A':k++;break;
			case 'B':k --;
			case 'C':k+=2;break;
			case 'D':k=k%2;break;
			case 'E':k=k*10;break;
			default:k=k/3;
		}
		k++;
	}while(c<'G');
	printf("k=%d\n",k );
	return 0;
}

运行结果

在这里插入图片描述

可以看出continue语句在switch里还是起到了一定的效果的。然后我们可以利用断点的形式来实现知道每一步的值。(这里大家可以自己去试一试呀)然后呢,我把这个过程总结在下面的图里面了。

9

从上面的图可以看出continue语句在switch中的用法还是跟他的原始定义一样,跳到上面的循环,然后继续执行。在本题中就是在c=D时不执行下面的k++,跳回上面的c++,然后呢,在执行c=E。感觉呢可以了解一下,虽然理论上来说continue不能用于switch里面,但是这里确实没报错呀。哈哈,看来矛盾确实是生活的一部分,要是大佬们有自己的看法欢迎在下面留言评论呀!!!

到此这篇关于C语言break和continue的精妙布局的文章就介绍到这了,更多相关C语言break和continue内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++用mysql自带的头文件连接数据库

    C++用mysql自带的头文件连接数据库

    现在正做一个接口,通过不同的连接字符串操作不同的数据库。要用到mysql数据库。通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法。可以通过2种方法实现。第一种方法是利用ADO连接,第二种方法是利用mysql自己的api函数进行连接。今天主要来讲解下使用API
    2016-07-07
  • 基于C语言编写一个多功能计算器

    基于C语言编写一个多功能计算器

    这篇文章主要为大家详细介绍了如何基于C语言编写一个多功能计算器,除了四则混合运算之外,还支持三角函数和绝对值等函数,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08
  • 原创的C语言控制台小游戏

    原创的C语言控制台小游戏

    本文给大家分享的是个人原创设计的一个C语言控制台小游戏,非常的简单,但是挺好玩的,推荐给大家,有需要的小伙伴也可以自由扩展下。
    2015-03-03
  • C++中关于=default和=delete问题

    C++中关于=default和=delete问题

    这篇文章主要介绍了C++中关于=default和=delete问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • c语言中if语句是怎么变成汇编代码的详解

    c语言中if语句是怎么变成汇编代码的详解

    if语句是指编程语言,包括c语言、C#、VB、java、汇编语言等,下面这篇文章主要给大家介绍了关于c语言中if语句是怎么变成汇编代码的相关资料,需要的朋友可以参考下
    2021-11-11
  • C语言函数指针数组实现计算器功能

    C语言函数指针数组实现计算器功能

    这篇文章主要通过C语言函数指针数组实现了计算器的功能,是一个很好而且流程详细的小例子,感兴趣的新手朋友们可以自己动手也写一遍
    2022-04-04
  • C++迭代器iterator详解

    C++迭代器iterator详解

    这篇文章主要为大家详细介绍了C++迭代器模式Iterator,具有一定的参考价值,感兴趣的小伙伴们可以参考一下希望能给你带来帮助
    2021-08-08
  • C语言堆排序经典算法TopK问题解析

    C语言堆排序经典算法TopK问题解析

    这篇文章主要为大家介绍了C语言堆排序经典算法TopK问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • C++ OpenCV实现像素画的示例代码

    C++ OpenCV实现像素画的示例代码

    这篇文章主要介绍了通过OpenCV进行图片像素的变化,从而形成像素画效果的功能。文中的示例代码讲解详细,感兴趣的小伙伴可以动手试一试
    2022-01-01
  • 大家注意vector, list, set, map成员函数erase

    大家注意vector, list, set, map成员函数erase

    set和map是由红黑树来实现的,当erase的时候迭代器就失效了,也就是说我们要在迭代器失效之前保留一个副本,根据这个副本我们才能继续遍历下一个元素
    2013-09-09

最新评论