外贸
C语言中,解决多分支选择问题,除了可以利用条件语句的嵌套外,还可以采用switch语句来实现。Switch语句称为分支语句,又称为开关语句。其一般格式为:
switch(表达式){
case 常量表达式1: 语句序列1;[break]
case 常量表达式2: 语句序列2;[break]
…
case 常量表达式n: 语句序列n;[break]
default: 语句序列n+1;
}
其执行过程为:先计算switch表达式的值,然后自上而下和case后的常量表达式的值进行比较,如果相等则执行其后的语句序列,假定入口是常量表达式2,那么该语句执行语句序列2,当语句序列2执行完毕后,若有break语句,则中断switch语句的执行,否则继续执行语句序列3、语句序列4,一直到语句序列n。如果没有和表达式的值相匹配的常量表达式,则执行default后的语句。
注意:
(1)switch,case和default都是构成多分支语句的关键字。[]表示break可有可无,break语句起跳出作用,若没有break语句则找到执行入口后将一直执行后面的所有case所带的语句,直到最后。
(2)如果能够列出表达式各种可能的取值,则语句中可省去default分支;否则最好不要省略default,因为default表示的是switch语句在没有找到匹配入口时的语句执行入口。
(3)case后的常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值,其值必须互不相同。
(4)switch后的表达式可以是任何表达式,一般为整型、字符型、枚举型表达式。
(5)在switch语句的一般使用形式下,case出现的次序不影响执行结果。
(6)在case后可包含多个执行语句,而且不必加{}。
(7)switch可以嵌套。
(8)多个case可以共用一组执行语句,如:
switch(表达式){
case 常量表达式1:
case 常量表达式2:
case 常量表达式3:语句序列1;[break]
…
case 常量表达式n: 语句序列n;[break]
default: 语句序列n+1;
}
【例3-8】根据输入的数据判断星期几。
int main()
{
int a;
printf("input integer number:");
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n");
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n"); break;
case 6:printf("Saturday\n"); break;
case 7:printf("Sunday\n"); break;
default:printf("error\n");
}
return 0;
}
程序运行结果:
Input integer number: 5↙
Friday
在本实例中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以在每个case分支后面都要加一个break语句来实现这个功能。
【例3-9】根据学生成绩输出A、B、C、D、E。
#include <stdio.h>
int main()
{
int a,s;
printf("Input the score:");
scanf("%d",&s);
a=s/10;
switch (a){
case 10:
case 9:printf("A\n");
case 8:printf("B\n"); break;
case 7:printf("C\n"); break;
case 6:printf("D\n"); break;
default:printf("E\n");
}
return 0;
}
程序运行结果:
Input the score:70↙
C
本例中前两个case语句共用一组执行语句。
来源:服务器,转载请保留出处和链接!
本文链接:http://www.cau168.com/post/141.html
Copyright 六六互联.Some Rights Reserved.www.ic.vip