C程序设计 教学课件 ppt 作者 赵山林 6

上传人:E**** 文档编号:89343315 上传时间:2019-05-23 格式:PPT 页数:33 大小:328.50KB
返回 下载 相关 举报
C程序设计 教学课件 ppt 作者  赵山林 6_第1页
第1页 / 共33页
C程序设计 教学课件 ppt 作者  赵山林 6_第2页
第2页 / 共33页
C程序设计 教学课件 ppt 作者  赵山林 6_第3页
第3页 / 共33页
C程序设计 教学课件 ppt 作者  赵山林 6_第4页
第4页 / 共33页
C程序设计 教学课件 ppt 作者  赵山林 6_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《C程序设计 教学课件 ppt 作者 赵山林 6》由会员分享,可在线阅读,更多相关《C程序设计 教学课件 ppt 作者 赵山林 6(33页珍藏版)》请在金锄头文库上搜索。

1、第6章 选择结构程序设计,选择结构的N-S流程图如图6.1所示。,图6.1 选择结构的N-S流程图,P为选择的条件,对于执行A还是B要根据条件P的判断结果来决定,如果条件P的结果为真则执行A,如果条件P的结果为假则执行B。这里条件P的结果就成为执行A还是B的关键所在。P是一个判断的条件,其结果为真或者假,将其称为“逻辑量”。C语言中没有提供逻辑型变量,可以使用整型数据去描述1表示真,0表示假。在C语言中任意确定的值都可作为逻辑量处理,当作为逻辑量处理时,如果该值为非0,则表示真(1),如果该值为0,则表示假(0)。下面讲述条件P的逻辑量表示方法。,6.1 逻辑量的表示方法 6.2 if语句 6

2、.3 switch语句 6.4 选择结构程序设计举例,6.1 逻辑量的表示方法 C语言中逻辑量是用整型数据来表示的,用来表示真或成立,用来表示假或不成立。逻辑量的表示是非常灵活的,具体表示方法有以下几种方式。,6.1.1 关系表达式,1关系运算符 关系运算是一种比较运算符两侧运算对象大小的运算,完成两个运算对象比较,运算结果为成立与不成立,用1和0表示。 关系运算符有以下6种: ,=,=,=,!= 关系运算符是双目运算符。其中前4种的优先级相同但要高于后2种,后2种优先级相同。所有6种运算符的优先级都高于赋值运算符,但都低于算术运算符。此6种关系型运算符均为左结合性。,2关系表达式 用关系运算

3、符将运算对象连接起来的合乎C语言规则的表达式称为关系表达式。 例如: ab,3+7!=10,aa a+(b=a+) 都是合法的C语言关系表达式。 关系表达式的求解遵循表达式求解规则,关系运算的结果只有两种可能,要么关系成立为真(1),要么关系不成立为假(0)。,例如有整型变量a,b,且a3,b5, 求解表达式:aba 算术运算符“”的优先级高于关系运算符“”,因此先计算ab的值为8,之后运算8a,而a参加运算时需转换为整型数97运算,实际运算的是897,判断后其结果为不成立,表达式的运算结果为0。 若有关系表达式0x10,则其运算结果为逻辑量1。表达式中两个运算的优先级相同,于是首先运算0x,

4、x的值无论是多少,运算结果只能是1或者0;然后要么运算110,要么运算010,其运算结果必然为1。,6.1.2 逻辑运算和逻辑表达式 1逻辑运算符 C语言中逻辑运算符一共有3个:&,|和!,其中“!”运算的优先级最高,仅次于小括号,为左结合性。“&”的优先级高于“|”,它们的优先级都低于关系运算符,高于赋值运算符。,2逻辑表达式 用逻辑运算符将逻辑量连接而形成的合乎C语言规则的表达式称为逻辑表达式。 参与逻辑运算的运算对象是逻辑量,在C语言中任意表达式都可以作为逻辑量来处理,具体处理规则是表达式值非0则为1,否则为0。逻辑运算的结果和关系运算一样,也是逻辑量。,例如有整型变量a3,b4,c5,

5、求解表达式!(xa)&(yb)|0。 xa为赋值表达式,其值为变量的值。 原式!3&4|0 !3为逻辑运算要把3转化为逻辑量 0&4|0 04中要把4转化为逻辑量1 0&1|0 0|0 0,6.1.3 实际问题中逻辑量的描述 (1)图6.4所示x轴上阴影区间的数据描述,图6.4 逻辑量的表示示意图,从该图可知,x的值应该在1到2之间,其值既要满足x=1又要满足x=2,即x=1和x=2同时成立,两个过程同时成立其结果才成立,此运算为逻辑与,可得表达式x=1&x=2。注意,1=x=2是一个关系表达式,不能表示该区间。,(3)闰年问题 假定闰年为year,判定是否闰年的标准为:如果该年能被4整除且不

6、能被100整除,或者该年能被400整除,则都为闰年。能被4整除且不能被100整除,可表示为 year%40&year%100!0; 能被400整除可表示为year%4000。两者只要有一者成立即为闰年,是逻辑或关系,闰年问题的表达式为 year%40&year%100!0|year%4000, 也可表示为!(year%4)&year%100|!(year%400),6.2.1 if语句的格式 if语句的格式为: if(逻辑量) 语句1 else 语句2 if和else是构成if语句的关键字,语句中的逻辑量是选择结构的条件, 表示else分支可有可无。 if语句的N-S流程图如图6.5所示。 语

7、句1和语句2都只能是单条语句,如果在为真或为假的分支中需执行多个操作,应该使用复合语句将多个操作构成一条语句。语句1是选择结构必需的语句,else分支可有可无。,6.2 if语句,if语句是实现选择结构算法的具体语句。,图6.5 if语句的N-S流程图,使用if语句实现选择结构时,语句中的逻辑量对应于选择条件P,语句1对应于A操作,语句2对应于B操作。if语句执行时,首先判断逻辑量的值,如果逻辑量为1,执行语句1;如果逻辑量为0,执行else分支对应的语句2。,例6.2 求出两整数中的最大值。 根据流程图得到程序: main() int m,n; scanf(“%d%d“, ,图6.7 例6.

8、2的流程图,使用if语句要注意以下几点。 (1)if语句是一条语句。 (2)逻辑量是if语句选择判断的条件,C语言中任意确定的值都可以作为逻辑量处理。 (3)逻辑量为1和为0的分支都只能是单条语句,如果要执行多个操作的话,应该将多个操作复合为单条语句才能出现在if的分支结构中。 (4)分支中出现的语句1是复合语句的时候,后不应该有“;”。 (5)语句中语句1是条件语句中必不可少的部分。 (6)正确理解if语句和N-S选择结构流程图的对应关系。,嵌套主要用于处理多条件的题目。设计嵌套选择结构时,应清晰描述各条件之间的约束关系。嵌套的if语句可以简单描述如下: 嵌入的if语句是在当外围的if语句的

9、条件p1的逻辑量值为1时才可以执行,即其作为外围if语句的条件成立时的执行语句,嵌入在外围if内。当然语句1、语句2、语句3也可以是if语句,具体的嵌套形式和具体题目中的多条件是密切相关的, if语句的嵌套形式应建立在对具体问题的分析上。,6.2.2 if语句的嵌套及多条件结构的实现,例6.4 求函数中x为任意值时 y 的值。 由于if选择结构仅有两个分支,而此分段函数x的定义域为三分支,因此当确定x的关系表达式时,其中必然有一个分支包含另外两部分定义域,需在此基础上作进一步的条件判断。,根据流程图得到如下程序: main() main() float x,y; float x,y; scan

10、f(%f, ,图6.9 例6.4的流程图 图6.10 例6.4的流程图2,6.2.3 条件表达式 条件运算符由两个符号“?”和“:”复合而成,此运算符为C语言中惟一的一个三目运算符,其优先级只比赋值运算符和逗号运算符高,结合性为从右到左。 条件表达式的一般格式为: 表达式1?表达式2:表达式3 其中表达式1是作为逻辑量处理的。 条件表达式中由于有条件限制,所以应先进行条件表达式的运算,根据条件表达式1表示的逻辑量值选取表达式2或表达式3的结果作为整个表达式的值。,其执行过程如下。 当表达式1的逻辑量值为1时,选取表达式2的结果作为整个表达式的值。 当表达式1的逻辑量值为0时,选取表达式3的结果

11、作为整个表达式的值。 假定a5,b3,则表达式max (ab)?a:b 的求解过程如下:此表达式右边为一条件表达式,由于条件运算符的优先级高于赋值运算符,应先计算条件表达式的值,再通过赋值运算符把得到的值赋给max。在条件表达式中,首先计算表达式ab的逻辑量值,根据题意,ab表达式的逻辑量值为1,则a为条件表达式的结果,为5,那么条件表达式的值为5,可得max的值为5。,6.3 switch语句,如果题目中的多条件是有规律的,则可以采用switch语句来实现。switch语句称为分支语句,又称为开关语句。 switch的具体形式如下: switch(表达式) case 整型常量表达式1:语句组

12、1 break case 整型常量表达式2:语句组2 break case 整型常量表达式n:语句组n break default :语句组n+1 switch,case,default和break都是构成多分支语句的关键字。 表示break可有可无。,其中表达式是任意类型的表达式,但运算结果会自动转换为整型。整型常量表达式只能由整型常量构成。break语句的作用是结束switch语句,执行switch的后续语句。语句组可以是单条语句,也可以是多条语句,多条语句无需用复合语句去表示。而在ifelse结构中的语句1和语句2只能是单条语句。 switch语句中的一对花括号是必须书写的,是switc

13、h语句构成的必要部分。,switch语句的具体执行过程为:根据switch表达式的值,寻找switch语句的执行入口。自上而下和case后的整型常量表达式的值进行比较,如果相等则执行其后的语句组,假定入口是整型常量表达式2,那么该语句执行语句组2,当语句组2执行完毕后,若有break语句,则中断switch语句的执行,否则继续执行语句组3;如果没有和表达式的值相匹配的整型常量表达式,则执行default后的语句组。 case后的整型常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值。如果能穷尽表达式各种可能的取值,则语句中可省去default分支;否则最好不要省略defaul

14、t,因为default表示的是switch语句在没有找到匹配入口时的语句执行入口。,例6.6 输入一同学的成绩,判断其成绩等级。 等级范围为: 90 以上 等级为A 8980 等级为B 7970 等级为C 6960 等级为D 60 以下 等级为E,假定成绩为score,可以得到表达式(int)(score/10)。当表达式的值为10和9时,对应于90分以上的条件分支,为8时对应于8980分段的条件分支,以下的取值和对应的分支可以依次类推。60分以下可用switch中default分支来描述。程序如下: main() float score; scanf(%f, ,score/10中score得

15、到的结果为浮点型,系统会自动转换为整型。常量表达式为10的分支,由于与9的分支均为A级,利用switch的特点可以不写值为10的分支对应的语句。,使用switch语句应注意以下几点。 (1)switch 语句中表达式可为任意类型,但运算结果为整型。case后的表达式必须是整型常量表达式。 (2)每个case后的常量表达式的值不能相同,否则会自相矛盾,无法判断。 (3)case及default的顺序对运行结果不产生影响。 (4)若无break语句进行switch语句的强制跳出,则从该处顺序执行其余语句,直至跳出或执行结束。 (5)case和其后的整型常量表达式中间应有空格,6.4 选择结构程序设计举例,例6.10 批发钢材,每吨批发金额为1000元,计算批发金额,批发折扣如表6-3所示。 表6-3 例6.10折扣表 表6-4 例6.10折扣规律表1,main() float t,d,m; scanf(“%f“, /*x9d是字符¥的ASCII码*/ ,main() float t,d,m; scanf(%f, ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号