第四讲-分支选择结构程序设计2课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四讲-分支选择结构程序设计2课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 分支 选择 结构 程序设计 课件
- 资源描述:
-
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
展开阅读全文