C语言第3章课件.ppt

上传人:scccc 文档编号:13355343 上传时间:2021-12-23 格式:PPT 页数:58 大小:572KB
返回 下载 相关 举报
C语言第3章课件.ppt_第1页
第1页 / 共58页
C语言第3章课件.ppt_第2页
第2页 / 共58页
C语言第3章课件.ppt_第3页
第3页 / 共58页
C语言第3章课件.ppt_第4页
第4页 / 共58页
C语言第3章课件.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《C语言第3章课件.ppt》由会员分享,可在线阅读,更多相关《C语言第3章课件.ppt(58页珍藏版)》请在三一文库上搜索。

1、第3章 分支结构程序设计,3.1 关系运算符和关系表达式 3.2 逻辑运算符和逻辑表达式3.3 if语句3.4 switch语句,例题链接,C语言第3章课件,例题链接,例3.5,例3.4,例3.6,例3.7,例3.9,例3.10,例3.11,例3.12,例3.1,例3.2,例3.3,例3.13,例3.8,3.1 关系运算符和关系表达式,3.1.1 关系运算符3.1.2 关系表达式,P56,所谓“关系运算”实际上是“比较运算”。将两个值进行比较,判断其比较的结果是否符合给定的条件。,3.1.1 关系运算符,共6种: 、=、=、0” 隐含 x 的值是否大于0,P56,C语言第3章课件,3.1.2

2、关系表达式,用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称关系表达式。例如,下面都是合法的关系表达式:ab,abbc,(a=3)(b=5),ab,(ab)(bc),P56,3.1.2 关系表达式,判断结果只有两种可能:“真”或“假”关系成立为“真”,不成立为“假”,只能是0或1,P56,x=1;printf(“%d”, x 0);,输出 1,【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。,x=1;a=x = 0;printf(“%d”,a);,假,输出 0,【例3.1】假设a、b、x为整型变量,y为单

3、精度型变量,请观察输出结果。,x=3; a=x 0;b=x5;printf(“%d”, a=b );,真,a的值1,真,b的值1,输出1,【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。,x=-3;printf(“%d”,0 = x = 2) ;,假,0 = 2,输出1,注意:表达式0=x=2不能代表 x 的取值范围 0 x2,【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。,真,y=45.3219;printf(“%d”,y=45.3219);,输出0,注意:存放在内存中的实型数总有误差避免使用判断 “实型数”“实型数”这样的关系表达式。,

4、【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。,3.2 逻辑运算符和逻辑表达式,3.2.1 逻辑运算符3.2.2 逻辑表达式,P57,C语言第3章课件,3.2.1 逻辑运算符,& :逻辑与 x=0 & x3 (双目运算符, 结合方向:自左至右)! : 逻辑非 ! (x3) (一目运算符, 结合方向:自右至左)优先次序: !&|,P57,3.2.1 逻辑运算符,逻辑运算的真值表:,P57,a b ! a! ba&b a|b真真假假 真 真真假假真 假 真假真真假 假 真假假真真 假 假,3.2.2 逻辑表达式,用逻辑运算符将关系表达式或

5、逻辑量连接起来的式子就是逻辑表达式。判断结果只有两种可能:“真”或“假”逻辑运算的结果为非零时:“真” 逻辑运算的结果为零时:“假”,也只能是0或1,P58,【例3.2】逻辑表达式的示例。,x=1; printf(%d ,x=0 ,x=5; printf(%d ,x=0 ,输出1,输出0,输出1,x=5; printf(%d ,!x); printf(%d ,3 ,x=0; printf(%d ,x3); printf(%d ,!x);,输出0,输出1,输出0,输出1,输出1,输出x=2,C语言第3章课件,逻辑运算的规则,&:两个运算量都为非零,结果是真,值为1;否则,结果是假,值为0

6、|:至少有一个运算量为非零,结果是真,值为1;否则,结果为假,值为0!:运算量为零,结果是真,值为 1;否则,结果为假,值为 0,C语言第3章课件,逻辑表达式的求解,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。a & b & c只有a为真(非0)时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不必判别b和c(此时整个表达式已确定为假)。如果a为真,b为假,不判别c。a|b|c只要a为真(非0),就不必判断b和c;只有a为假,才判别b;a和b都为假才判别c。,也就是说,对&

7、amp;运算符来说,只有a0,才继续进行右面的运算。对运算符来说,只有a=0,才继续进行其右面的运算。因此,如果有下面的逻辑表达式:(m=ab)&(n=cd)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0, 因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。这点请大家注意。,C语言第3章课件,【例3.3】编写一个含有特殊逻辑表达式的程序。,C语言第3章课件,#include main( ) int a=1,b=0; printf(%d ,0 ,a的值仍为1,a的值为2,b的值仍为1,b的值为2,运算的先后顺序:,! 算术运算符 关系运算符

8、& | 赋值运算符,先,后,3.3 if语句,3.3.1 if语句的一般形式3.3.2 if语句的嵌套,P59,if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。,3.3.1 if语句的一般形式,if语句有两种形式 1不带else的if语句 2带else的if语句,P60,1不带else的if语句,【例3.4】老大和老二各拿了一包糖,现要保证老大手中的糖比老二的少。编写程序实现其功能。,#include main( ) int a=0,b=0,t=0; printf(Input a,b:); scanf(%d%d,2 5,注意:缩进格式,a=2

9、,b=5,5 2,a=2,b=5,不带else的if语句形式,if (表达式) if子句,任意合法表达式,语法上要求一条语句,if子句,0,执行过程,【例3.5】编写输出如下分段函数值的程 序,要求x的值从键盘输入。,1 (0 x1),x+1 (x0),x (x1),y=,#include main( ) float x=0,y=0; scanf(%f,第1次运行: 3,x=3.000000,y=3.000000,if( x1 ) y=x;,第2次运行: -1,x=0.500000,y=1.000000,if( x=0 ) y=x+1;,第3次运行: 0.5,if( x0 ,x=-1.0000

10、00,y=0.000000,必须调试所有可能情况,【例3.6】输入3个整数,输出其中最大数。,#include main( ) int a=0,b=0,c=0,max=0; printf(Input a,b,c:); scanf(%d%d%d,输入 3 5 7,输出 3,5,7,max=7,还要试最大值在最前、中间的情况,C语言第3章课件,讨论题3.1,在4个数中找最大数如何解决?在100个或更多的数中用同样的方法找最大数方便吗?,【例3.7】输入3个不同的整数存放在 a、b、c中。从小到大排序。,三个数排序过程,冒泡,冒泡,冒泡法,#include main( ) int a=0,b=0,c

11、=0,temp=0; scanf(%d%d%d,printf(Before: %d,%d,%dn,a,b,c);,建议加,复合语句,temp=a; a=b; b=temp;,C语言第3章课件,讨论题3.2,在本题中将3个数改成4个数,程序应如何修改?若改成20(或更多)个数,此方法方便吗吗?,2带else的if语句,【例3.8】输入一个整数,如果是偶数,则输出Even number,如果是奇数,则输出 Odd number。,#include main( ) int a=0; printf(Input a:n); scanf(%d, ,第1次运行 16,输出 Even number,第2次运行

12、 5,输出 Odd number,关键字,带else的if语句形式,if (表达式) if子句else else子句,必须与if配对使用,执行过程,非0,if子句,0,else子句,3.3.2 if语句的嵌套,【例3.9】嵌套if语句的示例。,P67,在if语句中又包含一个或多个if语句称为if语句的嵌套。,int a=0,b=0; a=b=3; if( a5 ) if( a5 ) if( b10 ) b+; else b-; printf(a=%d,b=%dn,a,b);,内嵌if语句,构成 if 子句,是,if( a5 ),if( a5 ),if( a5 ),if( a5 ),if子句,是

13、复合语句,运行结果 a=3,b=2,【例3.10】编写求下面分段函数值的程序,其中x的值从键盘输入 。,scanf(%f,C语言第3章课件,scanf(%f,else,C语言第3章课件,scanf(%f, else,C语言第3章课件,scanf(%f,被嵌套的if语句,简化书写格式(作用同上),if(x0) y=0;else if(x10) y=x*x*x+5;else if(x20) y=2*x*x-x-6;else if(x30) y=x*x+1;else y=x+3;,只执行其中一条,测试时应至少运行5次,3.4 switch语句,解决多分支问题,P69,【例3.11】从键盘输入一个整数

14、输入1时 显示A输入2时 显示B输入3时 显示C输入其他数时 显示D,scanf(%d, ,关键字,第一次运行输入 1,1,输出 A,退出switch语句体,第二次运行输入 2,2,输出 B,退出switch语句体,入口,入口,第三次运行输入 3,3,入口,输出 C,退出switch语句体,第四次运行输入 5,5,入口,输出 D,退出switch语句体,switch语句的一般形式,switch ( 表达式 ) case 常量表达式1: 语句组1 break; case 常量表达式2: 语句组2 break; case 常量表达式n: 语句组n break; default: 语句组n+1 break; ,整型或字符型,值不能相等,switch语句常用于处理键盘命令,执行过程( 以例3.11为例),【例3.12】写出下面程序段的运行结果。,scanf(%d, ,输入 1,输出 ABC,退出switch语句体,输入 2,输出 BC,退出switch语句体,break作用,【例3.13】输入一个百分制成绩,输出成绩等级A、B、C、D、E。,90100 A8089 B7079 C 6069 D 059 E否则显示出错信息,scanf( %d, ,89, B,89,85, B,85,100, A,100,可以空,分数段转换成整数,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1