已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/6/8,1,分支(选择)结构程序设计,2019/6/8,2,复习,关系运算符 if 语句 分支结构程序设计思想,2019/6/8,3,逻辑判断,关系运算符和关系表达式 大于 = 大于等于 = 小于等于 = 等于 != 不等于,2019/6/8,4,关系判断,#include main( ) int b,c; / 整型变量 b=3;c=2; / 对变量赋值 printf(“3 2 是 %dn”,(bc); / 输出逻辑值 printf(“3=2 是 %dn”,(b=c); printf(“3=2 是 %dn”,(b=c); printf(“3 2 是 %dn”,(bc); printf(“3!=2 是 %dn”,(b!=c); ,2019/6/8,5,if (表达式) 语句; 其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。如: if (c min) min = c ;,单分支选择结构的一种常用形式,2019/6/8,6,格式:if (条件) 语句; else 语句 2;,双分支选择结构的一种最常用形式,工作过程图 :,条件,2019/6/8,7,本节内容,逻辑运算符 if 语句应用举例 switch 语句及应用,2019/6/8,8,鸡兔同笼 已知鸡和兔的总数为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目,若无解,则输出No answer!,逻辑运算符,2019/6/8,9,#include main() int chick , rabbit , n , m ; scanf(“%d%d”,if ( m%2=1 | a0 | b0 ) printf(“No answer!n”); else printf(“chicks:%d;rabbits:%dn”,chick, rabbit); ,必须保证chick和rabbit 都是非负整数!,2019/6/8,10,分析: 1、先根据输入的三边长,判断能否构成三角形,若能,则转步骤 2;若不能,则转步骤3; 2、使用海伦公式求三角形面积 3、输出提示:该三角形不存在。,输入三角形的三边长,求三角形面积。,2019/6/8,11,#include #include main( ) float a, b, c, s, area; scanf (“%f%f%f”, ,if ( (a+bc) & (b+ca) & (a+cb) ),else printf(“不能构成三角形!n”);,2019/6/8,12,逻辑运算符与表达式,关系表达式只能描述单一条件,例如“x=0”。 如果需要描述“x=0”、同时“x10”,就要借助于逻辑表达式了。,2019/6/8,13,1、逻辑运算符极其优先次序 语言中提供了三种逻辑运算符: & 与运算 | 或运算 ! 非运算,逻辑运算符与表达式,2019/6/8,14,逻辑与,运算符为& 如图电路 A表示开关A合上; B表示开关B合上; A&B表示灯亮;,A B A&B 1 1 1 1 0 0 0 1 0 0 0 0,1表示真,0表示假,这是逻辑变量的取值,非真即假,2019/6/8,15,逻辑或,运算符为| 如图电路 A表示开关A合上; B表示开关B合上; A|B表示灯亮;,A B A|B 1 1 1 1 0 1 0 1 1 0 0 0,1表示真,0表示假,逻辑非,运算符为! 两队比赛篮球,变量A表示A队到场,!A表示A队不到场,变量B表示B队到场,!B表示B队不到场。 这场球赛能够赛成,必须两队都到场。 假定“能赛成”用逻辑变量C表示,则 C = A&B 赛不成当然用!C表示,让D = !C,D表示赛不成则 D=!A|!B 理解为A不到场或B不到场,球赛均无法进行。,2019/6/8,17,!(非) (高) 算术运算符 关系运算符 & | 赋值运算符 (低),不使用逻辑运算符可否判断三边长构成三角形?,if (a+bc) if (a+cb) if (b+ca) s = (a+b+c)/2; area = sqrt (s*(s-a)*(s-b)*(s-c); ,if的嵌套,【例4-1】写一程序,从键盘上输入某年份year(4位十进制数),判断其是否闰年。闰年的条件是:年份能被4整除、但不能被100整除;或者能被400整除。,分析: 1、从键盘输入任意一年份,类型为十进制整数 2、判断是否是闰年 3、给出结论:“是”或“否”,继续对第2步进行任务细化 2.1、判断该年份数字能否被4整除,并且不能被100整除若能,则是闰年,程序结束,否则进入2.2 2.2、判断该年份数字能否被400整除,若能,是闰年,程序结束,否则不是闰年,程序结束。,程序优化,首先将是否闰年的标志leap预置为0(非闰年),这样仅当year为闰年时将leap置为1即可。 这种处理两种状态值的方法,对优化算法和提高程序可读性非常有效。 利用逻辑运算能描述复杂条件的特点,使用逻辑运算降低if语句的复杂性,使程序更简洁 if (year%4=0 & year%100!=0)|(year%400=0) else ,逻辑表达式的短路计算,对于逻辑与运算,例如“a & b”,若a的逻辑值为“假”,则无须计算b的逻辑值,就可得知表达式“a & b”的逻辑值为“假”。 能被4整除,但是不能被100整除的年份是闰年 (k % 4 = 0 ) & (k % 100 != 0),对于逻辑或运算,例如“a | b”,若a的逻辑值为“真”,则无须计算b的逻辑值,就可得知表达式 “a | b”的逻辑值为“真”。 因此,对于逻辑表达式,可以进行短路计算,既只计算表达式的部分项。,练习,设a = 3, b = 4, c = 5,试计算以下表达式的值 a+bc & b = c a|b+c & b c (!(a+b)+c1) & (b +c/2),提出问题: 从键盘上输入一个百分制成绩score,按下列原则输出其等级: score90,等级为A; 80score90,等级为B; 70score80,等级为C; 60score70,等级为D; score60,等级为E。,若使用if语句如何编程解决?,二、switch语句,语言还提供了另一种用于多分支选择的switch语句, 其一般形式为: switch(表达式) case 常量表达式1: 语句1; case 常量表达式2: 语句2; case 常量表达式n: 语句n; default : 语句n+1; ,例4.2,main( ) int a; printf(“input integer number: “); scanf(“%d“, ,swich语句的语义是: 计算switch后的括号内的表达式的值;逐个与case后的常量表达式值相比较, 当表达式的值与某个case后的常量表达式的值相等时,即执行其后的语句,然后不再进行与case后常量表达式的比较,继续执行后面所有case 常量表达式:后的语句。 若表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。,main( ) int a; printf(“input integer number: “); scanf(“%d“, ,例4.3 从键盘上输入一个百分制成绩score,按下列原则输出其等级: score90,等级为A; 80score90,等级为B; 70score80,等级为C; 60score70,等级为D; score60,等级为E。,main( ) int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, ,例4-4 已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元): profit 1000 没有提成; 1000 profit 2000 提成10%; 2000 profit 5000 提成15%; 5000 profit 10000 提成20%; 10000 profit 提成25%。,为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。 分析本题可知, 提成的变化点都是1000的整数倍(1000、2000、5000、100000),如果将利润profit整除1000,则当: profit1000 对应0、1 1000profit2000 对应1、2 2000profit5000 对应2、3、4、5 5000profit10000 对应5、6、7、8、9、10 10000profit 对应10、11、12、,为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可: profit1000 对应0 1000profit2000 对应1 2000profit5000 对应2、3、4 5000profit10000 对应5、6、7、8、9 10000profit 对应10、11、12、,main() long profit; int grade; float commission ,salary=500; printf(“Input profit: “); scanf(“%ld“, ,2019/6/8,33,三整数排序 输入3个整数,从小到大排序后输出。 样例 : 输入 20 7 33 输出 7 20 33,if语句应用实例,2019/6/8,34,三整数排序,分析 a, b, c 三个数共有6种由大到小排序可能 我们用6条if 语句实现排序如何?,2019/6/8,35,三整数排序,if(ab,存在问题吗?,2019/6/8,36,三整数排序,if(a=b,存在问题吗?,2019/6/8,37,三整数排序,if(a=b,2019/6/8,38,三整数排序,if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; printf(“%d , %d , %dn“,a,b,c);,复合 语句,2019/6/8,39,三整数排序,min=a; if(bmax) max=b; if(cmax) max=c; mid=a+b+c-min-max; printf(“%d , %d , %dn“,min,mid,max);,很有用的技巧哦: 求最大值或最小值,在使用if语句中应注意的问题: 在各种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式, 但也可以是其它任意合法表达式,如赋值表达式等,甚至也可以是一个变量。例如: if (a = 5) 语句; if (b) 语句; 在C中,将非零数认定为“真”,零认定为“假”。,在if语句中,if后的表达式必须用括号括起来,在语句之后必须加分号。 在if语句的各种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用 括起来组成一个复合语句;但要注意的是在之后不能再加分号。 例如:if (ab) a+; b+; else a=0; b=10; ,下次上机题目,编程,在输入某人的身高(厘米)和体重(公斤)后,按下面方法确定此人的体重是否标准、过胖或过瘦: 1、标准体重=(身高-110)公斤 2、过胖:超过标准体重5公斤 3、过瘦:低于标准体重5公斤,下次上机题目,某邮局对邮寄包裹有如下规定:若包裹的重量超过30千克,不予邮寄;对可邮寄的包裹每件收取手续费0.5元,再加上根据下表按重量weight(单位:千克)计算的邮资,请编程计算任意包裹的邮寄资费。 weight=1 5.00元 1weight=5 超过1千克的部分每500克2元 5weight=30 超过1千克的部分每500克1元,2019/6/8,44,上机练习,1、已知三边长,求三角形面积? 2、身高预测 据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。 设faHeight为其父身高,moHeight为其母身高,身高预测公式为: 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm) 此外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业签订劳动合同范本
- 物业股份收购合同范本
- 物业过户物业合同范本
- 冀人版 (2017)六年级下册第一单元 昼夜和四季第1课 昼夜的形成教案
- 灯笼采购安装合同范本
- 物业公司分红合同范本
- 潜江废油收购合同范本
- 运输车队采购合同范本
- 灯具买卖合同协议模板
- 网架生产出售合同范本
- 2025年6月高校英语应用能力A级真题及答案解析
- 重疾险医学知识培训课件
- 广西贵百河联考2025-2026学年高一上学期10月月考语文试卷
- 兄弟套结机KE-430F中文使用说明书
- 江苏入团考试试题及答案2025年
- 医院消防演练方案及流程
- (2025)全国企业员工全面质量管理知识竞赛测试题及参考答案
- 2025年中小学生读书知识竞赛题库及答案
- 食盐质量安全考试题库及答案解析
- 水文课件资料
- 数据安全介绍培训课件
评论
0/150
提交评论