Cswitchcase语句应用经验讲解_第1页
Cswitchcase语句应用经验讲解_第2页
Cswitchcase语句应用经验讲解_第3页
Cswitchcase语句应用经验讲解_第4页
Cswitchcase语句应用经验讲解_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+ switch-case语句应用经验讲解C+ switch-case语句是一个循环判断语句,在实际编程中起着非常重要的作用。希望这篇文章中介绍的内容能帮助大家解决一些问题。在C+编程语言中,存在着一些判断语句,比如if,C+ switch-case语句等等。我们在这篇文章中会针对C+ switch-case语句的基本使用方法进行详细的介绍,希望能给大家带来一些帮助。if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.深层嵌套的else-if语句往往在语法上是正确的,但逻辑上却没有正确地反映程序员的意图

2、。例如,错误的else-if匹配很容易被忽略。添加新的条件和逻辑关系,或者对语句做其他的修改,都很难保证正确性。因此,C/C+语言又提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句.它可以很方便地来实现深层嵌套的if/else逻辑。使用C+ switch-case语句直接处理多个分支(当然包括两个分支).其一般形式为:1 switch(表达式) 2 3 case 常量表达式1: 4 语句1; 5 break; 6 case 常量表达式2: 7 语句2; 8 break; 9 10 case 常量表达式n: 11 语句n; 12 break; 13 defaul

3、t: 14 语句n+1; 15 break; 16 C+ switch-case语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句,程序流程转向开关语句的下一个语句.以上是switch-case的正规写法,default语句总是写在最后。但是,如果把default语句间在了case的中间

4、,执行的结果又是怎样的呢?笔者测试了一下几种有代表性的情况,把结果简单罗列如下:A. 每个语句中break齐整17 switch(c) 18 19 case '1': 20 printf("1n"); 21 break; 22 default: 23 printf("defaultn"); 24 break; 25 case '2': 26 printf("2n"); 27 break; 28 case '3': 29 printf("3n"); 30 break;

5、31 此种情况最为规整,default写在中间跟写在最后的效果一致。B. default语句后没有break32 switch(c) 33 34 case '1': 35 printf("1n"); 36 break; 37 default: 38 printf("defaultn"); 39 / break; 40 case '2': 41 printf("2n"); 42 break; 43 case '3': 44 printf("3n"); 45 break;

6、 46 此种情况下,输入分别为 1、 2、 3、 4,对应的输出分别为 1、 2 、3、 default 2(换行省略了,实际运行时有换行的);即此种情况下遵循A中的执行顺序和一般的标号规则。C. 最后一个case没有break47 switch(c) 48 49 case '1': 50 printf("1n"); 51 break; 52 default: 53 printf("defaultn"); 54 break; 55 case '2': 56 printf("2n"); 57 break;

7、 58 case '3': 59 printf("3n"); 60 / break; 61 此种情况下,输入分别为 1、 2、 3、 4,对应的输出分别为1、2、3、default.可见实际的运行效果并不等同于把default语句挪到最后的运行效果。否则,输入为3时,输出应该为 3 default.D. default和最后一个case都没有break62 switch(c) 63 64 case '1': 65 printf("1n"); 66 break; 67 default: 68 printf("def

8、aultn"); 69 / break; 70 case '2': 71 printf("2n"); 72 break; 73 case '3': 74 printf("3n"); 75 / break; 76 由上面A,B,C三种情况的运行结果,我们可以推测出D这种情况的运行结果。当输入分别为 1、2、3、4时,输出为1、2、3、default 2. 结果与B的情况相同。#include <iostream>using namespace std;int main()int year,month,d

9、ay,no;cout<<"Year:"cin>>year;cout<<"Month:"cin>>month;cout<<"Day:"cin>>day;if(year%400=0|year%4=0&&year%100!=0) /是闰年的情况switch(month)case 1:no=day;break;case 2:no=31+day;break;case 3:no=1+31+28+day;break;case 4:no=1+31+28+31+da

10、y;break;case 5:no=1+31+28+31+30+day;break;case 6:no=1+31+28+31+30+31+day;break;case 7:no=1+31+28+31+30+31+30+day;break;case 8:no=1+31+28+31+30+31+30+31+day;break;case 9:no=1+31+28+31+30+31+30+31+31+day;break;case 10:no=1+31+28+31+30+31+30+31+31+30+day;break;case 11:no=1+31+28+31+30+31+30+31+31+30+31

11、+day;break;case 12:no=1+31+28+31+30+31+30+31+31+30+31+30+day;break;default:cout<<"你的输入有误!"<<endl;return 0;else /不是闰年的情况switch(month)case 1:no=day;break;case 2:no=31+day;break;case 3:no=31+28+day;break;case 4:no=31+28+31+day;break;case 5:no=31+28+31+30+day;break;case 6:no=31+28+

12、31+30+31+day;break;case 7:no=31+28+31+30+31+30+day;break;case 8:no=31+28+31+30+31+30+31+day;break;case 9:no=31+28+31+30+31+30+31+31+day;break;case 10:no=31+28+31+30+31+30+31+31+30+day;break;case 11:no=31+28+31+30+31+30+31+31+30+31+day;break;case 12:no=31+28+31+30+31+30+31+31+30+31+30+day;break;defau

13、lt:cout<<"你的输入有误!"<<endl;return 0;cout<<"你输入的日期是这一年的第"<<no<<"天"<<endl;system("pause");return 0;#include<stdefx.h>#include <iostream>using namespace std;int main() int mark; cout<<"输入百分制成绩:" cin>

14、;>mark; mark=mark/10; switch(mark) case 0: case 1: case 2: case 3: case 4: case 5: cout<<"不及格"<<endl; break; case 6: cout<<"及格"<<endl; break; case 7: cout<<"中"<<endl; break; case 8: cout<<"良"<<endl; break; cas

15、e 9: cout<<"优"<<endl; break; default: if(mark=10) cout<<"优"<<endl; else cout<<"你输入的分数超出范围,请重新输入:" cin>>mark; return 0;#include<stdefx.h>#include <iostream>using namespace std;int main() int mark; cout<<"输入百分制成绩:

16、" cin>>mark; if(mark<110&&mark>100) cout<<"你输入的分数超出范围,请重新输入:" cin>>mark; mark=mark/10; switch(mark) case 0: case 1: case 2: case 3: case 4: case 5: cout<<"不及格"<<endl; break; case 6: cout<<"及格"<<endl; break; case 7: cout<<"中"<<endl; break; c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论