- 15
- 0
- 约9.1千字
- 约 53页
- 2018-04-23 发布于广东
- 举报
switch语句一般形式如下: switch(表达式) { case常量1:语句1; case常量2:语句2; case常量3:语句3; …… case常量n:语句n; default: 语句n+1; } 语句中的“表达式”可以是数值型或是字符型,表达式的值称为开关值。语句结构中各个case后常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。 当表达式的值与某一个常量相等时,就执行常量后面的语句。 case常量起的是语句标号的作用,程序并不在此进行判断。当程序执行某个标号的语句,就会按顺序执行以后的语句,直到遇到break语句或switch语句结束。 若表达式的值与所有常量表达式的值都不相等,则执行default:后面的语句。default语句一般放在最后,否则会出现逻辑错误。 注意: 虽说“表达式”可以是数值型,但由于浮点数是用近似值表示的。“= =”用于两个浮点数的判断时,由于存储误差,会得出错误的结果。 例如: 1.0/3.0 *3.0= =1.0 由于1.0/3.0得到的值用有限位保存,是近似值,所以,1.0/3.0*3.0≠1.0。也就是说,“表达式”中不可以是浮点数。 例4.7 根据变量i的值,输出字符。 #include stdio.h void main() { int i; printf(″please input i:″); scanf(″%d″,i); switch(i) { case l: printf(″A\n″); case 2: printf(″B\n″); case 3: printf(″C\n″); case 4: printf(″D\n″); default: printf(″E\n″); } } 若输入i的值为3,则与第3个常量相等,执行时会以case3:为入口,执行此后的所有语句,其输出结果为: C D E 为了实现多分支,在执行了满足条件的语句后,就要使流程跳出switch分支结构,而不执行其后续的case后面的语句。因此,必须在常量表达式后面语句的最后,加上“break语句。具体形式如下: switch(i) { case l: printf(″A\n″); break; case 2: printf(″B\n″); break; case 3: printf(″C\n″); break; case 4: printf(″D\n″); break; default: printf(″E\n″); } 最后一个分支的default语句后面可以不加“break;”语句。根据程序的需要在语句后面加或不加“break”,可以使多分支处理变得非常灵活。如果多种情况需要共用一个执行语句,可用case的常量表达式将多种情况列出,在最后一种情况之后,才安排需执行的语句。例如: switch(i) { case l: case 2: case 3: printf(″ABC\n″); break; case 4: printf(″D\n″); break; default: printf(″E\n″); } 当表达式的值为l,2,3中任一个值,都会输出:ABC。 case语句出现的次序并不影响执行结果。 case后面可以只有一条简单语句,也可以是用花括号括起来的几条语句构成的复合语句,还可以是空语句或流程控制语句。当有多条语句时,将会顺序执行完所有语句。 例4.8 根据输入的学生的成绩判断等级。当成绩score≥90时为A等;成绩70≤score90为B等;成绩60≤score70为C等;成绩score<60为D等(score为整数)。 分析:设score为整型数,在score≥90的范围内,score可能取100,99,…,90,如果把这些值都列出来,太繁琐。利用两个整数相除,结果自动取整的特性,当score在90到100之间变化时,score/10就只可能取10和9两个值。 score和score/10的对应关系: score score/10 ≥90 10, 9 70~89 7, 8 60~69 6 60以下 default 因此,可以用score/10的值来确定分支。 上述任务可以由以下的程序完成: #include stdio.h vo
原创力文档

文档评论(0)