-C语言程序设计课件0905选择结构程序设计

PPT
  • 阅读 62 次
  • 下载 0 次
  • 页数 35 页
  • 大小 78.512 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
-C语言程序设计课件0905选择结构程序设计
可在后台配置第一页与第二页中间广告代码
-C语言程序设计课件0905选择结构程序设计
可在后台配置第二页与第三页中间广告代码
-C语言程序设计课件0905选择结构程序设计
可在后台配置第三页与第四页中间广告代码
-C语言程序设计课件0905选择结构程序设计
-C语言程序设计课件0905选择结构程序设计
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 35
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】-C语言程序设计课件0905选择结构程序设计.ppt,共(35)页,78.512 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2243.html

以下为本文档部分文字说明:

选择结构程序设计课程:程序设计语言教材:谭浩强《C程序设计》第三版教师:陈小荷本章重点◼掌握关系运算符、逻辑运算符的优先次序,理解条件表达式的意义。◼掌握if语句的四种形式,能针对具体问题正确运用。◼理解switch语句的控制结构,能正确运用

。关系运算符<小于<=小于或等于>大于优先级高(6)>=大于或等于==等于优先级低(7)!=不等于关系表达式◼比较两个运算数,表达式成立则值为1(true),否则值为0(false):x>y//未知x+5>x//1(true)x+5<x//0(false)x+5==x//0(false)x+5

>=x//1(true)关系运算符与算术运算符◼算术运算符的优先级是3(乘除余)和4(加减)◼以下两个表达式的值是多少?10+(20<25),(7>10)*100◼以下四个表达式,如果要加括号,并且不能改

变原来的优先次序,应该怎么加?10+20<25,x*y>zz==x>y,z!=x<y关系运算符的结合方向◼关系运算符的结合方向是自左至右◼设x、y、z的值分别是5、3、1,那么关系表达式x>y>z的值是多少?如果它们的

值分别是1、3、5呢?◼数学书上x>y>z的意思是x大于y,y大于z,这个意思用C语言来表达,应该是:x>y&&y>z关系运算符和赋值运算符◼重温:赋值运算符的优先级低(14)◼x=y>z等价于下面哪个表达式?(x=y)>zx=(y>z)◼若x,y,

z的初值分别是5,3,1,下面表达式的值是多少?x=y>z逻辑值表第一行是标题。以第二行为例,读法是:若a真b真,则非a和非b均假,a&&b为真,a||b亦为真。逻辑表达式求值是自左至右的,一旦发现已经可以根据一个运算数求值,就不会再对第

二个运算数求值。例如,在a&&b中,如果已知a假,则整个逻辑表达式为假,不必再考虑b的值逻辑运算符的优先级和结合方向◼逻辑反的结合方向是自右至左,其他逻辑运算符的结合方向均为自左至右◼逻辑非!,优先级2◼算术运算符

,优先级3和4◼关系运算符,优先级6和7◼逻辑与&&,优先级11◼逻辑或||,优先级12◼赋值运算符,优先级14表达式求值假定以下变量a,b,c,d的值分别是0,1,2,3,变量x和y的值未知,请对下列表达式求值:◼

x<=y&&10<12◼x>=y&&x!=x◼a>b||3>1◼a<b||x>x-1◼a&&b||c&&d◼a&&(b||c)&&d表达式求值假定a,b,c的值分别是3,4,5◼a+b>c&&b==c◼((a+b)>c)&

&(b==c)◼a||b+c&&b–c◼!(a>b)&&!c||1◼!(x=a)&&(y=b)&&0◼!(a+b)+c–1&&b+c/2练习写一些表达式◼判断是否“及格”(60分及格)◼判断是否“英文字母”◼判断是否“小写

英文字母或阿拉伯数字”◼判断是否“能被4整除”◼判断是否“能被4整除但不能被100整除”◼判断是否“闰年”形式1:if(e)s;◼是否执行s,取决于e的值◼sample:输入’g’,‘0’,两个printf语句的执行情况如何?#include<ctype.h>if(islette

r(ch))/*判断ch是否字母*/printf(“%cisaletter\n”,ch);printf(“thankyou.\n”);形式2:if(e)s1;elses2;◼e的值非0,执行s1,否则执行s2◼sample:输入’g’,‘0’,两个printf语句的执行情况如何?if

(isletter(ch))printf(“%cisaletter\n”,ch);elseprintf(“%cisnotaletter\n”,ch);s可以是一个复合语句◼sample:三个变量的排序(升序)if(a>b){tmp=a;a=b;

b=tmp;}if(a>c){tmp=a;a=c;c=tmp;}if(b>c){tmp=b;b=c;c=tmp;}形式3:多分枝的if语句◼注意下面语句的逻辑关系:if(n>500)cost=0.15;else

if(n>300)cost=0.10;elseif(n>100)cost=0.075;elseif(n>50)cost=0.05;elseconst=0.0;◼例如,第二行相当于说:if(n<=500&&n>300)cost=0.1

0;◼如果按n值从小到大的顺序来写多分枝的if语句,应该怎么写?形式4:嵌套的if语句◼if(e)s1;elses2中,s1或s2本身又是一个if语句◼形式3也是嵌套的if语句,但它总是在s2中嵌套if(e)if(e1)s1;elses2;elseif(e2)s3;elses4;写法1if(x<

0)y=-1;if(x==0)y=0;if(x>0)y=1;语法、逻辑都没有错,运行也正确,但效率低=−=0)(x10)(x00)(x1y写法2和写法3if(x<0)y=-1;elseif(x==0)y=0;elsey=1;if(x>=0)if(x>0)y=1;elsey

=0;elsey=-1;=−=0)(x10)(x00)(x1yif与else的匹配原则◼就近匹配:嵌套的if语句中,else总是跟离它最近的上一个尚无匹配的if匹配,不管缩进形式是怎样的:①if(e)②if(e1)s1;③elses2;/*跟

②匹配*/④else/*跟①匹配*/⑤if(e2)s3;⑥elses4;/*跟⑤匹配*/写法4和写法5y=-1;if(x!=0)if(x>0)y=1;elsey=0;y=0;if(x>=0)if(x>0)y=1;elsey=-1;=−=0)(x10)(x00)(x1y条件表达

式◼e1?e2:e3◼其中,?:是一个条件运算符,三目的,优先级为13(高于赋值运算符),结合方向是自右至左◼条件表达式的值是这样计算的:◼先对e1求值◼如果e1的值非0,则条件表达式的值为e2◼否则,条件表达式的值为e3条件表达式的应用◼

用于二分枝的选择结构,例如:if(ch<128)return0;elsereturn1;可写成以条件表达式为宾语的返回语句:returnch<128?0:1;◼下面这个if语句如何改写为以条件表达式为右值的赋值语句?if(score>=60)grade=‘Y’;

elsegrade=‘N’;条件表达式的应用◼条件运算符是自右至左结合的,例如:y=x==0?0:x>0?1:-1相当于y=x==0?0:(x>0?1:-1)因此,条件表达式也可以用于多分枝选择◼不过,为了容易理解,一般应该用if语句来表达switch语句◼多分枝选择:sw

itch(grade){case‘A’:printf(“85~100”\n”);break;case‘B’:printf(“70~84\n”);break;case‘C’:printf(“60~69”\n”);break;case‘D’:printf(“<60\n”);break

;default:printf(“error\n”);}switch语句与多分枝if语句的关系◼一般来说,能用switch语句的也能用多分枝if语句来表达,例如:if(grade==‘A’)printf(“85~100

”\n”);elseif(grade==‘B’)printf(“70~84\n”);elseif(grade==‘C’)printf(“60~69”\n”);elseif(grade==‘D’)pri

ntf(“<60\n”);elseprintf(“error\n”);switch语句的语法◼每个标号语句都是一个入口◼依次检查每个case语句,看是否有合适的入口;若每个case语句都不合适,则从default语句进入;若无default语句,则无法进入◼一旦找到了合适的入口,便执

行此后的所有语句,除非遇到return语句或break语句◼因此,break语句很重要,应在每个case后都加break,除非有理由不加几个case共享一个动作◼如果几个case的动作相同,可以只写一次,例如:switch(month){//求一个月有几天c

ase2:if(is_leap_year(year))days=29;elsedays=28;break;case4:case6:case9:case11:days=30;break;default:days=31;}例5.

5判断某一年是否闰年◼输入:年份数字(大于0)◼输出:打印“是闰年”或“不是闰年”教材提供了三种写法,请比较优劣:1.嵌套的if语句2.多分枝的if语句3.二分枝的if语句求三个数中的最大者if(a>b)if(a>c)returna;elseret

urnc;elseif(b>c)returnb;elsereturnc;intm=a;if(b>m)m=b;if(c>m)m=c;returnm;你喜欢哪种写法?例5.6求一元二次方程的根◼输入:系数a,b,c◼过程和输出:◼a==0:不

是一元二次方程◼disc=b*b–4*a*c;◼if(disc绝对值近乎0)打印两个相等实根◼if(disc绝对值大于0)打印两个不等实根◼else打印两个共轭复根例5.6教材分析◼程序的主体是一个嵌套的if语句,共有3层,层数多了,理解起来比较

困难◼第一层的if只带一个语句,而else却带了多层多个语句,不太般配◼第二层的if也只带一个语句,而else却带了多层多个语句,不太般配◼第三层的if和else,在层次和语句数量上比较均衡例5.6程序修改基本思路:◼减少层次,尽量不用嵌套的

if语句◼void函数中可以有多个return语句,因此,如果已经处理了某种情况,就可以及时返回,程序其余部分再处理其他情况◼例如,第一种情况,打印了“不是一元二次方程”之后,即可return,这样就省掉了一个层次◼请自行修改这个程序例5.

7运费计算可以有多种写法:◼如教材所示,用switch语句来写◼用多分枝if语句来写请比较两种写法,哪一种更好?(用简洁性、可读性等标准来衡量)本章小结◼关系运算和逻辑运算是理解选择结构和循环结构的基础◼四种if语句由简到繁:单分枝、二分枝、多分枝、嵌套,应尽量使用简单的形式◼switch语句

用于多分枝选择,case和default都是入口标号,一旦进入则顺流而下,除非遇到return语句和break语句◼条件表达式在许多情况下可替代if语句

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?