switch是另一种分支控制语句,其特点是可以根据一个表达式的的多种值,选择多个分支,因而也称为分情况语句或开关语句。
switch(表达式)
{
case常量1:语句1
case常量2:语句2
case常量3:语句3
……
case常量n:语句n
default:语句n+1
}
语句中的表达式可以是数值型或是字符型,表达式的值称为开关。
语句结构中的各个case后常量表达式的值必须不一样,否则执行的时候将出现错误,即同一个开关值,将对应多种执行方案。
当表达式的值与某一个常量相等时,就执行后面的语句。
case常量起的是语句标号作用,程序并不在此进行判断。当程序执行到某个标号的语句时,就会按顺序执行后面的语句,直到遇到break语句或switch语句结束。
若表达式的值与所有的常量表达式的值都不相等,则执行default后面的语句。default语句一般放在最后,否则会出现逻辑错误。
根据变量i的值,输出字符
#include <stdio.h>
#include <windows.h>
int main()
{
int i;
printf("piease input i : ");
scanf("%d",&i);
switch(i)
{
case 1:printf("A\n");
case 2:printf("B\n");
case 3:printf("C\n");
case 4:printf("D\n");
default:printf("E\n");
}
system("pause");
}
若输入i的值为3,则与第三个常量相等,执行此后的所有语句,其运行结果:
C
D
E
为了实现多分支,在执行了满足条件的语句后,就要使流程跳出switch分支语句结构,而不执行后面的语句。因此,必须在常量表达式后面的语句最后,再加上break语句。
#include <stdio.h>
#include <windows.h>
int main()
{
int i;
printf("piease input i : ");
scanf("%d",&i);
switch(i)
{
case 1: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");
}
system("pause");
}
最后一个分支的default语句后面可以不加“break”语句。(可以根据程序的实际情况来判断什么时候加break);
例如:
switch(i)
{
case 1:
case 2:
case 3:printf("ABC\n");
case 4:printf("D\n");
default:printf("E\n");
}
当表达式的值为1、2、3中的任意一个值时,都会输出:ABC
注意:case语句出现的次序并不影响执行结果。case后面可以是一条简单的语句,也可以是用花括号括起来的有几条语句构成的复合语句,还可以是空语句或流程控制语句。当有很多语句时,将会顺序完成所有语句。
(例子,如果要求分数的分段落,例如90几;80几,可以用score/10, 然后用switch去实现程序的编写)