第四讲-分支选择结构程序设计2课件.ppt

上传人(卖家):晟晟文业 文档编号:4519190 上传时间:2022-12-16 格式:PPT 页数:44 大小:650.50KB
下载 相关 举报
第四讲-分支选择结构程序设计2课件.ppt_第1页
第1页 / 共44页
第四讲-分支选择结构程序设计2课件.ppt_第2页
第2页 / 共44页
第四讲-分支选择结构程序设计2课件.ppt_第3页
第3页 / 共44页
第四讲-分支选择结构程序设计2课件.ppt_第4页
第4页 / 共44页
第四讲-分支选择结构程序设计2课件.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、2022-12-161复习复习l关系运算符关系运算符lif 语句语句l分支结构程序设计思想分支结构程序设计思想2022-12-162逻辑判断逻辑判断关系运算符和关系表达式关系运算符和关系表达式 大于大于 =大于等于大于等于 =小于等于小于等于=等于等于 !=不等于不等于2022-12-163关系判断关系判断#include#include main()main()int b,c;int b,c;/整型变量整型变量b=3;c=2;b=3;c=2;/对变量赋值对变量赋值printf(printf(“3 2 3 2 是是%d%dnn”,(bc)(bc););/输出逻辑输出逻辑值值printf(pri

2、ntf(“3=2 3=2 是是%d%dnn”,(b=c)(b=c););printf(printf(“3=2 3=2 是是%d%dnn”,(b=c)(b=c););printf(printf(“3 2 3 2 是是%d%dnn”,(bc)(bc););printf(printf(“3!=2 3!=2 是是%d%dnn”,(b!=c)(b!=c););2022-12-164 if (表达式表达式)语句语句;其语义是:如果表达式的值为真,则执行其其语义是:如果表达式的值为真,则执行其后的语句,后的语句,否则不执行该语句。如:否则不执行该语句。如:if(c min)min=c;单分支单分支选择结构的

3、一种常用形式选择结构的一种常用形式2022-12-165if(条件条件)语句语句;else 语句语句 2;双分支双分支选择结构的一种最常用形式选择结构的一种最常用形式条条件件2022-12-166本节内容本节内容l逻辑运算符逻辑运算符lif 语句应用举例语句应用举例lswitch 语句及应用语句及应用2022-12-167l鸡兔同笼鸡兔同笼 已知鸡和兔的总数为已知鸡和兔的总数为n,总腿数为,总腿数为m。输入输入n和和m,依次输出鸡的数目和兔的数,依次输出鸡的数目和兔的数目,若无解,则输出目,若无解,则输出No answer!逻辑运算符逻辑运算符2022-12-168#include main(

4、)int chick,rabbit,n,m;scanf(“%d%d”,&n,&m);chick=(4*n-m)/2;rabbit=n-chick;if(m%2=1|a0|b0)printf(“No answer!n”);else printf(“chicks:%d;rabbits:%dn”,chick,rabbit);必须保证必须保证chick和和rabbit都是非负整数都是非负整数!2022-12-169分析:分析:1、先根据输入的三边长,判断能否构成三角、先根据输入的三边长,判断能否构成三角形,若能,则转步骤形,若能,则转步骤 2;若不能,则转步骤;若不能,则转步骤3;2、使用海伦公式求三

5、角形面积、使用海伦公式求三角形面积3、输出提示:该三角形不存在。、输出提示:该三角形不存在。输入三角形的三边长,求三角形面积。输入三角形的三边长,求三角形面积。2022-12-1610#include#include main()float a,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);printf(“a=%7.2f,b=%7.2f,c=%7.2fn”,a,b,c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%7.2fn”,area);if(a+bc)&(b+ca)&(a+cb)else prin

6、tf(“不能构成三角形不能构成三角形!n”);2022-12-1611逻辑运算符与表达式逻辑运算符与表达式l 关系表达式只能描述单一条件,例如关系表达式只能描述单一条件,例如“x=0”。l 如果需要描述如果需要描述“x=0”、同时、同时“xc)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、从键盘输入任意一年份,类型为十进制整数、从键盘输入任意一

7、年份,类型为十进制整数2、判断是否是闰年、判断是否是闰年3、给出结论:、给出结论:“是是”或或“否否”继续对第继续对第2步进行任务细化步进行任务细化2.1、判断该年份数字能否被、判断该年份数字能否被4整除,并且不能被整除,并且不能被100整除若能,则是闰年,程序结束,否则进入整除若能,则是闰年,程序结束,否则进入2.22.2、判断该年份数字能否被、判断该年份数字能否被400整除,若能,是闰整除,若能,是闰年,程序结束,否则不是闰年,程序结束。年,程序结束,否则不是闰年,程序结束。程序优化l 首先将首先将是否闰年的标志是否闰年的标志leapleap预置为预置为0 0(非闰年(非闰年),这样仅当,

8、这样仅当yearyear为闰年时将为闰年时将leapleap置为置为1 1即可。即可。这种处理两种状态值的方法,对优化算法和提这种处理两种状态值的方法,对优化算法和提高程序可读性非常有效。高程序可读性非常有效。l利用逻辑运算能描述复杂条件的特点,使用逻辑运利用逻辑运算能描述复杂条件的特点,使用逻辑运算降低算降低ifif语句的复杂性,使程序更简洁语句的复杂性,使程序更简洁 if(year%4=0&year%100!=0)|(year%400=0)else 逻辑表达式的短路计算逻辑表达式的短路计算“”,若,若a a的逻辑值的逻辑值为为“假假”,则无须计算,则无须计算b b的逻辑值的逻辑值,就可得知

9、表达,就可得知表达式式“”“假假”。(k%4=0)&(k%100!=0)“”,若,若a a的逻的逻辑值为辑值为“真真”,则无须计算,则无须计算b b的逻辑值,的逻辑值,就就可得知表达式可得知表达式“”“真真”。l因此,对于逻辑表达式,可以进行短路计算,既因此,对于逻辑表达式,可以进行短路计算,既只计算表达式的部分项。只计算表达式的部分项。练习练习l设设a=3,b=4,c=5a=3,b=4,c=5,试计算以,试计算以下表达式的值下表达式的值1)1)a+bc&b=ca+bc&b=c2)2)a|b+c&b a|b+c&b c c3)3)(!(a+b)+c(!(a+b)+c1)&(b+c/2)1)&(

10、b+c/2)提出问题:提出问题:从键盘上输入一个百分制成绩从键盘上输入一个百分制成绩score,按下列原则输出其等级:按下列原则输出其等级:score90,等级为,等级为A;80score90,等级为,等级为B;70score80,等级为,等级为C;60score70,等级为,等级为D;score60,等级为,等级为E。若使用若使用if语句如何编程解决?语句如何编程解决?二、switch语句 语言还提供了另一种用于语言还提供了另一种用于多分支多分支选择的选择的switch语句,语句,其一般形式为:其一般形式为:switch(表达式表达式)case 常量表达式常量表达式1:语句语句1;case

11、常量表达式常量表达式2:语句语句2;case 常量表达式常量表达式n:语句语句n;default:语句语句n+1;例例4.24.2main()int a;printf(input integer number:);scanf(%d,&a);switch(a)case 1:printf(“Mondayn”);case 2:printf(Tuesdayn);case 3:printf(Wednesdayn);case 4:printf(Thursdayn);case 5:printf(Fridayn);case 6:printf(Saturdayn);case 7:printf(Sundayn);

12、default:printf(errorn);lswichswich语句的语义是:语句的语义是:计算计算switchswitch后的括号内的表达式的值;逐后的括号内的表达式的值;逐个与个与casecase后的常量表达式值相比较,后的常量表达式值相比较,当表达式的值与某个当表达式的值与某个casecase后的常量表达式后的常量表达式的值相等时,即执行其后的语句,的值相等时,即执行其后的语句,然后不再然后不再进行与进行与casecase后常量表达式的比较后常量表达式的比较,继续继续执行后面所有执行后面所有case case 常量表达式:后的语常量表达式:后的语句。句。若表达式的值与所有若表达式的值

13、与所有casecase后的常量表达后的常量表达式均不相同时,则执行式均不相同时,则执行defaultdefault后的语句。后的语句。main()int a;printf(input integer number:);scanf(%d,&a);switch(a)case 1:printf(“Mondayn”);break;case 2:printf(Tuesdayn);break;case 3:printf(Wednesdayn);break;case 4:printf(Thursdayn);break;case 5:printf(Fridayn);break;case 6:printf(Sa

14、turdayn);break;case 7:printf(Sundayn);break;default:printf(errorn);例例4.3 从键盘上输入一个百分制成绩从键盘上输入一个百分制成绩score,按下,按下列原则输出其等级:列原则输出其等级:score90,等级为,等级为A;80score90,等级为,等级为B;70score80,等级为,等级为C;60score70,等级为,等级为D;score60,等级为,等级为E。main()int score,grade;printf(“Input a score(0100):”);scanf(“%d”,&score);grade=sco

15、re/10;/将成绩整除将成绩整除10,转化成,转化成switch语句中的语句中的case标号标号 switch(grade)case 10:case 9:printf(“grade=An”);break case 8:printf(grade=Bn);break;case 7:printf(grade=Cn);break;case 6:printf(grade=Dn);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(“grade=En”);break;default:printf(“The score is out of rang

16、e!n”);例例4-4 4-4 已知某公司员工的保底薪水为已知某公司员工的保底薪水为500500,某月所接,某月所接工程的利润工程的利润profitprofit(整数)与利润提成的关系如下(整数)与利润提成的关系如下(计量单位:元):(计量单位:元):profit 1000没有提成;没有提成;1000 profit 2000提成提成10%;2000 profit 5000提成提成15%;5000 profit 10000提成提成20%;10000 profit提成提成25%。为使用为使用switch语句,必须将利润语句,必须将利润profit与提成的关系,转与提成的关系,转换成某些整数与提成的

17、关系。换成某些整数与提成的关系。分析本题可知,分析本题可知,提成的变化点都是提成的变化点都是1000的整数倍的整数倍(1000、2000、5000、100000)如果将利润如果将利润profit整除整除1000,则当:,则当:profit1000 对应对应0、11000profit2000对应对应1、22000profit5000对应对应2、3、4、55000profit10000对应对应5、6、7、8、9、1010000profit对应对应10、11、12、为解决相邻两个区间的重叠问题,最简单的方法就是:为解决相邻两个区间的重叠问题,最简单的方法就是:利润利润profitprofit先减先减

18、1 1(最小增量),然后再整除(最小增量),然后再整除10001000即可:即可:profit1000profit1000对应对应0 0 1000 1000profit2000profit2000对应对应1 1 2000 2000profit5000profit5000对应对应2 2、3 3、4 4 5000 5000profit10000profit10000对应对应5 5、6 6、7 7、8 8、9 9 10000 10000profitprofit对应对应1010、1111、1212、main()long profit;int grade;float commission,salary=

19、500;printf(Input profit:);scanf(%ld,&profit);grade=(profit 1)/1000;switch(grade)case 0:commission=0;break;/*profit1000*/case 1:commission=profit*0.1;break;/*1000profit2000*/case 2:case 3:case 4:commission=profit*0.15;break;/*2000profit5000*/case 5:case 6:case 7:case 8:case 9:commission=profit*0.2;br

20、eak;/*5000profit10000*/default:commission=profit*0.25;/*10000profit*/salary+=commission;printf(salary=%.2fn,salary);2022-12-1632l三整数排序三整数排序 输入输入3个整数,从小到大排序后输出。个整数,从小到大排序后输出。样例样例:输入输入 20 7 33 输出输出 7 20 33if语句应用实例语句应用实例2022-12-1633三整数排序三整数排序l分析分析 a,b,c 三个数共有三个数共有6种由大到小排序可能种由大到小排序可能 我们用我们用6条条if 语句实现排序如

21、何语句实现排序如何?2022-12-1634三整数排序三整数排序if(ab&bc)printf(%d,%d,%dn,a,b,c);if(ac&cb)printf(%d,%d,%dn,a,c,b);if(ba&ac)printf(%d,%d,%dn,b,a,c);if(bc&ca)printf(%d,%d,%dn,b,c,a);if(ca&ab)printf(%d,%d,%dn,c,a,b);if(cb&ba)printf(%d,%d,%dn,c,b,a);存在问存在问题吗?题吗?2022-12-1635三整数排序三整数排序 if(a=b&b=c)printf(%d,%d,%dn,a,b,c);

22、if(a=c&c=b)printf(%d,%d,%dn,a,c,b);if(b=a&a=c)printf(%d,%d,%dn,b,a,c);if(b=c&c=a)printf(%d,%d,%dn,b,c,a);if(c=a&a=b)printf(%d,%d,%dn,c,a,b);if(c=b&b=a)printf(%d,%d,%dn,c,b,a);存在问存在问题吗?题吗?2022-12-1636三整数排序三整数排序 if(a=b&b=c)printf(%d,%d,%dn,a,b,c);else if(a=c&c=b)printf(%d,%d,%dn,a,c,b);elseif(b=a&a=c)

23、printf(%d,%d,%dn,b,a,c);else if(b=c&c=a)printf(%d,%d,%dn,b,c,a);elseif(c=a&a=b)printf(%d,%d,%dn,c,a,b);else if(c=b&bb)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);复复合合语语句句2022-12-1638三整数排序三整数排序 min=a;if(bmin)min=b;if(cmax)max=b;if(cmax)max=c;mid=a+b+c-min-max;printf(%d,%d,

24、%dn,min,mid,max);很有用的技巧哦:很有用的技巧哦:求最大值或最小值求最大值或最小值在使用在使用if语句中应注意的问题语句中应注意的问题:l在各种形式的在各种形式的if语句中,在语句中,在if关键字之后均为表关键字之后均为表达式。达式。该表达式该表达式通常通常是逻辑表达式或关系表达是逻辑表达式或关系表达式,式,但也可以是其它任意合法表达式但也可以是其它任意合法表达式,如赋值,如赋值表达式等,甚至也可以是一个变量。例如:表达式等,甚至也可以是一个变量。例如:if(a=5)语句;语句;if(b)语句;语句;在在C中,将非零数认定为中,将非零数认定为“真真”,零认定为,零认定为“假假”

25、。l在在if语句中,语句中,if后的表达式必须用括号括起来,后的表达式必须用括号括起来,在语句之后必须加分号在语句之后必须加分号。l在在if语句的各种形式中,语句的各种形式中,所有的语句应为单个语所有的语句应为单个语句句,如果要想在满足条件时执行一组,如果要想在满足条件时执行一组(多个多个)语句语句,则必须把这一组语句用,则必须把这一组语句用 括起来组成一个括起来组成一个复合复合语句语句;但要注意的是但要注意的是在在之后不能再加分号之后不能再加分号。例如:例如:if(ab)a+;b+;else a=0;b=10;下次上机题目下次上机题目l编程,在输入某人的身高(厘米)和体重(公编程,在输入某人

26、的身高(厘米)和体重(公斤)后,按下面方法确定此人的体重是否标准斤)后,按下面方法确定此人的体重是否标准、过胖或过瘦:、过胖或过瘦:1、标准体重、标准体重=(身高(身高-110)公斤)公斤2、过胖:超过标准体重、过胖:超过标准体重5公斤公斤3、过瘦:低于标准体重、过瘦:低于标准体重5公斤公斤下次上机题目下次上机题目l某邮局对邮寄包裹有如下规定:若包裹的重量超某邮局对邮寄包裹有如下规定:若包裹的重量超过过30千克,不予邮寄;对可邮寄的包裹每件收取千克,不予邮寄;对可邮寄的包裹每件收取手续费手续费0.5元,再加上根据下表按重量元,再加上根据下表按重量weight(单位:千克)计算的邮资,请编程计算

27、任意包裹单位:千克)计算的邮资,请编程计算任意包裹的邮寄资费。的邮寄资费。lweight=1 5.00元元l1weight=5 超过超过1千克的部分每千克的部分每500克克2元元l5weight=30 超过超过1千克的部分每千克的部分每500克克1元元2022-12-1643上机练习上机练习1、已知三边长,求三角形面积?、已知三边长,求三角形面积?2、身高预测、身高预测 据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后的身高与其父母的身高和遗传、饮食习惯与坚持体育锻炼等。小

28、孩成人后的身高与其父母的身高和自身的性别密切相关。自身的性别密切相关。设设faHeight为其父身高,为其父身高,moHeight为其母身高,身高预测公式为:为其母身高,身高预测公式为:男性成人时身高男性成人时身高=(faHeight+moHeight)*0.54(cm)女性成人时身高女性成人时身高=(faHeight*0.923+moHeight)/2(cm)此外,如果喜爱体育锻炼,那么可增加身高此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习,如果有良好的卫生饮食习惯,那么可增加身高惯,那么可增加身高1.5%。实验内容及提示:编程从键盘输入你的性别(用整型变量实验内容及提

29、示:编程从键盘输入你的性别(用整型变量sex存储,输入数存储,输入数字字0表示女性,输入数字表示女性,输入数字1表示男性)、父母身高(用实型变量存储,表示男性)、父母身高(用实型变量存储,faHeight为其父身高,为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用为其母身高)、是否喜爱体育锻炼(用字符型变量字符型变量sports存储,输入字符存储,输入字符Y表示喜爱,输入字符表示喜爱,输入字符N表示不喜爱)、表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符存储,输入字符Y表示表示喜爱,输入字符喜爱,输入字符N表示不喜爱),利用给定公式和身高预测方法对你的身表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。高进行预测。2022-12-16443、有一函数:、有一函数:用用scanf函数输入函数输入x的值,求的值,求y值。值。4、给出一个不多于、给出一个不多于5位的正整数,要求位的正整数,要求求出它是求出它是几位数;分别打印出每一位数字;按逆序打印几位数;分别打印出每一位数字;按逆序打印出各位数字,例如原数为出各位数字,例如原数为321321,应输出,应输出123123。x (x1)2x-1 (1 x10)3x-11 (x10)y=

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第四讲-分支选择结构程序设计2课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|