C语言第3章课件.ppt_第1页
C语言第3章课件.ppt_第2页
C语言第3章课件.ppt_第3页
C语言第3章课件.ppt_第4页
C语言第3章课件.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3 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.83.1 3.1 关系运算符和关系表达式关系运算符和关系表达式 p56返回返回所谓所谓“关系运算关系运算”实际上是实际上是“比较运比较运算算”。将两个值进行比较,判断其。将两个值进行比较,判断其比较的结果是否符合给定的条件。比较的结果是否符合给定的条件。 3.1.1 3.1.1 关系运算符关系运算符 、=、=、0” 隐含隐含 x 的值是否大于的值是否大于0 p563.1.2 3.

2、1.2 关系表达式关系表达式用用关系运算符关系运算符将两个表达式将两个表达式(可以是算术表达可以是算术表达式或关系表达式、逻辑表达式、赋值表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式式、字符表达式)连接起来的式子,称连接起来的式子,称关系关系表达式表达式。例如,下面都是合法的关系表达式:例如,下面都是合法的关系表达式:ab,abbc,(a=3)(b=5),ab,(ab)(bc)p563.1.2 3.1.2 关系表达式关系表达式n判断结果只有两种可能:判断结果只有两种可能:“真真”或或“假假”n关系成立为关系成立为“真真”,不成立为,不成立为“假假”只能是只能是0或或1表达式的值表达式

3、的值1 结果为结果为“真真”时时0 结果为结果为“假假”时时p56x=1;printf(“%d”, x 0); 真真输出输出 1x=1;a=x = 0;printf(“%d”,a); 假假 输出输出 0 x=3; a=x 0;b=x5;printf(“%d”, a=b ); 真真 a的值的值1真真 b的值的值1真真 输出输出1x=-3;printf(“%d”,0 = x = 2) ; 假假 0 = 2输出输出1注意:表达式注意:表达式0=x=0 & x=2 (双目运算符(双目运算符, 结合方向:自左至右)结合方向:自左至右)n| : 逻辑或逻辑或 x3 (双目运算符(双目运算符, 结合方向:自

4、左至右)结合方向:自左至右)n! : 逻辑非逻辑非 ! (x3) (一目运算符(一目运算符, 结合方向:自右至左)结合方向:自右至左)n优先次序:优先次序: !&|p573.2.1 3.2.1 逻辑运算符逻辑运算符逻辑运算的真值表:逻辑运算的真值表:p57 a b ! a! ba&b a|b真真真真假假假假 真真 真真真真假假假假真真 假假 真真假假真真真真假假 假假 真真假假假假真真真真 假假 假假3.2.2 3.2.2 逻辑表达式逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起用逻辑运算符将关系表达式或逻辑量连接起来的式子就是来的式子就是逻辑表达式逻辑表达式。n判断结果只有两种可能:判断结

5、果只有两种可能:“真真”或或“假假”n逻辑运算的结果为非零时:逻辑运算的结果为非零时:“真真” 逻辑运算的结果为零时:逻辑运算的结果为零时:“假假”表达式的值表达式的值1 结果为结果为“真真”时时0 结果为结果为“假假”时时也只能也只能是是0或或1p58 x=1; printf(%d ,x=0 & x=0 & x=2); printf(%d , x3 );真真真真输出输出1 真真假假输出输出0 真真输出输出1 假假 x=5; printf(%d ,!x); printf(%d ,3 & a); printf(%d ,(x=2) | 0); printf(x=%dn,x); x=0; print

6、f(%d ,x3); printf(%d ,!x);输出输出0 输出输出1 输出输出0 输出输出1 输出输出1 输出输出x=2 逻辑运算的规则逻辑运算的规则 n&:两个运算量都为非零两个运算量都为非零,结果是真,结果是真,值为值为1;否则,结果是假,值为;否则,结果是假,值为0n|:至少有一个运算量为非零至少有一个运算量为非零,结果是真,结果是真,值为值为1;否则,结果为假,值为;否则,结果为假,值为0n!:运算量为零运算量为零,结果是真,值为,结果是真,值为 1;否;否则,结果为假,值为则,结果为假,值为 0逻辑表达式的求解逻辑表达式的求解在逻辑表达式的求解中在逻辑表达式的求解中,并不是所有

7、的逻辑运算并不是所有的逻辑运算符都被执行符都被执行,只是在必须执行下一个逻辑运算只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。符才能求出表达式的解时,才执行该运算符。(1)a & b & c只有只有a为真为真(非非0)时,才需要判别时,才需要判别b的值,只有的值,只有a和和b都为真的情况下才需要判都为真的情况下才需要判别别c的值。只要的值。只要a为假,就不必判别为假,就不必判别b和和c(此时此时整个表达式已确定为假整个表达式已确定为假)。如果。如果a为真,为真,b为假,为假,不判别不判别c。(2)a|b|c只要只要a为真为真(非非0),就不必判断,就不必判断b和和c;只;

8、只有有a为假,才判别为假,才判别b;a和和b都为假才判别都为假才判别c。也就是说,对也就是说,对&运算符来说,只有运算符来说,只有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。这点请大家。这点请大家注

9、意注意。【例例3.3】编写一个含有特殊逻辑表达式的编写一个含有特殊逻辑表达式的程序。程序。 #include main( ) int a=1,b=0; printf(%d ,0&(a=2); printf(a=%d ,a); printf(%d ,5&(a=2); printf(a=%d ,a); b=1; printf(%d ,5|(b=2); printf(b=%d ,b); printf(%d ,0|(b=2); printf(b=%dn,b); a的值仍为的值仍为1 a的值为的值为2 b的值仍为的值仍为1 b的值为的值为2 运算的先后顺序:运算的先后顺序:! 算术运算符算术运算符 关系

10、运算符关系运算符 & | 赋值运算符赋值运算符 先先后后3.3 if3.3 if语句语句p59返回返回if语句语句是用来判定所给定的条件是否满是用来判定所给定的条件是否满足,根据判定的结果足,根据判定的结果(真或假真或假)决定执决定执行给出的两种操作之一。行给出的两种操作之一。3.3.1 if3.3.1 if语句的一般形式语句的一般形式 1不带不带else的的if语句语句 2带带else的的if语句语句 p601不带不带else的的if语句语句 【例例3.4】老大和老二各拿了一包糖,老大和老二各拿了一包糖,现要保证老大手中的糖比老二的少。现要保证老大手中的糖比老二的少。编写程序实现其功能。编写

11、程序实现其功能。 #include main( ) int a=0,b=0,t=0; printf(input a,b:); scanf(%d%d,&a,&b); if(ab) t=a; a=b; b=t; printf(a=%d,b=%dn,a,b); 2 5 注意:缩进格式注意:缩进格式关关键键字字ifa=2,b=55 2 a=2,b=5不带不带else的的if语句形式语句形式if (表达式)(表达式) if子句子句 任意合任意合法法表达式表达式 语法上要语法上要求一条语求一条语句句 表达表达式式if子句子句0非非0【例例3.5】编写输出如下分段函数值的程编写输出如下分段函数值的程 序,要

12、求序,要求x的值从键盘输入。的值从键盘输入。 1 (01)y=#include main( ) float x=0,y=0; scanf(%f,&x); if( x0 & x1 ) y=x; printf(x=%f,y=%fn, x,y); 第第1次运行次运行: 3 x=3.000000,y=3.000000 if( x1 ) y=x;第第2次运行次运行: -1 x=0.500000,y=1.000000 if( x0 & x=1 ) y=1;x=-1.000000,y=0.000000 必须调试所有可能情况必须调试所有可能情况 【例例3.6】输入输入3个整数,输出其中最大数。个整数,输出其中

13、最大数。 输入输入a、b、c的值的值max=amax=bmaxb?真真假假maxc?max=c真真假假输出输出max的值的值#include main( ) int a=0,b=0,c=0,max=0; printf(input a,b,c:); scanf(%d%d%d,&a,&b,&c); max=a; if ( maxb ) max=b; if ( maxb )temp=b; b=c; c=temp; if ( bc ) 冒冒泡泡 temp=a; a=b; b=temp; if ( ab ) 56冒冒泡泡 冒泡法冒泡法#include main( ) int a=0,b=0,c=0,te

14、mp=0; scanf(%d%d%d,&a,&b,&c); if ( ab ) temp=a; a=b; b=temp; if ( bc ) temp=b; b=c; c=temp; if ( ab ) temp=a; a=b; b=temp; printf(after: %d,%d,%dn,a,b,c); printf(before: %d,%d,%dn,a,b,c);建议加建议加复合语句复合语句 temp=a; a=b; b=temp;讨论题讨论题3.23.2 在本题中将在本题中将3个数改成个数改成4个数,程序应如个数,程序应如何修改?若改成何修改?若改成20(或更多)个数,此(或更多)个

15、数,此方法方便吗吗?方法方便吗吗? 2带带else的的if语句语句 【例例3.8】输入一个整数,如果是偶数,输入一个整数,如果是偶数,则输出则输出even number,如果是奇数,如果是奇数,则输出则输出 odd number。 #include main( ) int a=0; printf(input a:n); scanf(%d,&a); if ( a%2=0 ) printf(even numbern); else printf(odd numbern); 第第1次运行次运行 16 输出输出 even number 第第2次运行次运行 5 输出输出 odd number 关关键键字字

16、带带else的的if语句形式语句形式if (表达式)(表达式) if子句子句else else子句子句 必须与必须与if配配对使用对使用 语法上都要语法上都要求一条语句求一条语句 语法上都要语法上都要求一条语句求一条语句 执行过程执行过程 非非0表达表达式式if子句子句0else子句子句3.3.2 if3.3.2 if语句的嵌套语句的嵌套p67在在if语句中又包含一个或多个语句中又包含一个或多个if语句语句称为称为if语句的嵌套。语句的嵌套。 int a=0,b=0; a=b=3; if( a5 ) if( a5 ) if( b5 )if( a5 )if( a5 )if( a5 )if子句子句

17、是复合语句是复合语句运行结果运行结果 a=3,b=2 【例例3.10】编写求下面分段函数值的程编写求下面分段函数值的程序,其中序,其中x的值从键盘输入的值从键盘输入 。x3+5 (当当0 x10时时)x2+1 (当当20 x30时时)y=0 (当当x0时时)2x2-x-6 (当当10 x20时时)x+3 (当当x30时时)scanf(%f,&x); scanf(%f,&x);if(x0) y=0;else scanf(%f,&x);if(x0) y=0;else if(x10) y=x*x*x+5; else scanf(%f,&x);if(x0) y=0;else if(x10) y=x*x

18、*x+5; else if(x20) y=2*x*x-x-6; else if(x30) y=x*x+1; else y=x+3;printf(x=%f,y=%fn,x,y);被嵌套的被嵌套的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 switch3.4 switch语句语句n解决多分支问题解决多分支问题 p69返回返回n

19、输入输入1时时 显示显示an输入输入2时时 显示显示bn输入输入3时时 显示显示cn输入其他数时输入其他数时 显示显示d scanf(%d,&a);switch ( a ) case 1: printf(”a”); break; case 2: printf(”b”); break; case 3: printf(”c”); break; default: printf(”d”); break; 关关键键字字第一次运行输入第一次运行输入 1 1输出输出 a退出退出switch语句体语句体第二次运行输入第二次运行输入 2 2输出输出 b退出退出switch语句体语句体入口入口入口入口第三次运行输

20、入第三次运行输入 3 3入口入口输出输出 c退出退出switch语句体语句体第四次运行输入第四次运行输入 5 5入口入口输出输出 d退出退出switch语句体语句体switch ( 表达式表达式 ) case 常量表达式常量表达式1: 语句组语句组1 break; case 常量表达式常量表达式2: 语句组语句组2 break; case 常量表达式常量表达式n: 语句组语句组n break; default: 语句组语句组n+1 break; 整型或字符整型或字符型型 值不能相等值不能相等 switch语句常用于处理键盘命令语句常用于处理键盘命令 执行过程(执行过程( 以例以例3.11为例)为例)a=?输入输入a的值的值输出输出a输出输出b输出输出c输出输出d=1=2=3=其他其他【例例3.12】写出下面程序段的运行结果。写出下面程序段的运行结果。 scanf(%d,&a);switch( a ) case 1: printf(”a”); case 2: pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论