switch语句如何使用 c语言switch语句例题
本篇文章给大家谈谈switch语句如何使用,以及c语言switch语句例题对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
C语言里的switch语句怎么用,最好有例子哈~!
C语言“switch语句”的使用技巧顾红---- C语言作为国际上流行的计算机语言已经和正在被广大的计算机用户使用。凡是使用过的人都会有同样的感觉——C语言的使用灵活这个特点既是优点又是缺点,因为对精通C语言的用户来讲,灵活就意味着编程可以无拘无束,甚至随心所欲;但对初学者或者是尚未摸着规律的用户来说,有时候就会觉得C程序设计有点象雾里看花,摸不着头脑。因为灵活就意味着没有一个标准。而实际上,C语言和其它计算机语言一样,只要你真正掌握了该语言的每一个语句的特点,理解、运用就不难掌握了。下面就C语言中switch语句的使用特点谈谈自己的体会。---- switch语句的格式如下: switch(表达式){case常量表达式1:语句1 case常量表达式2:语句2 case常量表达式3:语句3 case常量表达式n:语句n default:语句n+1}----从表面上看来,switch语句与PASCAL语言中的case语句以及FOXBASE中的do case语句非常类似,只是关键字有所不同:一个是switch;而另一个是case或do case。但如果仔细阅读过教材或有关参考书的话,就绝不会有此想法。从语句的功能上来看,PASCAL和case语句或FOXBASE的do case语句中的常量表达式是用来与case后面的表达式比较以确定执行哪一个语句,一旦执行了某一语句,则会自动地结束这一case后的语句;而C的switch语句则不然。首先,switch语句中的常量表达式只是起到一个入口作用,一旦执行了相应的语句后,只要没有强迫中断语句(break),它就会一直按顺序继续执行下去,也就是会执行其它case后面的语句,直到遇到“}”符号才停止。乍看觉得有点不可事议,但若仔细回味且切身编程体会,那么就会感司到C的switch语句的独到之处。接下来就几个具体例子来剖析:switch语句的特点以及区别于其它语言中的相应语句的妙处。----第一个例子:根据输入的百分制成绩,然后给出‘A’~‘E’相应的等级符(90-100为‘A’、80-89为‘B’、70-79为‘B’、60-69为‘C’、0-59为‘E’)。主要的处理程序段如下:(temp、score、grade皆为整型变量) temp=score/10; switch(temp){case 9:grade=‘A’; case 8:grade=‘B’; case 7:grade=‘C’; case 6:grade=‘D’; case 5:grade=‘E’;} printf(“the grade is%c”,grade);----仔细阅读这段程序(根据C语言的特点),就会发现有很多错误。首先,对100分和低于50分的情况没有考虑;其次,C语言的switch特点是顺序执行,那么这段程序不输入的分数如何,最后的输出都将是‘E’。因此,修改这段程序,可以得到一个正确答案是: temp=score/10; switch(temp){case 10: case 9:grade=‘A’;break; case 8:grade=‘B’;break; case 7:grade=‘C’;break; case 6:grade=‘D’;break; case 5: case 4: case 3: case 2: case 1: case 0:grade=‘E’;} printf(“the grade is%c,grade”);----但这么一个结果还不算是一个好的C程序,因为它只是能得到正确的解,没有真正用到C的特点。如果将C的特点运用到这段程序中,则程序将优化成如下: grade=‘A’; temp=score/10; switch(temp){case 0: case 1: case 2: case 3: case 4: case 5:grade++; case 6:grade++; case 7:grade++; case 8:grade++; case 9: case 10:} printf(“the grade is%c,grade”);----从这段程序中,我们可以体会到前面所说的该语句的特点。----第二个例子:运输公司对用户计算运费。距离(s)越远,每公里运费越低。具体标准如下: s< 250(km)没有折扣 250<=s< 500(km) 2%折扣 500<=s< 1000(km) 5%折扣 1000<=s< 2000(km) 8%折扣 2000<=s< 3000(km) 10%折扣 3000<=s(km) 15%折扣----设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费计算公式为:---- f=p*w*s*(1-d)----分析此问题,折扣的变化是有规律的:折扣的“变化点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,可以再设一变量c,它代表250的倍数。当c<1时,无折扣;1<=c<2时,折扣为d=2%;2<=c<4时,d=5%;4<=c<8时,d=8%;8<=c<12时,d=10%; c>=12时,d=15%。所以可以有如下没有错误的程序段: scanf(“%f,%f,%d”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c){case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;} f=p*w*s*(1-d/100.0); printf(“freight%15.f”,f);----如同前一个题目,这个程序段也完全可以利用switch特点,改进优化得到如下程序段: d=0 scanf(“%f,%f,%k”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c){case 12:d+=5; case11: case 10: case 9: case 8:d+=2; case 7: case 6: case 5: case 4:d+=3; case 3: case 2:d+=3; case 1:d+=2; case 0:} f=p*w*s*(1-d/100.0); printf(“freight%15.4f”,f);----从上面两个例子分析,使我们可以比较清楚地看见C语言中switch语句与其它语言中相应语句的区别。尽管在学习和教计算机语言的过程中,我们始终认为语言是相通的,这样便于学习一门新的语言。但是真正要把某一门计算机语言学好,非得掌握它的特点。----这里仅仅是自己在编程实践过程中的一点体会,有错误的地方恳请批评指正。希望对你有帮助!
Java中的switch语句怎么使用
switch语句的格式:
switch(整型或字符型变量)
{
case变量可能值1:
分支一;
break;
case变量可能值2:
分支二;
break;
case变量可能值3:
分支三;
break;
...
default:
最后分支;
}
在 switch的语法里,我们要学到4个关键字:switch、case、break、default。
在switch(变量)这一行里,变量只能是整型或字符型。程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,就算条件成立,程序执行相应的分支,直到碰上break或者switch语句结束。
了解一下switch,case,break,default的意思,对理解前面的一切也会有帮助,它们分别是:开关,情况,中断,默认(值)。那么用一句话套起来的说法就是:根据开关值的不同,执行不同的情况,直到遇上中断;如果所有的情况都不符合开关值,那么就执行默认的分支。
最后说一下关于switch中非常重要的几个注意点。
第一、switch(整型或字符型变量)中,变量的类型如文中所标,只能是整型和字符类型。它们包含 int,char。当然无符类型或不同的长度整型(unsigned int,short,unsigned char)等都可以。另外,枚举类型(enum)内部也是由整型或字符类型实现。所以也可以。实型(浮点型)数就不行,如:
float a= 0.123;
switch(a)//错误!a不是整型或字符类型变量。
{
....
}
第二、case之后可以是直接的常量数值,如例中的1、2、3、4,也可以是一个使用常量计算式,如2+2等,但不能是变量或带有变量的表达式,如 a* 2等。当然也不能是实型数,如4.1,或2.0/ 2等。
switch(formWay)
{
case 2-1://正确
...
case a-2://错误
...
case 2.0://错误
...
}
另外,在case与常量值之后,需要一个冒号,请注意不要疏忽。
第三、break的作用。
break使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到switch接的一对{}之后),完成switch。如果没有这个break,程序将在继续前进到下一分支,直到遇到后面的break或者switch完成。
比如,假设现在程序进入case 1:中的分支,但case 1的分支这回没有加break:
case 1:
System.out.println("您是通过搜索引擎来到本网站的。");
case 2:
System.out.println("您是通过朋友介绍来到本网站的。");
那么,程序在输出"您是通过搜索引擎来到本网站的。"之后,会继续输出case 2中的"您是通过朋友介绍来到本网站的。"。
请大家将前面实例中的代码片段改为如下(红色部分,即将所有的break都通过加//使之无效。):
...
case 1:
System.out.println("您是通过搜索引擎来到本网站的。");
//break;
case 2:
System.out.println("您是通过朋友介绍来到本网站的。");
//break;
case 3:
System.out.println("您是通过报刊杂志来到本网站的。");
//break;
case 4:
System.out.println("您是通过其它方法来到本网站的。");
//break;
default:
System.out.println("错误的选择!请输入1~4的数字做出选择。");
...
运行后,结果会是如何?请大家动手试试,然后在作业中回答我。
第四、default是可选中,前面我们已经说过它的用处,及如果没有default,程序在找不到匹配的case分支后,将在switch语句范围内不做什么事,直接完成switch。大家也可以在实例中将default的代码注释掉,然后试运行,并且在选择时输入5。
...
//default:
//cout<<"错误的选择!请输入1~4的数字做出选择。"<< endl;
...
第五、必要时,可在各个case中使用{}来明确产生独立的复合语句。
前面我们在讲if...语句和其它流程控制语句时,都使用{}来产生复合语句:
if(条件)
{
分支一;
}
除非在分支中的语句正好只有一句,这里可以不需要花括号{}。但在switch的各个case语句里,我们在语法格式上就没有标出要使用{},请看:
switch(整型或字符型变量)
{
case变量可能值1:
分支一;
break;
case变量可能值2:
....
}
一般教科书上只是说 case分支可以不使用{},但这里我想提醒大家,并不是任何情况下case分支都可以不加{},比如你想在某个case里定义一个变量:
switch(formWay)
{
case 1:
int a=2;//错误。由于case不明确的范围,编译器无法在此处定义一个变量。
...
case 2:
...
}
在这种情况下,加上{}可以解决问题。
switch(formWay)
{
case 1:
{
int a=2;//正确,变量a被明确限定在当前{}范围内。
...
}
case 2:
...
}
switch语句怎么用啊
在C语言中,switch语句是开关语句,一般与case、break、default配合使用,对流程进行控制。
switch语句的语法规则:
switch(变量表达式)
{
case常量1:语句;break;
case常量2:语句;break;
case常量3:语句;break;
...
case常量n:语句;break;
default:语句;break;
}
其中switch、case、break、default都是关键词。switch作为一个开关,当变量表达式的值对应case中的值时,执行case后面的语句后跳出switch语句,如果都不符合则执行default后面的语句后跳出switch语句。
使用举例:判断分数等级,程序如下。
扩展资料:
switch语句规则:
1、switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
2、只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
3、switch()的参数类型不能为实型。
4、case标签必须是常量表达式(constantExpression),如42或者'4'。
5、case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
参考资料来源:百度百科-switch(计算机语言关键词)
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!