精品-清华大学C语言课件 第7章03 switch语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这里可以将switch形象的比喻成一个提供饮品的投币机,可以将case语句看成该机器提供的多种不同 口味的饮料,表达式的值可以看成用户选择的一种口味,当选择完某种口味后便可取到相应的饮料,而出 来饮料的这个过程就相当于case后面对应的语句。 说明:
switch语句检验的条件必须是一个整型表达式,这意味着其中也可以包含运算符和函数调用。而case 语句检验的值必须是整型常量,也就是说可以是常量表达式或着常量运算。 通过一段代码再来分析一下switch语句的使用,如下面的代码:
#include<stdio.h> int main() { int iDay=0;/*定义变量表示输入的星期*/ printf("请输入星期时:\n");/*提示信息*/ scanf("%d",&iDay);/*输入星期*/ switch(iDay) { case 1:/*iDay的值为1时*/ printf("公司开会\n"); break; case 2:/*多路开关模式*/ case 3: case 4: case 5: printf("和同事一起工作\n"); break; case 6:/*iDay的值为6时*/ printf("和朋友去逛街\n"); break; case 7:/*iDay的值为7时*/ printf("在家陪家人\n"); break; default:/*iDay的值错误时*/ printf("输入有误!!\n"); } return 0; }
#include<stdio.h>
int main() { char cGrade;/*定义变量表示分数的级别*/ printf("请输入你的级别:\n");/*提示信息*/ scanf("%c",&cGrade);/*输入分数的级别*/ printf("级别情况是:");/*提示信息*/ switch(cGrade)/*switch语句判断*/ { case 'A':/*分数级别为A的情况*/ printf("90~100\n");/*输出分数段*/ break;/*跳出*/ case 'B':/*分数级别为B的情况*/ printf("80~89\n");/*输出分数段*/ break;/*跳出*/ case 'C':/*分数级别为C的情况*/ printf("70~79\n");/*输出分数段*/ break;/*跳出*/ case 'D':/*分数级别为D的情况*/ printf("60~69\n");/*输出分数段*/ break;/*跳出*/ case 'F':/*分数级别为F的情况*/ printf("<60\n");/*输出分数段*/ break;/*跳出*/ default:/*默认情况*/ printf("输入有误!\n");/*提示错误*/ break;/*跳出*/ }
运行程序,显示效果如图7.16所示。
图7.16 修改日程安排程序 在程序中,使用switch语句将原来的if语句都去掉,使得程序的结构看起来比较清晰,易于观察。 在使用case进行检验值的时候,不要忘记case检验的条件只能是常量或者常量表达式,所以在这里不能 对变量进行检验。
多路开关模式的switch语句
在实例7.9中,将break去掉之后,会将符合检验条件后的所有语句都输出。利用这个特点,可以设 计多路开关模式的switch语句。其形式如下。
switch(表达式) { case 1: 语句1 break; case 2: case 3: 语句2 break; …… default: 默认语句 break; }
return 0; }
运行程序,显示效果如图7.17所示。
图7.17 使用switch语句输出分数段 本程序使用switch语句判断字符变量cGrade,其中使用case关键字检验可能出现的级别情况。并 且在每一个case语句的最后都会有break进行跳出。如果没有符合的情况则会执行default默认语句。 注意: 在case语句表示的条件后有一个冒号“:”,在编写时不要忘记。
switch(selection)
{
case 1:
printf("Processing Receivables\n");
break;
case 2:
printf("Processing Payables\n");
break;
case 3:
printf("Quitting\n");
break;
default:
图7.18 不添加break的情况 从运行的结果中可以看出,当去掉break语句后,会将case检验相符情况后的所有语句进行输出。所 以在case语句中break语句是不能缺少的。
实例4 使用多路开关模式编写日程安排程序
在本实例中,要求将操作相同的检验结果使用多路开关的模式进行编写,当输入不正确的日期时进行 错误提示。
可以看到如果在case 2后不使用break语句,那么符合检验时与符合case 3检验时的效果是一样的。 也就是说使用多路开关模式,使得多种检验条件使用一种解决方式。
实例3 使用switch语句输出分数段
本实例中,要求按照考试成绩的等级输出百分之分数段的范围,其中要使用switch语句进行判断分数 的情况。
运行程序,显示效果如图7.19所示。
图7.19 使用多路开关模式编写日程安排程序 程序中使用多路开关模式,使得检测iDay的值为2、3、4、5这四种情况时,都会执行相同的结果。 并且利用default语句将不符合的数字显示提示信息表示输入错误。
switch (表达式) { case 情况1: 语句块1; case 情况2: 语句块2; … case 情况n: 语句块n; default: 默认情况语句块; }
其语句的程序流程如下图7.15所示。
图7.15 switHale Waihona Puke Baiduh多分支选择语句流程
通过上面的流程图进行分析switch语句的一般形式。switch后面括号中的表达式就是要进行判断的条 件。在switch的语句块中,使用case关键字表示检验条件符合的各种情况,其后的语句是相应的操作。 其中还有一个default关键字,代表的作用是如果上面没有符合条件的情况,那么执行default后的默认情 况语句。
在使用switch语句时,每一个case情况中都要使用break语句。如果不是用break语句会出现什么情况 呢?先来看一下break的作用,break使得执行完case语句后跳出switch语句。进行一下猜测,如果没有 break语句的话说明,程序可能会将后面的内容都执行。为了验证猜测是否正确,将上面的程序中的break 注释掉。还是输入字符'B',运行程序,显示结果如下图7.18所示。
switch语句
本讲大纲
1.switch语句的基本形式 2.多路开关模式的switch语句 实例3 使用switch语句输出分数段 实例4 使用多路开关模式编写日程安排程序
switch语句的基本形式
switch语句是多分支选择语句。例如,如果只需要检验某一个整型变量的可能取值,那么可以用更简 便的switch语句。switch语句的一般形式:
printf("Error\n");
break;
}
【例7.9】 使用switch语句修改日程安排程序。 在实例7.8中,使用嵌套的if语句形式编写了日程安排程序,要求使用switch语句对程序进行修改。
#include<stdio.h> int main() { int iDay=0;/*定义变量表示输入的星期*/ printf("请输入星期时:\n");/*提示信息*/ scanf("%d",&iDay);/*输入星期*/ switch(iDay) { case 1:/*iDay的值为1时*/ printf("公司开会\n"); break; case 6:/*iDay的值为6时*/ printf("和朋友去逛街\n"); break; case 7:/*iDay的值为7时*/ printf("在家陪家人\n"); break; default:/*iDay的值为其他情况时*/ printf("和同事一起工作\n"); break; } return 0; }
switch语句检验的条件必须是一个整型表达式,这意味着其中也可以包含运算符和函数调用。而case 语句检验的值必须是整型常量,也就是说可以是常量表达式或着常量运算。 通过一段代码再来分析一下switch语句的使用,如下面的代码:
#include<stdio.h> int main() { int iDay=0;/*定义变量表示输入的星期*/ printf("请输入星期时:\n");/*提示信息*/ scanf("%d",&iDay);/*输入星期*/ switch(iDay) { case 1:/*iDay的值为1时*/ printf("公司开会\n"); break; case 2:/*多路开关模式*/ case 3: case 4: case 5: printf("和同事一起工作\n"); break; case 6:/*iDay的值为6时*/ printf("和朋友去逛街\n"); break; case 7:/*iDay的值为7时*/ printf("在家陪家人\n"); break; default:/*iDay的值错误时*/ printf("输入有误!!\n"); } return 0; }
#include<stdio.h>
int main() { char cGrade;/*定义变量表示分数的级别*/ printf("请输入你的级别:\n");/*提示信息*/ scanf("%c",&cGrade);/*输入分数的级别*/ printf("级别情况是:");/*提示信息*/ switch(cGrade)/*switch语句判断*/ { case 'A':/*分数级别为A的情况*/ printf("90~100\n");/*输出分数段*/ break;/*跳出*/ case 'B':/*分数级别为B的情况*/ printf("80~89\n");/*输出分数段*/ break;/*跳出*/ case 'C':/*分数级别为C的情况*/ printf("70~79\n");/*输出分数段*/ break;/*跳出*/ case 'D':/*分数级别为D的情况*/ printf("60~69\n");/*输出分数段*/ break;/*跳出*/ case 'F':/*分数级别为F的情况*/ printf("<60\n");/*输出分数段*/ break;/*跳出*/ default:/*默认情况*/ printf("输入有误!\n");/*提示错误*/ break;/*跳出*/ }
运行程序,显示效果如图7.16所示。
图7.16 修改日程安排程序 在程序中,使用switch语句将原来的if语句都去掉,使得程序的结构看起来比较清晰,易于观察。 在使用case进行检验值的时候,不要忘记case检验的条件只能是常量或者常量表达式,所以在这里不能 对变量进行检验。
多路开关模式的switch语句
在实例7.9中,将break去掉之后,会将符合检验条件后的所有语句都输出。利用这个特点,可以设 计多路开关模式的switch语句。其形式如下。
switch(表达式) { case 1: 语句1 break; case 2: case 3: 语句2 break; …… default: 默认语句 break; }
return 0; }
运行程序,显示效果如图7.17所示。
图7.17 使用switch语句输出分数段 本程序使用switch语句判断字符变量cGrade,其中使用case关键字检验可能出现的级别情况。并 且在每一个case语句的最后都会有break进行跳出。如果没有符合的情况则会执行default默认语句。 注意: 在case语句表示的条件后有一个冒号“:”,在编写时不要忘记。
switch(selection)
{
case 1:
printf("Processing Receivables\n");
break;
case 2:
printf("Processing Payables\n");
break;
case 3:
printf("Quitting\n");
break;
default:
图7.18 不添加break的情况 从运行的结果中可以看出,当去掉break语句后,会将case检验相符情况后的所有语句进行输出。所 以在case语句中break语句是不能缺少的。
实例4 使用多路开关模式编写日程安排程序
在本实例中,要求将操作相同的检验结果使用多路开关的模式进行编写,当输入不正确的日期时进行 错误提示。
可以看到如果在case 2后不使用break语句,那么符合检验时与符合case 3检验时的效果是一样的。 也就是说使用多路开关模式,使得多种检验条件使用一种解决方式。
实例3 使用switch语句输出分数段
本实例中,要求按照考试成绩的等级输出百分之分数段的范围,其中要使用switch语句进行判断分数 的情况。
运行程序,显示效果如图7.19所示。
图7.19 使用多路开关模式编写日程安排程序 程序中使用多路开关模式,使得检测iDay的值为2、3、4、5这四种情况时,都会执行相同的结果。 并且利用default语句将不符合的数字显示提示信息表示输入错误。
switch (表达式) { case 情况1: 语句块1; case 情况2: 语句块2; … case 情况n: 语句块n; default: 默认情况语句块; }
其语句的程序流程如下图7.15所示。
图7.15 switHale Waihona Puke Baiduh多分支选择语句流程
通过上面的流程图进行分析switch语句的一般形式。switch后面括号中的表达式就是要进行判断的条 件。在switch的语句块中,使用case关键字表示检验条件符合的各种情况,其后的语句是相应的操作。 其中还有一个default关键字,代表的作用是如果上面没有符合条件的情况,那么执行default后的默认情 况语句。
在使用switch语句时,每一个case情况中都要使用break语句。如果不是用break语句会出现什么情况 呢?先来看一下break的作用,break使得执行完case语句后跳出switch语句。进行一下猜测,如果没有 break语句的话说明,程序可能会将后面的内容都执行。为了验证猜测是否正确,将上面的程序中的break 注释掉。还是输入字符'B',运行程序,显示结果如下图7.18所示。
switch语句
本讲大纲
1.switch语句的基本形式 2.多路开关模式的switch语句 实例3 使用switch语句输出分数段 实例4 使用多路开关模式编写日程安排程序
switch语句的基本形式
switch语句是多分支选择语句。例如,如果只需要检验某一个整型变量的可能取值,那么可以用更简 便的switch语句。switch语句的一般形式:
printf("Error\n");
break;
}
【例7.9】 使用switch语句修改日程安排程序。 在实例7.8中,使用嵌套的if语句形式编写了日程安排程序,要求使用switch语句对程序进行修改。
#include<stdio.h> int main() { int iDay=0;/*定义变量表示输入的星期*/ printf("请输入星期时:\n");/*提示信息*/ scanf("%d",&iDay);/*输入星期*/ switch(iDay) { case 1:/*iDay的值为1时*/ printf("公司开会\n"); break; case 6:/*iDay的值为6时*/ printf("和朋友去逛街\n"); break; case 7:/*iDay的值为7时*/ printf("在家陪家人\n"); break; default:/*iDay的值为其他情况时*/ printf("和同事一起工作\n"); break; } return 0; }