*
switch语句的语法结构如图,括号内的控制表达式必须是整数类型。
switch语句 ----switch-----(--------表达式-------)---------语句--------------
使用switch语句修改后的程序代码如下:
/* 显示所输入的整数除以3 的余数 */ #include <stdio.h> int main(void) { int no; printf("请输入一个整数:"); scanf("%d",&no); switch(no % 3){ case 0 : puts("该数能被3整除。"); break; case 1 : puts("该数除以3的余数是1。"); break; case 2 : puts("该数除以3的余数是2。"); break; } return 0; }
如果 no % 3 的值为1,则程序会转向 "case 1 : "
像"case 1 : " 这样用来表示程序跳转的标识称为标签(label)。
PS:1和 :之间有没有空格都可以。但是case和1之间必须有空格,不可不加空格写成case1。
标签的值必须为常量,不可为变量。另外,不允许多个标签同为一个值。程序跳到该标签会按顺序执行其后的语句,因此画面中会显示”该数除以3的余数是1。“。
当程序执行到break语句时,switch语句执行结束。如下:
break语句: ------break-------;----------
复杂的switch语句
/* 确认switch语句动作的程序 */ #include <stdio.h> int main(void) { int sw; printf("整数:"); scanf("%d",&sw); switch (sw){ case 1 : puts("A"); puts("B"); break; case 2 : puts("C"); case 5 : puts("D"); break; case 6 : case 7 : puts("E"); break; default : puts("F"); break; } return 0; }
当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到 ”default :“ 继续执行。
没有break的时候,程序会移到下一条语句上。
如果改变程序switch语句中标签的顺序,程序的执行结果也会发生改变,所以在使用switch语句的时候,一定要正确书写标签的顺序。
如下所示为根据变量sw的值改变颜色名称的switch语句。如果sw的值为4,使其显示”黑色“。为此,仅添加”case 4 : printf("黑色“);"是不够的。因为必须在”case 3 :“
的末尾加上break语句。
switch(sw) { case 1 : puts("红色"); break; case 2 : puts("蓝色"); break; case 3 : puts("白色"); }
- 如果在每一个case的末尾也加上break语句的话,就可以灵活应对case的增加或删除了。
- 根据某一整数类型的单一表达式的值,需要将程序分为多个分支的时候,可以使用switch语句。根据判断结果,程序会跳转到(整数类型的常量指定的)相应的标签处。如果没有相应的标签,程序则会跳转到default处。
- 在switch语句中,break语句执行后,switch语句便执行结束。如果没有break语句,程序将落到下一条语句上。