




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选,1,选择结构的作用是:检查人们指定的条件是否满足,然后决定在给定的若干操作中选择其中的一种操作执行。如:判断是否构成三角形?判断最大、最小?判断是否为闰年?实现选择结构,关键是判定所给的条件是否满足,第3章(续)选择结构,精选,2,if语句实现选择结构switch语句实现选择结构程序综合举例,第3章(续)选择结构,精选,3,if语句实现选择结构,if语句实现选择结构的举例if语句的一般形式嵌套的if语句,精选,4,用if语句实现选择结构举例,#includeintmain()inta,b,max;printf(pleaseenteraandb:);scanf(%d,%d,pleaseenteraandb:67,95max=95,if(a=b)max=a;elsemax=b;,【例】输入两个整数a和b,输出其中较大值。,精选,5,简单if语句(不含else)if(表达式)语句段如:if(xy)printf(”xy”);,if语句实现的选择结构,语句段,非0(真),0(假),单分支结构,精选,6,【例】出门带伞问题,如果下雨,带伞后出门,否则直接出门。编程模拟。,#includeintmain()intflag;/标志位,取1或0scanf(“%d”,精选,7,【例】检查一辆车的行驶速度,如果速度超过120km/h或低于40km/h,则发出警告。,#include#defineHIGHLIMIT120#defineLOWLIMIT40intmain()intidnum;doublespeed;printf(“请输入车牌号和速度:”);scanf(“%d%lf”,运行结果:请输入车牌号和速度:100250.7car100istoofast.,运行结果:请输入车牌号和速度:11030car110istooslow.,精选,8,if语句实例,【例】输入a,b,c,求三个数中的最大数。,算法设计:输入a,b,c将a,b,c中任一数作为max,如max=a;max依次与b,c比较,若有比max大的,对max重新赋值,#includeintmain()inta,b,c,max;scanf(“%d%d%d”,精选,9,【例】输入3个整数a,b,c,要求按由小到大的顺序输出。,解题思路:若ab,a和b对换(a是a、b中的小者)若ac,a和c对换(a是三者中最小者)若bc,b和c对换(b是三者中次小者)输出a,b,c的值,精选,10,实例流程图,精选,11,#includeintmain()inta,b,c,t;printf(pleaseentera,b,c:);scanf(%d,%d,%d,pleaseentera,b,c:25,9,169,16,25,不借助中间变量的交换:a=a+b;b=a-b;a=a-b;,精选,12,if-else语句if(表达式)语句段1else语句段2if(xy)printf(”xy”);elseprintf(”x0)printf(”%f”,x);elseprintf(”%f”,-x);,if语句各子句若仅有一条语句,则每个内嵌语句遇分号结束。,若内嵌语句包含多个语句时,必须用花括号“”括起来形成一个复合语句。,if(ab)t=a;a=b;b=t;,建议:内嵌语句无论一条或多条,都用“”括起来。,精选,17,if语句的使用说明,if(x0)printf(”%f”,x);elseprintf(”%f”,-x);,else子句不能单独使用,必须与if配对使用,常见错误:if(x0);printf(“%f”,x);if(x0)printf(“x0”);else(x0)n=n+m;printf(%f,n);elseprintf(%f,-n);,3.if(n0)n=n+m;printf(%f,n);elseprintf(%f,-n);,4.if(n0)n=n+m;printf(%f,n);elseprintf(%f,-n);,正确,精选,23,嵌套的if语句,if语句中可以又包括另一个if语句,称为if语句的嵌套一般形式:,if()if()语句1elseif()语句3,内嵌if,if或else子句中嵌套不具有else的if语句,精选,24,嵌套的if语句,if()if()语句1else语句2elseif()语句3else语句4,内嵌if,if或else子句中嵌套具有else的if语句,精选,25,嵌套的if语句,多层嵌套,if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式4)语句4else语句n,精选,26,嵌套的if语句,精选,27,嵌套的if语句,【例】,y=-1+2*x,x0,精选,28,【例】分段函数(方法一),#includeintmain()intx,y;printf(“inputx:”);scanf(“%d”,第一次运行:inputx:15y=44,第二次运行:inputx:1y=3,第三次运行:inputx:0y=1,精选,29,#includeintmain()intx,y;printf(“inputx:”);scanf(“%d”,方法二,精选,30,if-else的匹配规则:缺省时,else总是和它上面离它最近的未配对的if配对。,if(n6)if(n12)printf(“6n12”);elseprintf(“n6)if(n12)printf(“6n=500)cost=0.15;elseif(number=300)cost=0.10;elseif(number=100)cost=0.075;elseif(number=50)cost=0.05;elsecost=0;total=number*price*(1-cost);printf(“Total=%10.2fn”,total);return0;,enternumberandprice:512,821.5Total=357516.80,if(number=500)cost=0.15;elseif(number=300)cost=0.10;elseif(number=100)cost=0.075;elseif(number=50)cost=0.05;elsecost=0;,精选,37,【例】判定学生成绩,实现从键盘输入一个百分制的成绩,输出相应的等级,优(90,100)、良(80,90)、中等(70,80)、及格(60,70)、差(0,60)。,intmain()intscore;printf(“inputscores:n”);scanf(“%d”,精选,38,switch语句实现的选择结构,多分支可以使用嵌套的if语句处理,但如果分支较多,嵌套的if层数增多,程序冗长,降低了可读性。C语言提供switch语句直接处理多分支问题。,精选,39,switch语句实现的选择结构,switch语句的一般形式:switch(表达式)case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n+1,如:switch(n)case2:f=a+b;break;case4:f=a-b;break;case6:f=a*b;break;case8:f=a/b;break;default:printf(“error);,开关表达式,精选,40,说明:switch后的表达式的值必须是整型、字符型或枚举型。case后的表达式又称为分支标号,它是常量表达式,不允许包含变量和表达式,且每个常量表达式的值不能相同。每个case代表一个分支,可包含多个语句,且不必加多个case可共用一组执行语句switch后的表达式找到相匹配的case后,并以此标号为入口,顺序执行后续的程序,直到遇到break语句为止。default是可选项,代表所有case标号之外的那些标号,可出现在语句体中任何位置上。,如:caseA:caseB:caseC:printf(“score60n”);break;,switch语句实现的选择结构,允许:case3+4:但不允许:x=3;y=4;casex+y:,精选,41,【例】执行下列程序段,当分别输入A、C时,求k的值。,charc;intk=2;c=getchar();/输入单字符switch(c-A)case0:k+;case1:k+=2;break;default:k*=k;case4:k*=3;printf(“k=%d”,k);,运行1:Ak=5,运行2:Ck=12,精选,42,grade,输出A,90-100,80-89,输出B,输出C,输出D,输出E,60-69,60,switch语句实现的选择结构,70-79,精选,43,switch(grade/10)case10:case9:printf(”An”);case8:printf(”Bn”);case7:printf(”Cn”);case6:printf(”Dn”);default:printf(”En”);,break;,break;,break;,break;,switch语句实现的选择结构,精选,44,switch语句实现的选择结构,【例】:输入一个数字,如果该数字是17,则分别输出星期一星期日的英文单词,否则,提示输出错误。,#includeintmain()intday;printf(“Inputintegernumber:);scanf(%d,运行结果:Inputintegernumber:6SaturdaySundayerror,/修改后程序switch(day)case1:printf(Mondayn);break;case2:printf(Tuesdayn);break;case6:printf(Saturdayn);break;case7:printf(Sundayn);break;default:printf(errorn);,精选,45,【例】输入一个字符,如果是Y或y,N或n,则分别输出相应提示,如果是其他字母则输出其它提示。,#includeintmain()charch;printf(“pleaseinputacharacter:”);scanf(“%c”,精选,46,嵌套的switch结构,intmain()inti=1,j=2;switch(i)/嵌套的switch结构case1:printf(case1inoutern);case2:printf(case2inoutern);switch(j)case1:printf(case1ininnern);case2:printf(case2ininnern);case3:printf(case3inoutern);return0;,运行结果:case1inoutercase2inoutercase2ininnercase3inouter,精选,47,if和switch结构的比较,switch语句只能对等值进行测试,若测试值涉及某个较大的范围,if语句适用。switch语句只能对整型数进行测试,如果对浮点数进行测试,需要if语句。若测试一个整型变量取几个不同值的情况,则用switch语句结构比较简明。,精选,48,程序综合举例,【例】编写程序,判断某年是否为闰年。,解题思路:闰年判定:能被4整除但不能被100整除;能被400整除;可以设定标志位leap,若是闰年,则leap=1;否则leap=0;,精选,49,#includeintmain()intyear,leap;/*leap为标志变量*/printf(enteryear:);scanf(%d,精选,50,if(year%4!=0)leap=0;elseif(year%100!=0)leap=1;elseif(year%400!=0)leap=0;elseleap=1;,if(year%4=0,精选,51,程序综合举例,【例】编写程序,实现四则运算的简单计算器功能。如输入10+5,则输出10+5=15,#includeintmain()doublea,b,c;charoper;/定义操作符printf(输入a、运算符和b:n);scanf(%lf%c%lf,运行结果:输入a、运算符和b:2.0+3.02.0+3.0=5.0,精选,52,【例】运输公司对用户计算运费,运输距离越远,单位运费越低。标准如下:s250没有折扣250s5002折扣500s10005折扣1000s20008折扣2000s300010折扣3000s15折扣,程序综合举例,设每吨每千米货物的基本运费为p,货物重为w,距离为s,折扣为d总运费f的计算公式为f=pws(1-d),01234567891011,精选,53,#includeintmain()ints;doublep,w,d,f;printf(请输入单价、重量和距离:);scanf(%lf,%lf,%d,精选,54,switch(s/250)case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版医疗器械公司国际业务拓展人员劳动合同规范
- 2025年版返聘员工离职补偿与安置合同
- 2025年度文化产业发展担保合作协议
- 2025年仓储物流数据共享与分析合同
- 2025年度高新技术园区场地使用权出让合同范本
- 2025年高新技术产业法律顾问服务合同范本
- 2025办公室行政公文仲裁裁决合同范本制作手册
- 2025年高效节能型发电机销售及节能认证合同
- 值得参考!承包套房装修合同(2050字)3篇
- 海员的考试题库及答案
- 艺康servsafe培训课件
- TDT1067-2021不动产登记数据整合建库技术规范
- 加气站投诉处理管理制度
- 2025-2030年再生铝行业市场现状供需分析及投资评估规划分析研究报告
- Unit 3 Same or Different?Section A 课件 人教版英语八年级上册
- 智能仓储物流管理平台的设计与开发
- 2025上海戏剧学院辅导员考试试题及答案
- 中国热射病诊断与治疗指南(2025版)
- 眼科患者的体位管理
- 物流中级考试试题及答案
- 小学一年级100以内加减法练习题3000道
评论
0/150
提交评论