




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
07:39:42,switch语句,7.1switch语句:switch语句是一条多分支选择语句.在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。当然可以使用嵌套的if,ifelseif语句来处理,但其分支过多,程序冗长,难读,不够灵巧。,07:39:42,switch语句是C语言中处理多路选择问题的一种更直观和有效的手段.在测试某个表达式是否与一组常量表达式中的某一值相配时,switch语句显得更为方便.,一般形式如下:,07:39:42,switch(表达式)case常量表达式1:语句1break;case常量表达式2:语句2break;case常量表达式n:语句nbreak;default:语句n+1,说明:(1).关于表达式:表达式可以是整型、字符型等表达式。有一个确定的值(不是逻辑值).,(2).关于常量表达式1n:只起到一个标号的作用,根据表达式的值来判断,找到一个相匹配的入口处,程序往下执行。各个case后的常量表达式的值必须互不相同.,(3).每个case分支可有多条语句,可不用花括号。,07:39:42,switch(表达式)case常量表达式1:语句1break;case常量表达式2:语句2break;case常量表达式n:语句nbreak;default:语句n+1,(4).各个case语句只是一个入口标号,并不确定执行的终止点.,(5).一般在各个case语句最后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.,(6).各个case和default出现的先后次序,并不影响执行结果.default可以没有.,07:39:42,(7).多个case可共用一组执行语句.例如为了统计一段文字中的数字,字母及分隔符的个数,可用下列程序段实现:,switch(ch)case0:case1:.case8:case9:digit+;break;case:casen:caset:white+;break;default:character+;break;,这里有一个空格.,表达式后都有一冒号”:”.,07:39:42,无break语句,switch(表达式),07:39:42,说明:,switch语句不等同于if语句:1.switch只能进行值的相等性的检查.2.if语句不但可以进行相等性的检查,还可以计算关系表达式或逻辑表达式,进行逻辑判断的真假.,只进行值的相等性的检查,不是逻辑判断!,07:39:42,07:39:42,例7.1键盘输入0-6之间的整数,分别代表每周的星期日、星期一、星期六,#includeintmain()intday;printf(请输入星期的数字编号(0-6):);scanf(%d,.,Ch7_7_1.c,.switch(day)case0:printf(星期日n);break;case1:printf(星期一n);break;case2:printf(星期二n);break;case3:printf(星期三n);break;case4:printf(星期四n);break;case5:printf(星期五n);break;case6:printf(星期六n);break;default:printf(输入有误,请输入0-6之间的数字!n);return0;,每个case分支可有多条语句,可不用花括号,也可以用。,表达式有一个确定的值(不是逻辑值).,07:39:42,07:39:42,例7.2求执行下列程序段后k的值#includeintmain()charc=2;intk=1;switch(c+1-0)case2:k+=1;case2+1:k+=2;case4:k+=3;printf(k=%dn,k);return0;,一般在各个case语句最后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.,0的ASCII值为48.,Ch7_7_2.c,07:39:42,例7.3执行下列程序,当分别输入A、B、C、E时,求K的值.charc;intk=2;scanf(“%c”,Ch7_7_3.c,07:39:42,例7.4输入一字符,如果是Y,N或y,n,则分别执行一输出语句,如果是其他字母则执行另一输出语句。,#includevoidmain()charch;printf(PleaseinputY/N(y/n):);scanf(%c,.,Ch7_7_4.c,.switch(ch)casey:caseY:printf(thisisYory.n);break;casen:caseN:printf(thisisNorn.n);break;default:printf(thisisotherchar.n);,多个case可共用一组执行语句.,表达式有一个确定的值(不是逻辑值).,07:39:42,07:39:42,例7.5编写程序,实现如下功能。输入一个实数后,屏幕显示如下菜单:1.输出相反数2.输出平方数3.输出平方根4.退出,#includevoidmain()inti,c=5;floatm;printf(输入任意一个整型数:n);scanf(%f,Ch7_7_5.c,07:39:42,.while(1)scanf(%d,Ch7_7_5.c,07:39:42,07:39:42,例7.6根据输入字符(0-9及A-F(af)显示与该字符所表示的十六进制数相对应的十进制数。(例如,输入A,输出10,输入0,输出0),#include#includeintmain()charch;for(;)printf(“n请输入十六进制数0F(输入Q或q退出):);scanf(%c,.,当输入一个字符,打一个回车后,输入结束.但在输入缓冲区中存在二个字符:输入的字符,还有一个是n.,当打了一个回车后(其实是二个动作:回车,换行.c语言会把回车,换行自动转换为n.反之亦然.,07:39:42,switch(ch)case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:printf(十进制数:%dn,ch-0);break;caseA:caseB:caseC:caseD:caseE:caseF:printf(十进制数:%dn,ch-55);break;,Ch7_7_6.c,ASCII值:048A65a”97,07:39:42,casea:caseb:casec:cased:casee:casef:printf(十进制数:%dn,ch-87);break;caseQ:caseq:printf(退出程序n);exit(0);default:printf(输入有误!);return0;,ASCII值:048A65a”97,07:39:42,示例:输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。,07:39:42,voidmain()intblank,digit,i,other;charch;blank=digit=other=0;printf(input10characters:);.,for(i=1;i=10;i+)ch=getchar();switch(ch)case:casen:blank+;break;case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:digit+;break;default:other+;break;printf(“blank=%d,digit=%d,other=%dn”,blank,digit,other);,07:39:42,input10characters:Reold123?blank=1,digit=3,other=6,例:#includevoidmain()inti;for(i=0;i3;i+)switch(i)case1:printf(%d,i);case2:printf(%d,i);default:printf(%d,i);,以下程序的输出结果是:A.011122B.012C.012020D.120,注意所属关系,07:39:42,例7.7编写一个简易计算器.,Ch7_7_7.c,07:39:42,#include#includeintmain()floatnumb1=0,numb2=0;intmenu=1,flag;floattotal=0;charcalType;.,07:39:42,for(;)flag=1;printf(nt希望进行哪种运算?nn);printf(t1:加法n);printf(t2:减法n);printf(t3:乘法n);printf(t4:除法n);printf(t0:退出计算器n);printf(nt输入你的选择:);.,07:39:42,.scanf(%d,.,退出程序.,07:39:42,switch(menu)case1:total=numb1+numb2;calType=+;break;case2:total=numb1-numb2;calType=-;break;case3:total=numb1*numb2;calType=*;break;case4:if(numb2=0)printf(nt不能被0除n);flag=0;break;total=numb1/numb2;calType=/;break;default:printf(无效的选择!n);,07:39:42,if(flag=1)printf(nn*);printf(nnt%.3f%c%.3f=%.3f,numb1,calType,numb2,total);printf(nn*nn);return0;,Ch7_7_7.c,07:39:42,问输出为?:A)K=3B)K=4C)K=2D)K=0main()intk=0;charc=A;doswich(c+)caseA:K+;break;caseB:K-;caseC:k+=2;break;caseD:K=K%2;continue;caseE:K=K*10;break;default:K=K/3;K+;while(c0)switch(x/10)case10:case9:printf(五分制为:n5nn);break;case8:printf(五分制为:n4nn);break;case7:printf(五分制为:n3nn);break;case6:printf(五分制为:n2nn);break;default:printf(五分制为:n1nn);break;,课本P101:1题,07:39:42,printf(请输入学生百分制成绩:n输入负数结束程序:n);scanf(%d,07:39:42,#include#includeintmain()do
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入院宣教流程课件
- 健康知识培训心得幼儿园课件
- 偏瘫感觉障碍康复课件
- 伤口造口进修汇报护理课件
- 邮箱平台流程管理办法
- 郑州动态流动管理办法
- 银联卡服务管理办法
- 企业用电安全知识培训
- 海事行政督查管理办法
- 职业能力倾向测验事业单位考试试题与参考答案(2025年)
- 浪浪山小妖怪-2025~2026学年美术开学第一课《浪浪山小妖怪》
- (2025年标准)盆景购销协议书
- 2025广东湛江市廉江市政协办公室等7个单位招聘政府雇员9人笔试参考题库附答案解析
- 2025年度制造业员工劳动合同范本
- (2025年标准)婚后债务分离协议书
- 2025四川南充营山县医疗卫生辅助岗招募39人考试参考题库附答案解析
- 中国象棋教学课件
- 小学数学拔尖人才培养方案
- 福建省泉州市晋江市2024-2025学年七年级(下)期末语文试卷(含解析)
- 2025年浙江省慈溪市辅警招聘考试试题题库带答案详解
- 2025成人高考政治试题及答案专升本
评论
0/150
提交评论