C语言switch语句.ppt

上传人:小飞机 文档编号:5426213 上传时间:2023-07-05 格式:PPT 页数:38 大小:1.27MB
返回 下载 相关 举报
C语言switch语句.ppt_第1页
第1页 / 共38页
C语言switch语句.ppt_第2页
第2页 / 共38页
C语言switch语句.ppt_第3页
第3页 / 共38页
C语言switch语句.ppt_第4页
第4页 / 共38页
C语言switch语句.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《C语言switch语句.ppt》由会员分享,可在线阅读,更多相关《C语言switch语句.ppt(38页珍藏版)》请在三一办公上搜索。

1、*,switch 语句,7.1 switch 语句:switch 语句是一条多分支选择语句.在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。当然可以使用嵌套的if,if else if语句来处理,但其分支过多,程序冗长,难读,不够灵巧。,*,switch语句是C语言中处理多路选择问题的一种更直观和有效的手段.在测试某个表达式是否与一组常量表达式中的某一值相配时,switch语句显得更为方便.,一般形式如下:,*,switch(表达式)case 常量表达式1:语句1 break;case 常量表达式2:语句2 break;case 常量表达式n:语句n break;default:语

2、句n+1,说明:(1).关于表达式:表达式可以是整型、字符型等表达式。有一个确定的值(不是逻辑值).,(2).关于常量表达式1n:只起到一个标号的作用,根据表达式的值来判断,找到一个相匹配的入口处,程序往下执行。各个case后的常量表达式的值必须互不相同.,(3).每个case分支可有多条语句,可不用花括号。,*,switch(表达式)case 常量表达式1:语句1 break;case 常量表达式2:语句2 break;case 常量表达式n:语句n break;default:语句n+1,(4).各个case 语句只是一个入口标号,并不确定执行的终止点.,(5).一般在各个case 语句最

3、后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.,(6).各个case和default出现的先后次序,并不影响执行结果.default可以没有.,*,(7).多个case可共用一组执行语句.例如为了统计一段文字中的数字,字母及分隔符的个数,可用下列程序段实现:,switch(ch)case 0:case 1:.case 8:case 9:digit+;break;case:case n:case t:white+;break;default:character+;break;,这里有一个空格.,表达式后都有一冒号”:”.,*,无break语句,switc

4、h(表达式),*,说明:,switch语句不等同于if语句:1.switch只能进行值的相等性的检查.2.if语句不但可以进行相等性的检查,还可以计算关系表达式或逻辑表达式,进行逻辑判断的真假.,只进行值的相等性的检查,不是逻辑判断!,*,*,例7.1 键盘输入0-6之间的整数,分别代表每周的星期日、星期一、星期六,#include int main()int day;printf(请输入星期的数字编号(0-6):);scanf(%d,.,Ch7_7_1.c,.switch(day)case 0:printf(星期日 n);break;case 1:printf(星期一 n);break;ca

5、se 2:printf(星期二 n);break;case 3:printf(星期三 n);break;case 4:printf(星期四 n);break;case 5:printf(星期五 n);break;case 6:printf(星期六 n);break;default:printf(输入有误,请输入0-6之间的数字!n);return 0;,每个case分支可有多条语句,可不用花括号,也可以用。,表达式有一个确定的值(不是逻辑值).,*,*,例7.2 求执行下列程序段后k的值#include int main()char c=2;int k=1;switch(c+1-0)case

6、2:k+=1;case 2+1:k+=2;case 4:k+=3;printf(k=%dn,k);return 0;,一般在各个case 语句最后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.,0的ASCII值为48.,Ch7_7_2.c,*,例7.3 执行下列程序,当分别输入A、B、C、E时,求K的值.char c;int k=2;scanf(“%c”,Ch7_7_3.c,*,例7.4 输入一字符,如果是Y,N或y,n,则分别执行一输出语句,如果是其他字母则执行另一输出语句。,#include void main()char ch;printf(Ple

7、ase input Y/N(y/n):);scanf(%c,.,Ch7_7_4.c,.switch(ch)case y:case Y:printf(this is Y or y.n);break;case n:case N:printf(this is N or n.n);break;default:printf(this is other char.n);,多个case可共用一组执行语句.,表达式有一个确定的值(不是逻辑值).,*,*,例7.5 编写程序,实现如下功能。输入一个实数后,屏幕显示如下菜单:1.输出相反数 2.输出平方数 3.输出平方根 4.退出,#include void ma

8、in()int i,c=5;float m;printf(输入任意一个整型数:n);scanf(%f,Ch7_7_5.c,*,.while(1)scanf(%d,Ch7_7_5.c,*,*,例7.6 根据输入字符(0-9及A-F(AF)显示与该字符所表示的十六进制数相对应的十进制数。(例如,输入A,输出10,输入0,输出0),#include#includeint main()char ch;for(;)printf(“n请输入十六进制数 0 F(输入Q 或 q 退出):);scanf(%c,.,当输入一个字符,打一个回车后,输入结束.但在输入缓冲区中存在二个字符:输入的字符,还有一个是n.,

9、当打了一个回车后(其实是二个动作:回车,换行.c语言会把回车,换行自动转换为n.反之亦然.,*,switch(ch)case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf(十进制数:%dn,ch-0);break;case A:case B:case C:case D:case E:case F:printf(十进制数:%dn,ch-55);break;,Ch7_7_6.c,ASCII值:0 48A 65a”97,*,case a:case b:case c:case d:case e:case

10、f:printf(十进制数:%dn,ch-87);break;case Q:case q:printf(退出程序n);exit(0);default:printf(输入有误!);return 0;,ASCII值:0 48A 65a”97,*,示例:输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。,*,void main()int blank,digit,i,other;char ch;blank=digit=other=0;printf(input 10 characters:);.,for(i=1;i=10;i+)ch=getchar();switch(ch)case:cas

11、e n:blank+;break;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:digit+;break;default:other+;break;printf(“blank=%d,digit=%d,other=%dn”,blank,digit,other);,*,input 10 characters:Reold 123?blank=1,digit=3,other=6,例:#include void main()int i;for(i=0;i 3;i+)switch(i)case 1:printf(

12、%d,i);case 2:printf(%d,i);default:printf(%d,i);,以下程序的输出结果是:A.011122 B.012 C.012020 D.120,注意所属关系,*,例7.7 编写一个简易计算器.,Ch7_7_7.c,*,#include#include int main()float numb1=0,numb2=0;int menu=1,flag;float total=0;char calType;.,*,for(;)flag=1;printf(nt希望进行哪种运算?nn);printf(t 1:加法n);printf(t 2:减法n);printf(t 3:

13、乘法n);printf(t 4:除法n);printf(t 0:退出计算器n);printf(nt输入你的选择:);.,*,.scanf(%d,.,退出程序.,*,switch(menu)case 1:total=numb1+numb2;calType=+;break;case 2:total=numb1-numb2;calType=-;break;case 3:total=numb1*numb2;calType=*;break;case 4:if(numb2=0)printf(nt不能被0除n);flag=0;break;total=numb1/numb2;calType=/;break;d

14、efault:printf(无效的选择!n);,*,if(flag=1)printf(nn*);printf(nnt%.3f%c%.3f=%.3f,numb1,calType,numb2,total);printf(nn*nn);return 0;,Ch7_7_7.c,*,问输出为?:A)K=3 B)K=4 C)K=2 D)K=0 main()int k=0;char c=A;do swich(c+)case A:K+;break;case B:K-;case C:k+=2;break;case D:K=K%2;continue;case E:K=K*10;break;default:K=K/

15、3;K+;while(cG);printf(“K=%dn”,K);,第1次.第2次.3.4.5.6.K=2 k=4 k=7 k=1 k=11 k=4c=B c=C c=D c=E c=F c=G,*,注:每次执行switch(C+)时,先取C的值,找到入 口,然后C增1.当执行到continue时,流程跳过do-while语句 中当未执行的语句,而直接转向while的条件表 达式,判循环是否进行.,*,练习与实践:1百分制转换成五分制.#include int main()int x;printf(请输入学生百分制成绩:n输入负数结束程序:n);scanf(%d,课本 P101:1题,*,wh

16、ile(x0)switch(x/10)case 10:case 9:printf(五分制为:n5nn);break;case 8:printf(五分制为:n4nn);break;case 7:printf(五分制为:n3nn);break;case 6:printf(五分制为:n2nn);break;default:printf(五分制为:n1nn);break;,课本 P101:1题,*,printf(请输入学生百分制成绩:n输入负数结束程序:n);scanf(%d,*,#include#includeint main()double x,s;int y;printf(Input a number:n);scanf(%lf,2计算sin(),cos(),tan().,*,while(1)printf(您希望进行哪种运算?n);printf(1.计算sin(x)n);printf(2.计算cos(x)n);printf(3.计算tan(x)n);scanf(%d,*,if(y=1|y=2|y=3)break;printf(谢谢使用:n);return 0;,*,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号