选择结构程序设计开关语句.doc_第1页
选择结构程序设计开关语句.doc_第2页
选择结构程序设计开关语句.doc_第3页
选择结构程序设计开关语句.doc_第4页
选择结构程序设计开关语句.doc_第5页
全文预览已结束

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

导入如果分支太多,会导致嵌套的if语句层次数过多,则程序冗长且可读性较低。C语言中,可以用开关语句(switch语句)代替条件语句来简化程序的设计。一、开关语句:switch语句1.形式 switch(表达式) case 常量1 : 语句1 case 常量2 : 语句2 case 常量3 : 语句3 case 常量n : 语句n default : 语句n+1 2.执行过程当执行switch语句时,首先计算紧跟其后的一对括号中表达式的值,然后在switch语句体内寻找与该值吻合的case常量值。如果有与该值相等的常量,则执行其后的语句,接着就不再进行比较,依次顺序执行后面的所有case语句和default语句,直到switch语句体结束。如果圆括号内的表达式的值与所有case后面的常量均不相等时,如果存在default语句,则执行其后的语句,否则跳过switch语句体,什么也不做。3.说明switch后面圆括号内表达式的值一般为整型、字符型或枚举型,表达式两边的一对圆括号不能省略。 每个case后的“常量表达式”的类型应该与switch后面圆括号内表达式的类型一致。各case后的常量值应该互不相同,起到语句标号的作用。每个case后面的常量出现次序发生改变时,不影响程序运行结果。从程序执行效率角度考虑,把发生频率高的情况放在前面。case后的语句省略,则执行与后继case相同的语句。也就是说,找到匹配的case常量,顺序执行case后的语句和后继case后的语句。这样,并未实现真正意义上的分支。4.举例根据输入的学生成绩,编程实现输出对应的等级。(见课本第96页例题4.7)可以通过绘制传统流程图或PAD图来表示算法。(略)#include main() int score , mark ; scanf(%d, &score); mark = score / 10 ; switch(mark) case 10 : if(score = 100) printf(%d-An, score) ; else printf(input error!n); case 9 :printf(%d-An, score) ; case 8 :printf(%d-Bn, score) ; case 7 :printf(%d-Cn, score) ; case 6 :printf(%d-Dn, score) ; case 5 : case 4 : case 3 : case 2 : case 1 : case 0 :printf(%d-En, score) ; default :printf(input error!n); 问题:上机测试上面的程序,分析存在的问题。 原因:测试程序时,找到符合要求的case分支就开始执行,同时把其后的所有分支全部执行,包括default在内的分支。这样,并没有实现真正意义上的分支。与题目要求不符。需要进行修改!如何进行修改呢?请往后学习哦!5.break语句为了解决上面的问题,在switch语句中使用break语句即可。break语句也称间断语句,可以在case之后执行的语句最后加上break语句。每当执行到break语句时,立即跳出switch语句体。 switch语句通常总是和break语句联合使用,使得switch语句真正地起到分支的作用。/*添加break语句,修改上面的程序代码,使switch真正起到多分支作用。*/#include main() int score , mark ; scanf(%d, &score); mark = score / 10 ; switch(mark) case 10 : if(score = 100) printf(%d-An, score) ; else printf(input error!n); break; case 9 :printf(%d-An, score) ; break; case 8 :printf(%d-Bn, score) ; break; case 7 :printf(%d-Cn, score) ; break; case 6 :printf(%d-Dn, score) ; break; case 5 : case 4 : case 3 : case 2 : case 1 : case 0 :printf(%d-En, score) ; break; default :printf(input error!n); 6.程序举例编写设计一个简单计算器程序。要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2,计算表达式的值。假设指定的运算符为+,-,*,/。#include main() int data1 , data2 ; char op ; printf(Please input expression:n) ; /*在格式转换说明符%c的前后各加一个空格,可以实现输入的表达式中操作数和运算符之间可以输入任意多个空格。*/ scanf(%d %c %d, &data1, &op ,&data2) ; switch(op) case + : printf(%d+%d=%dn,data1, data2, data1+data2) ; break ; case - : printf(%d-%d=%dn,data1, data2, data1-data2) ; break ; case * : printf(%d*%d=%dn,data1, data2, data1*data2) ; break ; case / : if(0 = data2) /判断0作分母 printf(Division by zero!n); else printf(%d/%d=%dn,data1, data2, data1/data2) ; break ; default : printf(Unknown operator!n) ; 7.switch语句的嵌套如同if语句一样,switch语句也可以构成嵌套结构。读下面程序,理解switch语句嵌套结构,并分析执行过程。#include main() int a = 1 , b = 0 ; switch(a) case 1 : switch(b) cas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论