选择结构程序设计方案:开关语句_第1页
选择结构程序设计方案:开关语句_第2页
选择结构程序设计方案:开关语句_第3页
选择结构程序设计方案:开关语句_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、导入如果分支太多,会导致嵌套的if 语句层次数过多,则程序冗长且可读性较低。以用开关语句(switch 语句)代替条件语句来简化程序的设计。C 语言中, 可一、开关语句: switch语句1.形式switch( 表达式 )case 常量 1 : 语句 1case 常量 2 : 语句 2case 常量 3 : 语句 3case 常量 n : 语句 ndefault: 语句 n+12.执行过程当执行 switch 语句时,首先计算紧跟其后的一对括号中表达式的值,然后在switch 语句体内寻找与该值吻合的case 常量值。如果有与该值相等的常量,则执行其后的语句,接着就不再进行比较, 依次顺序执行

2、后面的所有case语句和 default 语句,直到 switch 语句体结束。如果圆括号内的表达式的值与所有case后面的常量均不相等时,如果存在default 语句,则执行其后的语句,否则跳过switch 语句体,什么也不做。3.说明switch 后面圆括号内表达式的值一般为整型、字符型或枚举型,表达式两边的一对圆括号不能省略。每个 case后的 “常量表达式 ”的类型应该与switch 后面圆括号内表达式的类型一致。各 case后的常量值应该互不相同,起到语句标号的作用。每个case 后面的常量出现次序发生改变时,不影响程序运行结果。从程序执行效率角度考虑,把发生频率高的情况放在前面。c

3、ase 后的语句省略,则执行与后继case相同的语句。也就是说,找到匹配的顺序执行case后的语句和后继case后的语句。这样,并未实现真正意义上的分支。case常量,4.举例根据输入的学生成绩,编程实现输出对应的等级。 (见课本第可以通过绘制传统流程图或 PAD 图来表示算法。 (略)96页例题 4.7)#include <stdio.h>main()int score , mark ;scanf("%d", &score);mark = score / 10 ;switch(mark)case 10 : if(score = 100)printf (

4、"%d-An", score) ;elseprintf ("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"

5、;, score) ;default : printf ("input error!n");问题:上机测试上面的程序,分析存在的问题。原因:测试程序时,找到符合要求的case 分支就开始执行,同时把其后的所有分支全部执行,包括default 在内的分支。这样,并没有实现真正意义上的分支。与题目要求不符。 需要进行修改! 如何进行修改呢?请往后学习哦!5.break语句为了解决上面的问题,在switch 语句中使用break 语句即可。break 语句也称间断语句, 可以在 case之后执行的语句最后加上语句时,立即跳出switch 语句体。break 语句。每当执行到bre

6、akswitch/* 添加语句通常总是和break 语句联合使用,使得switch 语句真正地起到分支的作用。break 语句,修改上面的程序代码,使switch 真正起到多分支作用。*/#include <stdio.h>int score , mark ;scanf("%d", &score);mark = score / 10 ;switch(mark)case 10 : if(score = 100)printf ("%d-An", score) ;elseprintf ("input error!n");

7、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 (&

8、quot;input error!n");6.程序举例编写设计一个简单计算器程序。要求根据用户从键盘输入的表达式:操作数1运算符op操作数 2,计算表达式的值。假设指定的运算符为+, -, * ,/。#include <stdio.h>main()int data1 , data2 ;char op ;printf ("Please input expression:n") ;/* 在格式转换说明符%c 的前后各加一个空格,可以实现输入的表达式中操作数和运算符之间可以输入任意多个空格。*/scanf("%d %c %d", &

9、;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

10、'/' : if(0 = data2)/ 判断 0作分母printf ("Division by zero!n");elseprintf ("%d/%d=%dn",data1, data2, data1/data2) ; break ;default: printf ("Unknown operator!n") ;7.switch 语句的嵌套如同 if 语句一样, switch 语句也可以构成嵌套结构。读下面程序,理解switch 语句嵌套结构,并分析执行过程。#include <stdio.h>main()int a = 1 , b = 0 ;switch(a)case 1 : switch(b)case 0 : printf ("*") ;

温馨提示

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

评论

0/150

提交评论