switch语句用来实现多分支选择结构
学生成绩分类
85分以上为’A’级
70~84分为’B’级
60~69分为’C’级
……
人口统计分类
按年龄分为老、中、青、少、儿童
switch语句的作用是根据表达式的值,使流程跳转到不同的语句。
switch语句的一般形式:

Switch语句的执行过程:
先计算表达式的值,然后依次与常量表达式i(i=1,2,……n)的值比较,若表达式的值与某个case语句后的表达式i的值相等,则先执行语句i,再依次执行语句i+1,i+2,……语句n+1。若所有case后的常量表达式的值均不与switch后的表达式的值相等,则执行default后语句。

其中case后面的常量表达式不能相同。
例题1:按照成绩的等级输出百分制分数段,A级为85分以上,B级为70~84分,C级为60~69分 ,D级为 60分以下 。成绩的等级由键盘输入。
解题思路:
多分支选择结构
将学生成绩分为4个等级
用switch语句实现
include <stdio.h>
int main()
{ char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{ case 'A': printf("85~100\n");
case 'B': printf("70~84\n");
case 'C': printf("60~69\n");
case 'D': printf("<60\n");
default: printf("enter data error!\n");
}
return 0;
}
此程序若输入B,将输出B之后的4条语句。
若想在执行某一分支后跳出switch语句,即终止switch语句的执行,可在每个case语句的后面加上一个break语句来达到此目的。
将上例改成如下形式:
#include <stdio.h>
int main()
{ char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{ case 'A': printf("85~100\n");break;
case 'B': printf("70~84\n");break;
case 'C': printf("60~69\n");break;
case 'D': printf("<60\n");break;
default: printf("enter data error!\n");
}
return 0;
}
修改后的程序,若输入B,将输出B之后的一条语句。
多个case子句可共用同一组执行语句.
#include<stdio.h>
int main()
{ int i;
scanf("%d",&i);
switch(i)
{case 1: case 2:printf("i=");
case 3: printf("%d\n",i);break;
default: printf("ok!\n");}
return 0;
}
思考:运行以上程序4次,分别输入1、2、3、5,观察程序的输出结果。

