C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章

上传人:E**** 文档编号:89389583 上传时间:2019-05-24 格式:PPT 页数:68 大小:825KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章_第1页
第1页 / 共68页
C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章_第2页
第2页 / 共68页
C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章_第3页
第3页 / 共68页
C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章_第4页
第4页 / 共68页
C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 曹玲焕 孙萍主编 第四章(68页珍藏版)》请在金锄头文库上搜索。

1、第4章,选择结构程序设计,一、关系运算和逻辑运算 二、if语句 三、Switch语句 四、选择结构程序设计举例,主要内容,一、关系运算和逻辑运算,4.1.1 关系运算和关系表达式,1关系运算符及其优先级次序 (1)关系运算符 ! (2)优先次序: 关系运算符中的前四种运算符(,)的优先级高于后两种运算符(,!)。 关系运算符均为双目运算符,其结合性均为自左向右。 关系运算符的优先级低于算术运算符,高于赋值运算符。,2关系表达式 关系表达式:由关系运算符将两个表达式连接起来的符合C语言语法规则的式子。 关系表达式的一般格式如下: 表达式 关系运算符 表达式 例如: ab,x+yD,3*y9,3关

2、系表达式的值 (1) 关系表达式的值是一个逻辑值,即“真”或“假”。C语言没有逻辑型数据,所以就用1代表“真”,用0代表“假”。 例如:当xy为“真”时,其表达式的值为1;当xy为“假”时,其表达式的值为0。 (2) 可以将关系表达式的运算结果(0和1)赋给一个整型变量或字符型变量, 例如:设a=2,b=8 c=ab;以上语句执行后,变量c中的值为1。,【例4.1】读程序,写出程序运行结果 程序如下: #include main( ) char c=g; int i=1, j=2 ,k=3 ; float x=3e+5, y=0.85 ; printf(“%d,%dn” , a +3=k+2)

3、 ; printf(“%d,%dn” , 1j8,x-7.25=x+y); printf(“%d,%dn” , i+j+k=-2*j,k=j=i+5); ,练习与思考: 已知有以下定义,写出下列表达式的值 int a=5,b=7,c=9 cba 值 a%2!=0 值 (b-a)21 值 a+bc 值,4.1.2 逻辑运算符和逻辑表达式,1逻辑运算符及其优先级次序 (1)逻辑运算符 & | ! (2)运算规则: &:当两个操作数都为“真”时,运算结果为“真”,其它情况运算结果都为“假”。 |:当两个操作数都为“假”时,运算结果为“假”,其它情况运算结果都为“真”。 !:这是一个单目运算符(只有一

4、个操作数),当操作数为“真”时,运算结果为“假”;当操作数为“假”时,运算结果为“真”。,表4-1给出了上述三种逻辑运算的真值表。其中a、b是两个操作数。,(3)优先级次序 &与运算和|或与运算均为双目运算符,其结合性自左向右 !非运算符为单目运算符,只要求一个运算量,其结合性为自右向左 逻辑运算符(&、|、!)之间的优先级关系由高到低顺序表示如下: !(非)&(与)|(或) 逻辑运算符和其他运算符优先级的关系由高到低顺序表示如下: !(非)算术运算符关系运算符&和|赋值运算符,2逻辑表达式 逻辑表达式:用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子。 逻辑表达式的一般格式: 表达式

5、逻辑运算符 表达式 例如: 满足x2同时又满足x2 & xb & x0, !ab & x-y, a=b|x=y,3逻辑表达式的值 逻辑表达式的值也是一个逻辑量“真”或“假”。C编译系统在给出逻辑运算结果时,以1代表“真”,以0代表“假”,但在判断一个量时,以非0代表“真”,以0代表“假”。C语言逻辑运算的规则如表4-2。,例如:53 & 2 其结果为:1 84!0 其结果为:0 可以将逻辑表达式的运算结果(0或1)赋给整型变量或字符型变量。 例如:当a=1,b=2,c=3,d=3时,变量e: e=(a=b)&(c=d); 执行以上的语句后变量e中的值为1,【例4.2】读程序,写出程序运行结果

6、#include main( ) int a=2, b=3 ,c=0 ; printf(“%d,%dn” , a ,4“短路”现象 (1)与运算 一般形式:表达式1 & 表达式2 当表达式1的值为假(0)时,跳过表达式2,则整个表达式的值为假(0) 例: 设a0,b1 表达式:a+ & b+ 先去求a的值为0,可以确定该逻辑表达式的值为0,跳过b+不再对它进行求值。a的值将自增1,由0变成1;而b的值将不变。,(2)或运算 一般形式:表达式1 | 表达式2 当表达式1的值为真(1)时,跳过表达式2,则整个表达式的值为真(1) 例: 设a1,b2 表达式:a+ & b+ 先去求a的值为1,可以确

7、定该逻辑表达式的值为1,跳过b+不再对它进行求值。a的值将自增1,由1变成2;而b的值将不变。,练习与思考:,按下列要求写出相应表达式 1x能被3或5整除 2x是偶数 3x与y的和不大于z,back,二、if语句,4.2.1 if语句的三种形式,1第一种形式:if (1)格式:if (表达式) 语句; (2)执行过程:首先计算表达式的值,如果表达式的值为非0,则执行其后的if子句,然后去执行if语句后的下一条语句;如果表达式的值为0,则跳过if子句,直接执行if语句后的下一条语句。if 语句流程图如图4-3(a)所示,N-S图如图4-3(b)所示。,图4-3 if语句,表达式,语句,假,真,(

8、a)流程图,表达式,真,假,语句,(b)N-S图,if语句中的条件表达式可以是常量、变量;其类型可以是整型、实型、字符型;语句可以是一条语句或复合语句。 例如:if (xy) printf(“%d”,x); 也可以写成:if (xy) printf(“%d”,x);,【4.3】输入一个成绩,及格则输出“PASS” 分析:判断输入的数据是否大于等于60分,若大于则输出“PASS”,否则什么也不输出。,程序如下: #include main() int score; scanf(“%d”, ,程序的N-S图如图4-4所示。,2第二种形式:ifelse,(1)格式: if (表达式) 语句1; el

9、se 语句2;,(2)执行过程:首先计算表达式的值,如果表达式的值为非0,则执行其后的if子句,即,执行语句1,然后跳过else子句,去执行if语句后的下一条语句;如果表达式的值为0,则跳过if子句,去执行else子句,即执行语句2,然后接着去执行if语句后的下一条语句。流程图如图4-6(a)所示,N-S图4-6(b)所示。 例如:if (xy) printf(“%d”,x); else printf(“%d”,y); 也可以写成:if (xy) printf(“%d”,x); else printf(“%d”,y);,【4.4】输入一个成绩,判断其是否及格,分析:判断输入的数据是否大于等于6

10、0分,若大于则输出“PASS!”,否则输出“Cant PASS!”。程序的N-S图如图4-4所示。,程序如下: #include main() int score; scanf(“%d”, ,如果输入的成绩是75,则运行结果同例5.3。,3第三种形式:ifelseif,前两种形式的if语句一般都用于两个分支的情况。当有多个分支进行选择时,可采用ifelseif语句,(1)格式 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else if(表达式m) 语句m else 语句n,(2)执行过程:依次判断表达式1m的值,当某一表达式的值为真时

11、,则执行其相应的语句,然后跳到整个if语句之外继续执行后续程序。如果所有的表达式的值均为假时,则执行语句n,然后跳到整个if语句之外继续执行后续程序。流程图如图4-9(a)所示,N-S图如图4-9(b)所示。,【例4.5】输入学生成绩,并根据成绩划分等级(90分以上为“A”等,8089分为“B”等,7079分为“C”等,6069分为“D”等,60分以下为“E”等。),分析:对于学生成绩,有5个分支,用if多层嵌套的形式能很方便在解决问题。N-S图如图4-10所示。,include main( ) int x; scanf(”%d”, ,若输入95分怎应显示“A”,以此类推,4使用if语句时应注

12、意的问题,(1)执行if语句时,先判断表达式的值(非0为真,0为假),当真时则执行其后的语句,为假时则不执行其后的语句。 if语句中的表达式可以是逻辑表达式或关系表达式,但也可以是其它类型的表达式,如算术、赋值表达式等;还可以是常量、变量,其类型可以是整型、实型、字符型。判断时只要表达式的值非0,即为“真”。 例如:if(3)xy; if(a)xy;,(2)在if语句中,表达式必须用括号括起来,if和else的各内嵌语句用“;”号结束,若有多条语句,必须用“”扩起来,否则其含义不同。,练习与思考: 设a=4,b=5,t=0 if(ab)t=a,a=b,b=t; 则执行该语句后变量a和b的值分别

13、是多少? if(ab) t=a,a=b,b=t; 则执行该语句后变量a和b的值分别是多少?,4.2.2 if语句的嵌套,在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:,if ( ),if ( ) 语句1 else 语句2 else,if ( ) 语句3 else 语句4,内嵌if,内嵌if,应当注意if与else的配对关系。从最内层开始,else总是与它上面最近的(未曾配对的)if 配对。,if ( ) if ( ) 语句1 else 语句2,按默认的配对关系,else是与第2个if配对的。如果要改变这种默认的配对关系,可以在相应的if语句上加上左、右花括号来确定新的配

14、对关系,如:,if ( ) if ( ) 语句1 else 语句2,用左、右花括号将第2个if语句括起来,此时的else是与第1个if语句配对。逻辑关系完全改变了。,【例4.6】 由键盘输入三个整数a、b、c,输出其中的最大的数 分析:若ac 则b为最大的值 若ab 且 ab 且ac 则a为最大的值,程序如下: #include main() int a,b,c; printf(“请输入三个整数:”); scanf(“%d%d%d”,4.2.3 条件运算符和条件表达式,if语句用来构成程序中的分支结构,C语言另外还提供了一个特殊的运算符 条件运算符,由此构成的表达式也可以形成简单的分支结构。,

15、1. 条件运算符 条件运算符由两个符号组成,它们是: ? : 这是C语言提供的唯一的三目运算符,即要求有三个操作数。,2. 条件表达式 条件表达式格式如下: 表达式1?表达式2:表达式3 其运算功能为:当表达式1的值为非0时,则求解表达式2的值,此时表达式2的值就作为整个条件表达式的值。当表达式1的值为0,则求解表达式3的值,这时表达式3的值就是整个条件表达式的值。,例如:(ab)?a:b 可以利用条件运算符,简化某些if语句。如果if语句的形式如下所示: if (表达式1) x=表达式2; else x=表达式3;,也就是说在if语句中,无论表达式1为“真”还是为“假”,都只执行一个赋值语句,且给同一个变量赋值。这时就可以写成条件表达式的形式: x=表达式1?表达式2:表达式3;,【例4.7】 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。,分析:可以用条件表达式来代替if语句,大写字母转换成小写字母的方法是,将存放大写字母的变量加32。,#include main( ) char ch1,ch2; scanf(”%c”, ,条件运算符也可以嵌套使用,如: grade=(score=90) ? A:(score=90时,将字符A赋给变量grad

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

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

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