怎么理解switch语句中break使用break

  大家都知道,break的作用就是终止它所在的switch语句后循环语句的执行。在这里呢,我们不去探讨break在循环里的终止作用,也不去回忆在循环里是跳出本层循环,不去研究它与continue或者return的区别。在这里,我们简简单单的谈一下,它在switch语句中的利用。
  有这样一道编程题目:输入某年某月某日三个值,判断这是这一年的第几天。一般的情况,我们会这样写代码:
#include&stdio.h&
void main()
int year,month,day,
printf("请任意输入年月日:");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
case 1:num=
case 2:num=31+
case 3:num=day+28+31;
case 4:num=day+28+31+30;
case 5:num=day+28+31+30+31;
case 6:num=day+28+31+30+31+30;
case 7:num=day+28+31+30+31+30+31;
case 8:num=day+28+31+30+31+30+31+31;
case 9:num=day+28+31+30+31+30+31+31+30;
case 10:num=day+28+31+30+31+30+31+31+30+31;
case 11:num=day+28+31+30+31+30+31+31+30+31+30;
case 12:num=day+28+31+30+31+30+31+31+30+31+30+31;
if((year%4==0&&year%100!=0)||(year%400==0))
if(num&31+28)
num=num+1;
printf("输出的年月日为这一年的第%d天\n",num);
  上述代码的基本思想就是先不考虑闰年和平年,以月为switch执行的判断式,逐月累加,得到结果,最后再判断闰年,天数加1.上述代码呢,也无所谓不好,但是case语句下,越到后面重复越多,累加效果月明显。那么,我们就可以这样考虑,放弃break的跳出功能,每一月都是在上一个月的基础上,加上上一月对应的天数。这样,我们便得到的下面的代码:
#include &stdio.h&
void main()
int year,month,date,day = 0;
printf("请输入年月日,用逗号分隔:");
scanf("%d,%d,%d",&year,&month,&date);
switch(month)
day += 30;
day += 31;
day += 30;
day += 31;
day += 31;
day += 30;
day += 31;
day += 30;
day += 31;
day += 28;
day += 31;
if(month & 2)
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
printf("这是该年的第%d天\n",day);
  代码相比上面的,简洁不少。而且,巧用break也是你的代码较之他人有不同之处。这样的小技巧,在我们平时的代码中,应该多思考思考。
阅读(...) 评论()C++中SWITCH-CASE BREAK语句的使用例子
15:42:36编辑:什么鱼 关键字:&&&&
在++中,也有这样的开关,那就是switch语句。它能够很简捷地描述出多岔路口的情况。具体的语法格式为:
switch(表达式)
&& case 常量表达式1:
&&&&& 语句块1;
&&&&& break;
&& case 常量表达式n:
&&&&& 语句块n;
&&&&& break;
&& default:
&&&&& 语句块n+1;
& 在switch语句中,我们要记住四个关键词,分别是switch、case、default和break。switch是语句的特征标志(图中标作sw);case表示当switch后的表达式满足某个case后的常量时,运行该case以后的语句块。要注意,任意两个case后的常量不能相等,否则switch将不知道选择哪条路走。default表示当表达式没有匹配的case时,默认(default)地运行它之后的语句块(图中未标出);break表示分岔路已经到头,退出switch语句。
下面给出一个例子:
int main()
cout<<"请问可以格式化您的硬盘吗?"<<&#39;
switch&(answer)
case &#39;Y&#39;:
case &#39;y&#39;:
cout<<"您的选择是正确的"<<
case &#39;N&#39;:
case &#39;n&#39;:
cout<<"您的选择是错误的"<<
cout<<"你是神经病!"<<&#39;
& & & cout<<endl<<endl<<"按任意键结束程序"<<endl<<
cin.ignore(100,&#39;
&#39;); //忽略100个字符,直到遇到回车结束忽略
cin.get(); //输入流,不忽略空格
关键字:&&&&
来源: 51hei
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
/*&名称:C51、STM32和S3C2440中断体系的比较&说明:对于这三个芯片的中断体系来说,就我目前了解的, 我说:差不多。这里说的差不多,是中断的本质上差不多,都是首先中断源提出申请(比如触发了外部中断,定时器中断等),然后经过中断源屏蔽寄存器,再然后中断优先级的比较,最后CPU相应中断。(我去,这好像又回到了计算机组成原理啊)。不同的是细节,C51作为低级一点的芯片,其中断少,中断能达到的功能也少,相对来说较为简单些(无论是设计还是具体使用)。而STM32和S3C2440来说,其提供的功能较多,设计起来和使用起来要复杂的多(使用的时候得配置好多好多寄存器)。目前总结的,差不多就是这些吧。*/
/*&名称:STM32之利用I2C协议读写EEPROM&说明:&1.利用STM32来读写EEPROM和C51最大的不同就是,前者是直接使用I2C控制器(硬件方式)来产生所需要的I2C时序,而后者是通过软件方式来产生I2C时序。相对来说,前者使用硬件电路简化了编程的复杂性,用户只要将数据发送到相应的数据寄存器,然后I2C控制器自动按照I2C协议把数据通过SCL和SDA总线发送出去。而后者,你必须按照I2C协议手动产生SCL和SDA的高低电平。当然对于EEPROM来说,它是感受不到发送来的数据是通过硬件电路还是软件方式产生的。2.还有,STM32内部集成的I2C控制器不仅可以产生时序,还包括了一些
/*&名称:C51之定时器&说明: 对于C51单片机来说,其内部有2个定时器,分别是T0和T1。它输入的时钟源是固定的,就是晶振输送的。当然它还可以作为计数器,统计外部输入的脉冲信号。这个实验是定时器中断实验。对于定时器中断,这是属于中断的一种。使用它也需要配置先前所属的相关寄存器。不同的是,关于定时器中断,还需要配置一些其他与定时器相关的寄存器,如定时器方式寄存器(TMOD)、计数器TH、TL等。要注意一点的是,C51单片机的定时器可以工作在中断方式,也可以工作在查询方式。在本实验中,使用定时器0(C51有两个定时器),采用中断方式进行精确时间的显示。*///定时器0中断初始化void
/*&名称:74HC595的使用&说明:74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7’输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存人到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。而当OE为高电位,也就是输出关闭时,并行输出端会维持在高阻抗状态。这里需要注意一点的就是,在芯片需要产生上升沿或者下降沿的时候:本质上就是将其对应引脚进行高低电平的转换。当然中间需要根据需要保持一定的时间(可以用空指令)。具体引脚及使用说明见:百度百&n
/*&名称:C51IO口模拟I2C总线驱动EEPROM(AT24C16)说明:I2C总线是由Philips公司开发的一种简单、半双工同步串行总线。它只需要两根线(SCL、SDA)即可在连接于总线上的器件之间传送信息。其中SCL时钟总线用于同步数据,SDA数据总线用来发送数据(或地址)。和SPI总线不同的是,I2C总线通过在SDL上发送存储器的地址用来选中总线上对应的设备。关于具体的通信协议这里就不说了,无非是通过IO口模拟产生所需信号&(如通信开始信号是SCL为高时,SDA产生一个下降沿信号。) 驱动程序中有 具体的说明。&*///定义I2C相关变量sbit & & SCL=P2
/*&名称:C51IO口模拟I2C总线驱动AT24C16&说明:关于EEPROM,即这里的AT24C16是一个特殊形式的FLASH存储器,不过其容量一般较少。比较适合于存储少量的数据。AT24C16的通信接口是标准的I2C通信,即我们需要根据I2C通信协议来操纵EEPROM设备。 关于AT24C16的的各种操作,这里就不细讲了,简单介绍一下。(1)、主机向AT24C16写一个字节:首先需要发送设备地址,然后发送需要访问的存储器地址。然后在发送要写入的数据。这里省略了开始、结束和确认等信号的产生。(2)、指定页写入n个字节:和(1)的基本操作很类似。不同的是可以连续写入n个数据。这里要小注意一点的就是,写入的数据
热门资源推荐
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件c语言中switch中break的用法_百度知道
c语言中switch中break的用法
intx=1,y=0,a=0,b=0;swich(x){case1swich(y){case0:a++;case1:b++;}case2:a++;b++;case3:a++;b++;}printf(&a=%d,b=%d\n&,a,b);的运行结果...
int x=1,y=0,a=0,b=0;swich(x){case 1 swich(y){case 0:a++;case 1:b++;}case 2: a++;b++;case 3:a++;b++;}printf(&a=%d,b=%d&#92;n&,a,b);的运行结果
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
小猥琐之叶子
小猥琐之叶子
采纳数:62
获赞数:5114
擅长:暂未定制
在C语言中break的意思就是执行到这一步下面的都不执行了。比如从case 1开始执行,如果没break,则下面的语句都会执行,直到遇到下一个break或者当前代码块运行完毕。下面以学生管理系统的代码块为例。int&main(){&&&&while(true){&&&&&&&int&&&&&&&&&printMenu();&&&&&&&&scanf(&%d&,&cmd);&&&&&&&&switch(cmd){&&&&&&&&&&&&case&0:exit(0);&&&&&&&&&&&&&case&1:addAthlete();&&&&&&&&&&&&case&2:alterAthelete();&&&&&&&&&&&&case&3:searchAthlete();&&&&&&&&&&&&case&4:printStudentList();&&&&&&&&&&&&case&5:sortAthelete();&&&&&&&&&&&&default:printf(&非法命令\n&);&&&&&&&&}&&&&}&&&&return&0;}在上述代码中每选择case后就会执行函数,执行完后会结束这个case;但是不会结束程序,而在case0中exit(0)才会结束程序。
采纳数:34
获赞数:58
break的意思就是执行到这一步下面的都不执行了。比如从case 1开始执行,如果没break,则下面的语句都会执行,直到遇到下一个break或者当前代码块运行完毕。如果有则直接跳出。至于结果,看了解释你还是自己计算一下吧
本回答被网友采纳
采纳数:41
获赞数:70
你有2个case都没break加上的话结果应该是 1, 0
大好人oooo
大好人oooo
擅长:暂未定制
a=1,b=0…………………………………………………………
其他1条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java中的switch语句中break和continue的区别_百度知道
java中的switch语句中break和continue的区别
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
bigocean2010
来自电脑网络类芝麻团
bigocean2010
采纳数:318
获赞数:277
参与团队:
break、continue、return之间的区别与联系 在软件开发过程中,逻辑清晰是非常之重要的。 代码的规范也是非常重要的。往往细节决定成败。在编写代码的时候,一定要理解语言的作用以及使用的方法和场景。下面来介绍一下break、continue、return三者的区别和联系。1. break :(1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。 (2).只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。[逐层判断,逐步跳出] (3).break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。 (4).当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。 总的来说:就近原则,结束当前的整个循环。2. return:(1).return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。 (2).return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。 (3). return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。3. continue:(1).终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。 (2).结束当前循环,进行下一次的循环判断。 (3).终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行.
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。> 问题详情
break语句有两种用途:一种是从switch语句的分支中跳出,一种是从【】内部跳出。
悬赏:0&答案豆
发布时间:
break语句有两种用途:一种是从switch语句的分支中跳出,一种是从【 】内部跳出。请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1设a=8,则表达式a>>>2的值是【&】。2异常类在Java程序中是一种比较特殊的类,在使用之前必须先定义,按异常处理不同可分为运行异常、捕获异常、声明异常和【&】。3Java对象串行化技术,主要是通过【&】类和ObjectOutputStream类来实现。4用来导入已定义好的类或包的语句是【&】。
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:}

我要回帖

更多关于 switch语句break怎么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信