C语言程序ppt课件ch4选择结构_第1页
C语言程序ppt课件ch4选择结构_第2页
C语言程序ppt课件ch4选择结构_第3页
C语言程序ppt课件ch4选择结构_第4页
C语言程序ppt课件ch4选择结构_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、共 39 页 第 1 1 页第四章第四章共 39 页 第 2 2 页本章要点:本章要点: 正确使用关系表达式和逻辑表达式正确使用关系表达式和逻辑表达式 掌握用掌握用ifif语句和语句和switchswitch语句实现选择结构语句实现选择结构 掌握条件运算符的使用掌握条件运算符的使用共 39 页 第 3 3 页 选择语句是控制程序执行选择结构的语句选择语句是控制程序执行选择结构的语句 是程序实现逻辑判断的唯一形式是程序实现逻辑判断的唯一形式 根据学生分数判断是否及格根据学生分数判断是否及格 根据学生分数如何进行分级根据学生分数如何进行分级 一元二次方程求解一元二次方程求解自然语言:自然语言:如果

2、如果 那么那么 否则否则c语言:语言:分支语句分支语句如何解决如何解决?为什么要用选择结构?为什么要用选择结构?共 39 页 第 4 4 页4.4. 关系运算符和关系表达式关系运算符和关系表达式.1.1 .1.1 关系运算符关系运算符 1.1.关系运算符关系运算符 关系运算是进行比较大小的运算,并产生运算结果关系运算是进行比较大小的运算,并产生运算结果1 1(真)或(真)或 0 0(假)。(假)。语言中的关系运算符有种语言中的关系运算符有种: : 、!、!优先次序:前种同级,高于后种(后种同级)优先次序:前种同级,高于后种(后种同级)关系运算符的结合性为从左到右;关系运算符的结合性为从左到右;

3、 算术运算符算术运算符 (高高)关系运算符关系运算符赋值运算符赋值运算符 (低低)如:如:32 ab)(bb)(bc) 、ab ay xy 、s+fds+fd 关系表达式的值为逻辑值关系表达式的值为逻辑值“真真”或或“假假”. . 注意注意: : 语言没有逻辑型数据,语言没有逻辑型数据,关系表达式关系表达式的真、假的真、假 是以数值是以数值“”代表代表“真真”,以以“”代表代表“假假”。 例例 :设:设 a=3, b=2, c=1 a=3, b=2, c=1 ,求下列表达式的值?,求下列表达式的值? cb; cb; (a-b)=1; (a-b)=1; (b+c)a; (b+c)34 a=534

4、共 39 页 第 6 6 页练练 习习1.1. 设有变量定义设有变量定义 int z;int z; 分析分析z%2=0 z%2=0 的值?的值? 如果如果z z为偶数,则为偶数,则 z%2=0z%2=0的值为的值为1 1; 否则否则z z为奇数,则为奇数,则 z%2=0z%2=0的值为的值为0 0; 因此,因此,z%2=0z%2=0是断言是断言“z z是偶数是偶数”的的c c语言判断式。语言判断式。2. x2. x与与y y的个位数字相同的个位数字相同 x%10=y%10 x%10=y%10 如何判断十位数上数字相同如何判断十位数上数字相同? ?共 39 页 第 7 7 页4.2.1 4.2.

5、1 逻辑运算符逻辑运算符 c c语言提供三种逻辑运算符:语言提供三种逻辑运算符: & (& (逻辑与逻辑与) ) 、 | (| (逻辑或逻辑或) ) 、! (! (逻辑非逻辑非) )说明说明: :(1 1)“&”&”和和“| ”| ”是是“双目(元)运算符双目(元)运算符”, ,它要它要求有两个操作数。求有两个操作数。(2 2)“! ”! ”是是“单目(元)运算符单目(元)运算符”,只要求有一个,只要求有一个运算量。运算量。(3 3)优先级次序:)优先级次序:! & | ! & | 4.24.2 逻辑运算符和逻辑运算符和逻辑表达式逻辑表达式 a&b a a&b a、b b均为真均为真, 则则a

6、&ba&b为为1 1(真)。(真)。 a|b aa|b a、b b之一为真之一为真,则,则a|ba|b为为1 1(真)。(真)。 !a !a 若若a a为真为真, ,则则!a!a为假。为假。 共 39 页 第 8 8 页运算符的优先级运算符的优先级!(非)!(非) (高高)算术运算符算术运算符 关系运算符关系运算符& 和和 |赋值运算符赋值运算符 (低低)共 39 页 第 9 9 页4.2.2 4.2.2 逻辑表达式逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子用逻辑运算符将关系表达式或逻辑量连接起来的式子. .注意:规定:判断一个逻辑量为注意:规定:判断一个逻辑量为“真、假真、假”

7、的方法:的方法: “ “非非”代表代表“真真”,“”代表代表“假假” 例例 : 写出写出1x101x1&x10 1x1&x10 1x3&2|83&2|84!0!0 例例 :a+bc&c=d a+bn+3a-!d|mn+3 例例 :(m=ab)&(n=c-d) (m=ab)&(n=c-d) 若若a=3,b=2,c=6,d=5,n=8 a=3,b=2,c=6,d=5,n=8 例例 :a|b|c a|b|c 如果如果a a为真,就不再判断为真,就不再判断b b和和c c了了 强调:在逻辑表达式的求解过程中强调:在逻辑表达式的求解过程中, ,只要能确定只要能确定表达式的值表达式的值, ,就不继续向下求

8、解其他的值了就不继续向下求解其他的值了. .(a+b)(n+3)(53)&2|(8b) x=a;: if (ab) x=a;1. 单选择单选择if语句语句 语句语句零零表达式表达式非零非零表达式可以是关系式或逻辑式表达式可以是关系式或逻辑式4.3 选择语句选择语句4.3.1 if 语句语句共 39 页 第 1212 页2. 双选择双选择if语句语句语句格式语句格式: :if (if (表达式表达式) ) 语句组语句组1; 1; else else 语句组语句组2;2;功能功能:当表达式为非零时执行当表达式为非零时执行语句组语句组1否则执行否则执行语句组语句组2。apb非零非零零零共 39 页

9、第 1313 页3.3.控制条件的表示控制条件的表示 #include “stdio.h”#include “stdio.h” main() main() int a,b,c=25; int a,b,c=25; a=10c; a=10c; b=a=a; b=a=a; printf(“a=%d,b=%d”,a,b); printf(“a=%d,b=%d”,a,b); if(c) printf(“c=%d”,c); if(c) printf(“c=%d”,c); 运行结果:运行结果:共 39 页 第 1414 页控制条件的几种形式:控制条件的几种形式: if(a=0) k=1;if(a=0) k=

10、1; if(a=0) k=1; if(a=0) k=1; if(a!=0) k=1; if(a!=0) k=1; if(a) k=1; if(a) k=1; if(1) k=1; if(1) k=1;思考思考a取不同的值时,语句的执行情况?取不同的值时,语句的执行情况?提示:不要用提示:不要用“=“比较两个浮点数是否相等。比较两个浮点数是否相等。可使用如下方式:可使用如下方式:if(fabs(a-b)1.e-6)if(fabs(a-b)1.e-6)fabs(x)fabs(x)是库函数,表示求是库函数,表示求x x的绝对值的绝对值共 39 页 第 1515 页#include “stdio.h”

11、 #include “stdio.h” main()main() int a,b,s; int a,b,s; scanf(“%d%d”,&a,&b); scanf(“%d%d”,&a,&b); s=a; s=a; if(ab) s=b; if(a50) printf(%d,a); if (a50) printf(%d,a); if (a40) printf(%d,a); if (a40) printf(%d,a); if (a30) printf(%d,a); if (a30) printf(%d,a); 程序运行程序运行: : 输入输入5858, 输出输出? ? 输入输入3030, 输出?输

12、出?共 39 页 第 1717 页if printf(“及格及格n”);else printf(“不及格不及格n”);main() int a; scanf(“%d”,&a); if (ab ) max=a; else max=b; printf(the max of a and b is : %dn, max);ab?max=bmax=a非非00求求a a和和b b两数中较大的一个。两数中较大的一个。共 39 页 第 1919 页有关有关if语句的说明语句的说明l 表达式后面不加分号表达式后面不加分号l 语句之后有分号语句之后有分号l else不是语句,不能单独使用不是语句,不能单独使用l

13、当当if后有多个执行语句时,必须用后有多个执行语句时,必须用 将多将多 个语句括起来,构成一个复合语句,个语句括起来,构成一个复合语句, 之之 外不必有分号。外不必有分号。共 39 页 第 2020 页#include “stdio.h” main( ) int a,b; printf(input a and b=); scanf(%d%d,&a, &b); if ( ab ) t=a; a=b; b=t; printf(“%d,%dn, a,b);按由小到大的顺序输出两个数。按由小到大的顺序输出两个数。共 39 页 第 2121 页有关有关if语句的说明语句的说明l 表达式后面不加分号表达式

14、后面不加分号l 语句之后有分号语句之后有分号l else不是语句,不能单独使用不是语句,不能单独使用l 当当if后有多个执行语句时,必须用后有多个执行语句时,必须用 将多将多 个语句括起来,构成一个复合语句,个语句括起来,构成一个复合语句, 之之 外不必有分号。外不必有分号。共 39 页 第 2222 页4.3.2 if语句的嵌套语句的嵌套格式:格式:if(表达式)(表达式) if( 表达式表达式1) 语句语句11; else 语句语句12; else if (表达式表达式2) 语句语句21; else 语句语句22;在在ifif语句的语句的“语句语句1”1”或或“语句语句2”2”中又包含着中

15、又包含着ifif语句语句判断表达式的值,若为非判断表达式的值,若为非0,再判断,再判断表达式表达式1的的值,非值,非0执行语句执行语句11,否则执行语句,否则执行语句12若表达式的值为若表达式的值为0,再判断,再判断表达式表达式2的值,非的值,非0执行语句执行语句21,否则执行语句,否则执行语句22功能功能:外if内嵌if共 39 页 第 2323 页下列程序段表示的数学式子下列程序段表示的数学式子? ? y=-1; y=-1; if (x!=0) if (x!=0) if (x0) y=2 if (x0) y=2* *sin(x)sin(x); ; else y=0; else y=0; 程

16、序段表示的数学式程序段表示的数学式1:1: 0 (x0) 0 (x0) 2sinx (x0)讨论讨论: :给第二个给第二个ifif行加行加 后表示的数学式?后表示的数学式? 程序段表示的数学式程序段表示的数学式2:2: -1 (x0) -1 (x0) 2sinx (x0)数学式数学式1 1程序可表示为程序可表示为: :y=-1;y=-1;if (x!=0)if (x!=0) if (x0) y=2if (x0) y=2* *sin(x);sin(x); else y=0; else y=0; 思考强调强调:ifif和和elseelse可成对出现,也可成对出现,也可不成对出现,每个可不成对出现,

17、每个elseelse都与距都与距其最近的其最近的ifif配对。配对。共 39 页 第 2424 页 if 语句的常用格式:语句的常用格式: if(表达式表达式1) 语句语句 1 else if(表达式表达式2) 语句语句 2 else if(表达式表达式3) 语句语句 3 else if(表达式表达式m) 语句语句 m else 语句语句 n仅执行表达式为真的仅执行表达式为真的else if后的内嵌语句后的内嵌语句,若所有的若所有的表达式值都为表达式值都为0,则执行最后一个则执行最后一个else后的内嵌语句后的内嵌语句.共 39 页 第 2525 页 已知已知 编写程序,输入一个编写程序,输入

18、一个x x的值,输出的值,输出y y值。值。010001)(xxxxy程序为:程序为: #include “stdio.h” main( ) int x, y; scanf(“%d”,&x); if(x0) y=-1; else if(x= 0) y=0; else y=1; printf(“x=%d, y=%dn”, x, y); 共 39 页 第 2626 页例例4-3从键盘输入一个字符,当该字符是从键盘输入一个字符,当该字符是+、 、*、/时,时,显示对应的英文单词,否则显示显示对应的英文单词,否则显示error!。#include stdio.h main( ) char c; c=g

19、etchar( ); if(c= =+ ) printf( plusn ); else if(c= = ) printf( minusn ); else if(c= = * ) printf( multiplicationn ); else if(c= = / ) printf( divisionn ); else printf( error!n ); 共 39 页 第 2727 页4.3.3 switch语句语句 该语句为开关语句,解决该语句为开关语句,解决多分支多分支的情况。的情况。格式:格式: switch(表达式)表达式) 变量定义变量定义 case 常量常量表达式:表达式:语句序列语

20、句序列 case 常量常量表达式:表达式:语句序列语句序列 case 常量常量表达式表达式n:语句序列语句序列 n default :语句序列:语句序列 n+1 功能:从多条可供选择的执行流程中选择一条功能:从多条可供选择的执行流程中选择一条说明说明:(1) 表达式可以是表达式可以是整型、字符型、枚举数据型整型、字符型、枚举数据型的表达式。的表达式。 (2)“常量表达式常量表达式1”、“常量表达式常量表达式2”“常量表达式常量表达式n”的值必须互的值必须互 不相同不相同。共 39 页 第 2828 页 a. a. 计算表达式的值;计算表达式的值; b. b. 找到与表达式的值相同的找到与表达式

21、的值相同的casecase常量表达式,执行该常量表达式,执行该casecase后边的语句序列,之后后边的语句序列,之后依次往下执行语句块依次往下执行语句块。表达式语句序列1语句序列2语句序列n语句序列n+1 共 39 页 第 2929 页每个语句序列的最后一条语句后增加每个语句序列的最后一条语句后增加break语句,执行流程为:语句,执行流程为:表达式语句序列1语句序列n语句序列n+1语句序列2共 39 页 第 3030 页 根据考试成绩的等级打印出百分制分数段。根据考试成绩的等级打印出百分制分数段。采用多分支情况程序段:采用多分支情况程序段: switch( grade ) case a :

22、 printf(“85100n”) ; break; case b : printf(“7084n”); break; case c: printf(“6069n”); break; case d :printf(“60n”); break; default : printf(“error ”); 若若 grade= a时,输出结果为时,输出结果为? 当当 grade= b时,输出结果为?时,输出结果为?共 39 页 第 3131 页流程图为:流程图为: grade输出 “85100”输出 “b ? a : bmax=ab ? a : b 若若 a=3, b=2, a=3, b=2, 则则 m

23、ax=?max=?说明说明: (1) (1) 条件运算符优于赋值运算符。条件运算符优于赋值运算符。 (2) (2) 条件运算符的结合方向为条件运算符的结合方向为“自右向左自右向左”。 如:当如:当a=1,b=2,c=3, d=4 a=1,b=2,c=3, d=4 时,时,表达式表达式 ab ? a : cd ? c : d , ab ? a : cd ? c : d , 值为:值为:? ? 如:如: 若若 x=1,y=0,a=3,b=-3x=1,y=0,a=3,b=-3 表达式表达式 (yx?a:b)&a+b (yx?a:b)&a+b 值为:值为:? 404.4 条件运算符条件运算符共 39

24、页 第 3535 页(3) 条件表达式中的表达式的类型可以与表达式条件表达式中的表达式的类型可以与表达式和表达式的类型不同。条件表达式值的类和表达式的类型不同。条件表达式值的类型为二者中较高的类型。型为二者中较高的类型。如:如: xy ? 1.2 : 6 , 当当xy成立时条件表达式的值为成立时条件表达式的值为1.2 ,否则为实型数据,否则为实型数据6.0。 c=xy ? 1 : s , 当当xy成立时成立时c=1, 否则否则c= s。共 39 页 第 3636 页if ( y0 ) x=-y;elsex=y;(y0)?x=-y:x=y;等价等价等价等价x = (y=a& ch=a& ch=3

25、000) c=12; else c= s / 250; switch( c ) case 0: d=0 ; break ; case 1: d=2 ; break ; case 2: case 3: d=5; break; case 4: case 5:多个多个case可共用一可共用一组执行语句组执行语句共 39 页 第 4242 页 case 6: case 7: d=8 ; break ; case 8: case 9: case 10: case 11: d=10 ; break ; case 12: d=15 ; break ; f=p*w*s*(1-d/100.0) ; printf

26、(“freight=%15.4f ”, f ); 运行:100,20,300结果:freight= 588000.0000共 39 页 第 4343 页例4-6 通过键盘输入三个整数,按照由小到大的顺序输出。 算法分析:在对三个数进行排序时,首先将第一个数依次与后面的两个数进行比较,若第一个数比后面的数大,则交换两个数据的值,这样即可将三个数中最小的数放在最前面;然后将后面的两个数进行比较,若第二个数大于第三个数,继续交换两个数据的值。如此可将三个数按照由小到大的顺序进行排列。 共 39 页 第 4444 页#include stdio.hmain( ) int a,b,c,t; printf(please input 3 integers:n); scanf(%d%d%d, &a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=

温馨提示

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

评论

0/150

提交评论