




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第5章选择程序设计,5.1关系运算5.2逻辑运算5.3if语句5.4switch语句5.5程序实例作业,2,5.1关系运算,5.1.1关系运算符及其优先次序六种关系运算符=a+bab=ca=bc结合方向:自左向右abcxza=bc+d(a=3)(b=5)ab(ab)(bbab=cb+ca值:110d=abA!=65a+c!=b*b值:100,4,5.2逻辑运算,5.2.1逻辑运算符及其优先次序三种逻辑运算符:!(非)floatprice,total;printf(nInputnandprice:);/*输出提示信息*/scanf(%d%f,Inputnandprice:107.0total=70.00,10,问题:已知某商品零售价,100件以上打九折,编程计算购买n件商品的总价。,步骤:1.输入数量n,单价price2.计算总价total3.输出total,C语句:total=n*price;if(n=100)total=total*0.9;if(n=100)rebate=0.9;elserebate=1;total=n*price*rebate,total=n*price若n100,则total=total*0.9或若n100,则rebate=0.9否则rebate=1total=n*price*rebate,11,问题:已知某商品零售价,100件以上打九折,200件以上打八折,300件以上打七折,编程计算购买n件商品的总价。,步骤:1.输入数量n,单价price2.计算折扣rebate3.计算总价totaltotal=n*price*rebate4.输出total,C语句:if(n=300)rebate=0.7;elseif(n=200)rebate=0.8;elseif(n=100)rebate=0.9;elserebate=1;,若n300,则rebate=0.7否则若n200,则rebate=0.8否则若n100,则rebate=0.9否则rebate=1,12,5.3.2if语句的三种形式,第一种if语句格式:if(表达式)语句如if(n=100)total=total*0.9;说明:语句只能是一条语句执行过程1.计算表达式的值2.若非0,则执行语句3.结束,13,例5.1已知某商品零售价,100件以上打九折,编程计算购买n件商品的总价。,步骤:1.输入数量n、单价price2.计算总价total=n*price3.若n100,则total=total*0.94.输出总价total,main()intn;floatprice,total;printf(nInputnandprice:);scanf(%d%f,Inputnandprice:107total=70.00,Inputnandprice:1507total=945.00,14,例5.2输入两个实数,按代数值由小到大次序输出这两个数。,步骤:1.输入a、b2.若ab,则交换a、b的值(t=a;a=b;b=t;)3.输出a、b,main()floata,b,t;printf(nInputaandb:);scanf(%f%f,Inputaandb:239023.000000,90.000000,Inputaandb:902323.000000,90.000000,15,第二种if语句,格式:if(表达式)语句1else语句2如if(n=100)rebate=0.9;elserebate=1;,说明:语句1或语句2都只能是一条语句执行过程1.计算表达式的值2.若非0,则执行语句1;否则执行语句23.结束,16,例5.3已知某商品零售价,100件以上打九折,编程计算购买n件商品的总价。,步骤:1.输入数量n、单价price2.计算折扣若n100,则rebate=0.9否则rebate=13.计算总价total=n*price*rebate4.输出总价total,main()intn;floatprice,total,rebate;printf(nInputnandprice:);scanf(%d%f,Inputnandprice:107total=70.00,Inputnandprice:1507total=945.00,17,例5.4将输入的三个数中较大的数输出。,步骤:1.输入a,b,c2.max=a3.若maxb)max=a;elsemax=b;,18,例5.4将输入的三个数中较大的数输出。,步骤:1.输入a,b,c2.若ab则max=a否则max=b3.若max=300)rebate=0.7;elseif(n=200)rebate=0.8;elseif(n=100)rebate=0.9;elserebate=1;,说明:1.语句1、语句n+1都只能是一条语句2.可以没有else分支执行过程,20,例5.5已知某商品零售价,100件以上打九折,200件以上打八折,300件以上打七折,编程计算购买n件商品的总价。,步骤:1.输入数量n,单价price2.计算折扣rebate若n300,则rebate=0.7否则若n200,则rebate=0.8否则若n100,则rebate=0.9否则rebate=13.计算总价totaltotal=n*price*rebate4.输出total,main()intn;floatprice,rebate,total;printf(nInputnandprice:);scanf(%d%f,运行结果:Inputnandprice:3007.0total=1470.00,Inputnandprice:1007total=630.00,Inputnandprice:2007total=1120.00,Inputnandprice:507total=350.00,21,total=,运行结果:Inputnandprice:3007.0total=1470.00Inputnandprice:2007total=1120.00Inputnandprice:1007total=630.00Inputnandprice:507total=350.00,步骤:1.输入数量n,单价price2.计算折扣rebate若n300,则rebate=0.7否则若n200,则rebate=0.8否则若n100,则rebate=0.9否则rebate=13.计算总价totaltotal=n*price*rebate4.输出total,22,例5.5求函数,步骤:1.输入x2.计算若x0,则输出NO否则若x10,y=sqrt(x),且输出y否则若x30,y=log10(x)+1,且输出y否则输出NO,#includemain()floatx,y;printf(nInputx:);scanf(%f,运行结果:Inputx:9y=3.000000,Inputx:-4NO,Inputx:20y=2.301030,Inputx:50NO,23,运行结果:Inputx:9y=3.000000,Inputx:-4NO,Inputx:20y=1.301030,Inputx:50NO,24,5.3.3if语句的嵌套,在if语句中又包含一个或多个if语句.如if()if()语句1else语句2elseif()语句3else语句4说明:else总是与它上面最近的、未被匹配的、同层次的if匹配,或if()if()语句1elseif()语句2else语句3或if()if()语句1else语句2等,25,例5.6求函数,步骤:1.输入x2.若x0或x30,则输出NO否则若x10,y=sqrt(x)否则y=log10(x)+1输出y,#includemain()floatx,y;printf(nInputx:);scanf(%f,运行结果:Inputx:9y=3.000000,Inputx:-4NO,Inputx:20y=2.301030,Inputx:50NO,if(x0,26,运行结果:Inputx:9y=3.000000,Inputx:-4NO,Inputx:20y=2.301030,Inputx:50NO,if(x0,27,5.3.4条件运算,一般形式表达式1?表达式2:表达式3,表达式的值若表达式1为非0,则值为表达式2的值;否则,则值为表达式3的值;类型为表达式2和表达式3中较高的类型如:9?2:10.5值:2.0结合方向:自右向左ab?a:cd?c:d优先级别:高于赋值运算赋,低于关系、逻辑运算符如:ab?a:b+1,28,典型使用,if(ab)max=a;elsemax=b;可以改写为:max=ab?a:b;if(ab)printf(%d,a);elseprintf(%d,b);可以改写为:printf(“%d”,ab?a:b)判断是否为小写英文字母,若是,将它转换为对应的大写字母ch=ch=a,29,5.4switch语句,一般形式:switch(表达式)case常量表达式1:语句组1break;case常量表达式2:语句组2break;.case常量表达式n:语句组nbreak;default:语句组n+1break;说明:1.表达式:类型必须为整型、char型、枚举类型2.各常量表达式:与表达式的类型一致,值唯一3.各分支位置可以不定,default分支可以缺省,30,执行过程:计算表达式的值与各常量表达式的值匹配与常量表达式i的值匹配,执行语句组i及后续各语句组与所有常量表达式的值都不匹配,执行defult后的语句组后续各语句组遇break语句或switch语句的反大括号就结束switch语句,31,例如:switch(m)case1:x=1;y=0;case2:x=2;y=1;break;case3:x=3;y=0;case4:x=4;y=1;case5:x=5;y=2;break;case6:x=6;y=0;default:x=10;y=10;,若m=1;x=2,y=1若m=2;x=2,y=1若m=3;x=5,y=2若m=6;x=10,y=10若m=9;x=10,y=10实例,32,例5.7输入星期号,输出对应的星期名,运行结果:,main()intm;printf(nInputm(06):);scanf(%d,Inputm(06):0Sunday,Inputm(06):3Wednesday,Inputm(06):9Error,_,Inputm(06):5FridaySaturdayError,更多实例,33,例5.8输入年份、月号,输出对应月的天数.,分析:(1)1,3,5,7,8,10,12月,有31天(2)4,6,9,11月,有30天(3)2月闰年为29天,平年为28天判断year年是否为闰年year%4=0printf(nInputmonth:);scanf(%d,Inputmonth:1days=31,Inputmonth:6days=30,Inputmonth:2Inputyear:1900days=28,Inputmonth:15InputError,Inputmonth:2Inputyear:2000days=29,35,5.5程序实例,例5.9:请编写一个程序计算表达式:(a)(op)(b)的值。例5.10通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。例5.11任意输入一个百分制成绩,输出其等级。90分以上为A等、80分以上为B等、70分以上为C等、60分以上为D等、60分以下为E等;若输入数据大于100或小于0,则输出“dataerror”。例5.12求一元二次方程ax2+bx+c=0的根。,36,例5.9:请编写一个程序计算表达式:(a)(op)(b)的值。,main()charop;floata,b;printf(nInputyourexpression:);scanf(%f%c%f,Inputyourexpression:2*52.00*5.00=10.00,Inputyourexpression:2-52.00-5.00=-3.00,Inputyourexpression:2/52.00/5.00=0.40,Inputyourexpression:2%5Unknownoperater,Inputyourexpression:2/0Divisionbyzero.,37,例5.10通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。,分析:ASCII码表中的前32个字符为控制字符09为数字AZ为大写字母az为小写字母其它,步骤:1.输入c2.若c=0printf(nInteracharacter:);c=getchar();if(c=0,Inputacharacter:Isacontrolcharacter.,Inputacharacter:hIsalowercharacter.,Inputacharacter:FIsacaptalcharacter.,Inputacharacter:Isaothercharacter.,39,Inputacharacter:Isacontrolcharacter.,Inputacharacter:hIsalowercharacter.,Inputacharacter:FIsacaptalcharacter.,Inputacharacter:Isaothercharacter.,40,分析:设想用float型变量score表示百分制成绩采用if-elseif结构来实现程序。程序实现采用if的嵌套结构来实现程序。程序实现采用switch语句结构来实现程序。,引入表达式(int)(score/10)score(int)(score/10)0500,1,2,3,4,5696967079780898901009,10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中doing公开课课件
- 小区园林景观绿化工程施工方案
- 高一河流地貌课件
- 北京市八年级上学期期中考试英语试卷含参考答案 (5份)
- 离婚子女抚养费及全面生活支持协议范本
- 离婚协议书中子女抚养权变更争议诉讼协议范本集锦
- 留学语言学校申请咨询服务协议
- 成人职业素养培训咨询服务合同
- 家电维修管理制度规范
- 如何高效备考考研复试
- 走进焊接 课件 2.1百花齐放推陈出新-焊接方法
- (2025)中国汉字听写大赛全部试题库及答案
- 卵巢癌的课件
- 北京市律师协会律师办理法律尽职调查业务操作指引
- (2025年标准)会员销售协议书
- 2025至2030中国专业图片存档和通信系统(PACS)行业项目调研及市场前景预测评估报告
- 妇产科临床路径培训课件
- 编辑出版校对试题及答案
- 2025一级造价工程师《案例分析(土建、安装)》学霸笔记
- 化工仪表基础知识培训课件
- 2025人教版八年级英语上册课文原文及翻译
评论
0/150
提交评论