程序设计基础(C语言):Ch4_选择结构程序设计

上传人:s9****2 文档编号:587378632 上传时间:2024-09-05 格式:PPT 页数:66 大小:310KB
返回 下载 相关 举报
程序设计基础(C语言):Ch4_选择结构程序设计_第1页
第1页 / 共66页
程序设计基础(C语言):Ch4_选择结构程序设计_第2页
第2页 / 共66页
程序设计基础(C语言):Ch4_选择结构程序设计_第3页
第3页 / 共66页
程序设计基础(C语言):Ch4_选择结构程序设计_第4页
第4页 / 共66页
程序设计基础(C语言):Ch4_选择结构程序设计_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《程序设计基础(C语言):Ch4_选择结构程序设计》由会员分享,可在线阅读,更多相关《程序设计基础(C语言):Ch4_选择结构程序设计(66页珍藏版)》请在金锄头文库上搜索。

1、Chapter 4Decision-Making Structure Programming 学学 习习 指指 导导内容概述内容概述重要内容重要内容教学目标教学目标重要例题重要例题/习题习题/图表图表难点难点内容概述内容概述选择结构问题实例及解决方法选择结构问题实例及解决方法关系运算与逻辑运算关系运算与逻辑运算选择结构的实现方法选择结构的实现方法选择结构程序分析与设计方法选择结构程序分析与设计方法重要内容重要内容4.4多分支选择结构与if嵌套教教 学学 目目 标标会用关系表达式表示条件会用关系表达式表示条件会用逻辑表达式表示条件会用逻辑表达式表示条件会用算术表达式表示条件会用算术表达式表示条件

2、会用会用if语句表示各种选择结构语句表示各种选择结构会用会用switch语句表示多分支选择结构语句表示多分支选择结构会用条件运算符会用条件运算符(? :)表示选择结构表示选择结构重要例题重要例题/ /习题习题/ /图表图表例例4.13;4.24;4.26 习题习题 :一、二、三:一、二、三 图表图表 图图4.15 多分支结构多分支结构 图图4.19 switch结构结构 表表2-11逻辑运算真值表逻辑运算真值表 表表2-12运算符的优先级运算符的优先级 难点难点(Difficulties)条件的表示条件的表示识别选择结构的等价表示识别选择结构的等价表示l选择结构问题实例及解决方法选择结构问题实

3、例及解决方法 e.g. 输入某学生本学期程序设计课程成输入某学生本学期程序设计课程成绩,然后判断他是否及格。绩,然后判断他是否及格。 i.i.假设假设(Assumption)(Assumption) 变量变量markmark对应某学生成绩对应某学生成绩Note变量mark对应某学生成绩,即若某学生成绩为多少则变量mark的取值就为多少。ii.ii.算法算法(Algorithm)(Algorithm)NY读入成绩并赋给markmark=pass_mark打印:pass打印:Failiii.iii.程序(程序(sourcesource)#include #define pass_mark 60vo

4、id main()int mark;printf(please input your mark:);scanf(%d,&mark);if ( mark = pass_mark )printf(Success!n);elseprintf(“Fail!n”);iv.iv.运行演示(运行演示(Sample DialogSample Dialog)Case 1:Please input your mark:70 Enter (输出) (输入)Pass! (输出)Case 2:Please input your mark:50 Enter (输出) (输入)Fail! (输出)l关系运算与逻辑运算关系运

5、算与逻辑运算(Relational and Logic Evaluation)(Relational and Logic Evaluation) 条件表示常用到关系表达式和逻辑表达式。因此,经常涉及关系运算和逻辑运算。- -条件表示要点(条件表示要点(Keys to Condition Keys to Condition RepresentationRepresentation)i. 用表达式来表示给定的条件用表达式来表示给定的条件 此表达式只取二个值此表达式只取二个值:真真(true)和假和假(false)ii 真和假的规定:视真和假的规定:视非零数非零数为真;而视为真;而视零零为假为假ii

6、i. 如果表达式的运算结果为如果表达式的运算结果为”非零数非零数”,则该表,则该表达式的值为真达式的值为真; 如果表达式的运算结果为零,如果表达式的运算结果为零,则该表达式的值为假则该表达式的值为假 iv. 给定的条件要用等价的表达式来表示。给定的条件要用等价的表达式来表示。即:条件真则表达式真即:条件真则表达式真;条件假则表达式假。条件假则表达式假。- -简单的条件表示简单的条件表示实例实例1e.g. 表示条件:表示条件:i5 Ans. i=5实例实例2e.g. 表示条件:表示条件:1i2 Ans. 1=i&i2Note: 对于表达式:对于表达式:1=i2而言,因而言,因=与与优先级优先级相

7、同且是左结合的,所以先算相同且是左结合的,所以先算=而使而使1=i的值为的值为0或或1。此结果与。此结果与2进行进行运算,运算运算,运算结果恒为真。所以该表达式不能用于表示结果恒为真。所以该表达式不能用于表示该条件。该条件。 实例3e.g. 表示条件:表示条件:i为奇数(假定为奇数(假定i为非负整数为非负整数)Ans. 假设:下面表达式中变量假设:下面表达式中变量i的类型为无小数的类型为无小数部分的无符号类型,如部分的无符号类型,如unsigned int 等。等。则下面任一表达式均可表示此条件。则下面任一表达式均可表示此条件。a. i-i/2*2=1b. i%2=1c. !(i%2=0) d

8、. i%2Note: !为为非非运算符。运算符。非非运算的含义:运算的含义:取运算量的反面。运算规则:取运算量的反面。运算规则:!非零数非零数=0;!0=1。在此表达式中,它的优先级。在此表达式中,它的优先级最高。因要最后进行最高。因要最后进行非非运算,所以运算,所以必须将其后面部分用括号括起来。必须将其后面部分用括号括起来。实例4e.g. 表示条件:表示条件:m能被能被i整除(假定整除(假定m和和i均为均为正整数正整数)Ans.假设下面表达式中变量假设下面表达式中变量m和和n的类型为的类型为无小数部分的无符号类型,如无小数部分的无符号类型,如unsigned int 等。则下面任一表达式等。

9、则下面任一表达式均可表示此条件。均可表示此条件。 a. m-m/i*i=0 b. m%i=0 c. !(m%i)b1b2! b1b1 & b2b1 | | b2falsefalsetruefalsefalsefalsetruefalsetruetruefalsefalsefalsetruetruetruetruetrue- -逻辑运算符逻辑运算符(Logic Operators)(Logic Operators) 含义使用要点使用要点逻辑逻辑与(与(&): 当且当且仅仅当当(if and only if)两个运算量都两个运算量都为为真,运算真,运算结结果才果才为为真。而且,当其左真。而且,当其

10、左侧侧为为假假时时,右,右侧侧不被不被执执行行逻辑逻辑或(或(|): 当且当且仅仅当当(if and only if)两个运算量都两个运算量都为为假,运算假,运算结结果才果才为为假。而且,当其左假。而且,当其左侧侧为为真真时时,右,右侧侧不被不被执执行行- -复杂的条件表示复杂的条件表示e.g. 表示条件:表示条件:a和和b之一之一为为零,但不能零,但不能同同时为时为零。零。i.i.分析:分析: 此条件等价于下列每一个此条件等价于下列每一个此条件等价于下列每一个此条件等价于下列每一个i. a=0且b0,或者a 0且b=0ii. ab=0且a+b 0iii. a 0的结果与b=0的结果相同iv.

11、 a = 0的结果与 b 0的结果相同v. a = 0的结果与 b = 0的结果相反vi. a 0 的结果与 b 0的结果相反ii.ii.ii.ii.上述等价的条件用表达式分上述等价的条件用表达式分上述等价的条件用表达式分上述等价的条件用表达式分别别别别表示如下表示如下表示如下表示如下I.a=0且b0,或者a 0且b=0表示:a=0&b!=0|a!=0&b=0 II.ab=0且a+b 0表示: a*b=0&a+b!=0III.a 0的结果与b=0的结果相同表示:(a!=0)=(b=0)IV.a = 0的结果与 b 0的结果相同表示:(a=0)=(b!=0)V.a = 0的结果与 b = 0的结

12、果相反表示:(a=0)!=(b=0)VI.a 0 的结果与 b 0的结果相反表示:(a!=0)!=(b!=0)iii.iii.iii.iii.验证验证验证验证: : : : e.g. e.g. e.g. e.g. a=0&b!=0|a!=0&b=0 a=0&b!=0|a!=0&b=0 a=0&b!=0|a!=0&b=0 a=0&b!=0|a!=0&b=0 的的的的验证验证验证验证Case 1: Given: a=5, b=00(1)不执行 1(3)1(4)0(2)1(5)1(6) a=0 & b!=0 | a!=0 & b=0Case 2: Given: a=0, b=51(1)1(2) 1(

13、3)不执行1(4) a=0 & b!=0 | a!=0 & b=0l选择结构的基本实现方法选择结构的基本实现方法 x xx+1x+1x+1x+1x0x0真真假假二个分支选择结构特例Case 1C描述(C Equivalent)if(x0)x+=1;else;Note:1这里单独的分号;被称为空语句。其含义为:do nothing2上面描述等价于语句: if(x=0) ;else x+=1;Case3Case3x0x0真真假假C描述(C Equivalent)if(x=0) ;else ;Note:上面描述等价于语句:if(xb?a:b的值 Ans.表示示例表示示例: : e.g. 语句max=

14、ab?a:b; 表示的是一个二分支选择结构分析:i.该语句等价于: if(ab)max=a; else max=b; 因二者的功能均为:Maximum (a,b) maxii. 而后者表示的是一个二分支的选择结构,所以原语句亦然。l用用ifif语句表示多分支选择结构语句表示多分支选择结构-多分支选择结构示例多分支选择结构示例表达式表达式表达式表达式1 1 语句语句语句语句1 1 语句语句语句语句2 2表达式表达式表达式表达式2 2表达式表达式表达式表达式3 3表达式表达式表达式表达式4 4 语句语句语句语句3 3 语句语句语句语句4 4真真真真假假假假真真真真假假假假真真真真假假假假 语句语句

15、语句语句5 5真真真真假假假假Note:Note:有四个选择结构,它们有嵌套关系有四个选择结构,它们有嵌套关系- -用用ifif语句表示多分支选择结构示例语句表示多分支选择结构示例 if(表达式表达式1)语句)语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式3)语句语句3 else if(表达式表达式4)语句语句4 else 语句语句5Notes: 该程序段仅由一个该程序段仅由一个if语句组成。语句组成。 有四个有四个if语句,它们有嵌套关系。语句,它们有嵌套关系。 - -实例实例1 1sign = 1x0x=0sign = 0sign = -1开始开始结束结束

16、程序片段程序片段if( x0) sign=1 ;else if (x=0) sign=0 ; else sign= -1;e.g. 编程实现符号函数- -实例实例2 2e.g. 已知函数已知函数y如下:如下: 6; 3x6; 3xy= 4; 2 x 3y= 4; 2 x 3 2; 1 x 2 2; 1 x 2 0; x 1 0; x =3) y=6 ;else if(x=2) y=4 ; else if(x=1) y=2; else y=0; printf(“%dn”,y);Note 被判断的区间端点先大后小。类似地,可写出区间端点先小后大的程序。ii.程序(Source)lAssignmen

17、t4.1 已知条件:已知条件:a和和b之一之一为为零,但不能零,但不能同同时为时为零。其表达式可零。其表达式可为为下面中的下面中的任一个。任一个。请验证请验证 i. a=0&b!=0|a!=0&b=0 ii. a*b=0&a+b!=0 iii. (a!=0)=(b=0) iv. (a=0)=(b!=0) v. (a=0)!=(b=0) vi. (a!=0)!=(b!=0)4.2 编编程:程:对一个正整数判断其为偶数否。对一个正整数判断其为偶数否。 4.34.3下面程序的运行结果是什么?下面程序的运行结果是什么? #include void main() int a,b,c,x; a=b=c=0

18、; x=35; if(!a)x-; else if(b);if(c) x=3; else x=4; printf(”x=%d”,x); 提示: 第5行到第7行等价于下面程序段if(!a) x-;else if(b);(不管b为真假均什么 也不做。子句if(b); 被嵌入其中而成为一 个构成部分)if(c)x=3;else x=4;l用条件运算符表示多分支选择结构用条件运算符表示多分支选择结构-多条件运算符实例多条件运算符实例 e.g. 对于表达式:x0?1:x 0 ? 1 : x 0 ? 1 : x 0 ? 1 : x 0 ? -1 : 00(1)0(4) 0(3)0(2)- -表示实例表示实

19、例 e.g. x与与y的关系如下:的关系如下: 6; 3x6; 3x y= 4; 2 x 3 y= 4; 2 x 3 2; 1 x 2 2; 1 x 2 0; x 1 0; x =3 ? 6:x=2 ? 4:x=1 ? 2:0 y=x=3 ? 6:x=2 ? 4:x=1 ? 2:0ii.ii.验证验证(Fact-checking)(Fact-checking)Given: x=41(1)1(1)1(1)1(1)6(2)6(2)6(2)6(2)y=x=3 ? 6: x=2 ? 4: x=1 ? 2:06(3)6(3)6(3)6(3)Note: 括号中的数字为操作序号Given: x=2.5Giv

20、en: x=2.54(3)4(3)4(3)4(3)0(1)0(1)0(1)0(1)1(2)1(2)1(2)1(2)4(4)4(4)4(4)4(4)y=x=3 ? 6: x=2 ? 4: x=1 ? 2:04(5)4(5)4(5)4(5)Given: x=1.5Given: x=1.52(5)2(5)2(5)2(5)0(1)0(1)0(1)0(1)0(2)0(2)0(2)0(2)1(3)1(3)1(3)1(3)2(4)2(4)2(4)2(4)2(6)2(6)2(6)2(6)y=x=3 ? 6: x=2 ? 4: x=1 ? 2:02(7)2(7)2(7)2(7)Given: x=0.5Given

21、: x=0.50(3)0(3)0(3)0(3)0(5)0(5)0(5)0(5)0(1)0(1)0(1)0(1)0(2)0(2)0(2)0(2)0(4)0(4)0(4)0(4)0(6)0(6)0(6)0(6)y=x=3 ? 6: x=2 ? 4: x=1 ? 2:00(7)0(7)0(7)0(7)l用用switchswitch语句表示语句表示: :算术值控制的多分支选择结构算术值控制的多分支选择结构-算术值控制的多分支选择结构i.i.示意图示意图其他其他计算计算 e 值值e=? S1 S2 S3 S4 S5S6C1C2C3C4C5结束结束S1S2S3S4S5e=?C1C2C3C4C5S6其它其它

22、Note:由表达式e控制的六分支选择结构switch ( e ) case C1 :S1 break; case C2 :S2 break ; case C3 :S3 break ; case C4 :S4 break ; case C5 :S5 break ; default : S6 S1S2S3S4S5e=?C1C2C3C4C5S6其它其它ii.ii.用用switchswitch语句表示该算法语句表示该算法Note:defaultNote:defaultNote:defaultNote:default相当于相当于相当于相当于“ “其它其它其它其它” ”- -实例实例e.g. 根据大奖赛的

23、情况调整程序设计课的成绩根据大奖赛的情况调整程序设计课的成绩加分规则:加分规则: 1-参赛者参赛者(加加5分分)2-三三 等奖等奖(加加15分分)3-二等奖二等奖(加加20分分)4-一等奖一等奖(加加30分分) 此外,总分不超过此外,总分不超过100分分编程序编程序:计算某同学的程序设计课成绩计算某同学的程序设计课成绩 i.假设(Assumptions)int mark:对应某同学成绩int win:对应参赛情况。具体对应如下:win参赛情况0未参赛(Not as a Member)1参赛(As a Member Only)2三等奖(3nd Prize)3二等奖(2nd Prize)4一等奖(

24、1st Prize)ii.ii.ii.ii.算法算法算法算法(AlgorithmAlgorithmAlgorithmAlgorithm)mark+50(未参赛未参赛)读入考试成绩并赋给读入考试成绩并赋给mark读入参加大奖赛信息并赋给读入参加大奖赛信息并赋给winwin?mark+15输出输出markmark100Fmark100Tmark+=20mark+=302(三等奖三等奖)1(参赛参赛)3(二等奖二等奖)4(一等奖一等奖)iii.iii.程序(程序(Source)Source)printf(“Your terminal score:);scanf(%d,&mark);printf(“Y

25、our competition informationn);printf(“(0:Not as a member,1:As a member only,2:3rd prize,3:2nd prize, 4:1st prize):);scanf(%d,&win);switch ( win ) case 0 :break ;case 1 :mark=mark+5;break ;case 2 :mark=mark+15;break ;case 3 :mark=mark+20;break ;case 4 :mark=mark+30;if ( mark100 )mark = 100 ;printf(“Y

26、our final score:%dn,mark);l选择结构程序分析与设计方法选择结构程序分析与设计方法- -实例一:分析函数关系实例一:分析函数关系e.g.对于下面程序段,分析x与y的函数关系y=6;if(x3)y=4;if(x2)y=2;if(x1)y=0;i.程序特点 三个if语句具有顺序关系 每一个if语句表示的都是二分支选择结构的特例ii.分析分析 6; 3x 6; 3x y= 4; 2 x 3 y= 4; 2 x 3 2; 1 x 2 2; 1 x 2 0; x 1 0; x 1a.a.a.a.使使使使y=6y=6y=6y=6,仅当所有条件为假。即所有条件的反为真。即,仅当所有条

27、件为假。即所有条件的反为真。即,仅当所有条件为假。即所有条件的反为真。即,仅当所有条件为假。即所有条件的反为真。即x3x3x3x3且且且且x2x2x2x2且且且且x1x1x1x1成立。亦即:成立。亦即:成立。亦即:成立。亦即: x3x3x3x3b.b.b.b.使使使使y=4 y=4 y=4 y=4 ,仅当,仅当,仅当,仅当x x x x 3 3 3 3且余下条件为假。即:且余下条件为假。即:且余下条件为假。即:且余下条件为假。即: x x x x 3 3 3 3且余下条件且余下条件且余下条件且余下条件的反为真。即:的反为真。即:的反为真。即:的反为真。即: x x x x 3 3 3 3且且且

28、且x2x2x2x2且且且且x1 x1 x1 x1 ,亦即:,亦即:,亦即:,亦即:2 2 2 2x3x=1)y=2;=1)y=2;=1)y=2;=1)y=2;if(xif(xif(xif(x=2)y=4;=2)y=4;=2)y=4;=2)y=4;if(xif(xif(xif(x=3)y=6;=3)y=6;=3)y=6;=3)y=6;vi.vi.另一种常见的等价程序另一种常见的等价程序 if(x=3)y=6;if(x=2&x=1&x2)y=2;if(x=b);else t=a,a=b,b=t;if(b=c);else t=b,b=c,c=t; if(a=b); else t=a,a=b,b=t;

29、Note: 此程序段仅由二个语句组成。它们具有顺序关系。iv.iv.验证验证(Fact-checking)这里用1,2,3三个数来说明六种情况。它们是: (1,2,3),(1,3,2) (2,1,3),(2,3,1) (3,1,2),(3,2,1)Note 先出现的数先输入实例三:选择结构的等价表示实例三:选择结构的等价表示实例三:选择结构的等价表示实例三:选择结构的等价表示e.g.与y=x0?1:x0)y=1; else if(x0)y=1; else y=-1;(c) y=-1; if(x0)y=1; else if (x=0)y=0;(d) y=0; if(x0)y=1; if(x0?1

30、:x0,则有y=1;当x00x0不被满足,所以,不被满足,所以,y y的值为的值为-1-1。而这与。而这与y y的值为的值为0 0不符。据此,不符。据此,(b)(b)选项被排除。选项被排除。 4.4当当a,b,c的初值为的初值为3,2,1时,下面程序段的输出是时,下面程序段的输出是什么什么?if(a=b);else t=a,a=b,b=t;if(b=c);else t=b,b=c,c=t; if(a=b); else t=a,a=b,b=t;printf(”%d,%d,%dn”,a,b,c);( Hint:该程序段的第一个该程序段的第一个if语句与第二个语句与第二个if语句具有顺序关系语句具有

31、顺序关系)lAssignment4.5 编程:输入一个字母。若其为小写,则将其转换成大写。最后输出。(Hint: 1. 条件“c为小写字母”可表示为 a=c&c=z 2. 小写码值-大写码值=32 )4.6编程:输入某个自然数,判断其千位上的数是否为零。Hint: n的千位上的数(n/1000)%10。这里:n对应某自然数。其类型为无小数部分的无符号类型,如:unsigned int等。l小结(小结(Summary)条件用表达式来表示。条件表示一般不条件用表达式来表示。条件表示一般不唯一唯一可使用嵌套的可使用嵌套的if语句语句,多个条件运算符多个条件运算符表示多分支选择结构表示多分支选择结构用用switch语句可方便地表示算术值控制语句可方便地表示算术值控制的多分支选择结构的多分支选择结构

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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