选择结构程序设计2ppt课件

上传人:新** 文档编号:568251538 上传时间:2024-07-23 格式:PPT 页数:32 大小:1.11MB
返回 下载 相关 举报
选择结构程序设计2ppt课件_第1页
第1页 / 共32页
选择结构程序设计2ppt课件_第2页
第2页 / 共32页
选择结构程序设计2ppt课件_第3页
第3页 / 共32页
选择结构程序设计2ppt课件_第4页
第4页 / 共32页
选择结构程序设计2ppt课件_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《选择结构程序设计2ppt课件》由会员分享,可在线阅读,更多相关《选择结构程序设计2ppt课件(32页珍藏版)》请在金锄头文库上搜索。

1、C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 第四章 逻辑运算和判别选择控制C关系运算符和关系表达式关系运算符和关系表达式逻辑运算符和运算符和逻辑表达式表达式if 语句句switch 语句句 实例例C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院第四章第四章 逻辑运算和判别选择控制逻辑运算和判别选择控制本章要点本章要点: :了解关系运算及其表达式了解关系运算及其表达式了解了解逻辑运算及其表达式运算及其表达式掌握分支掌握分支语句句ifif的运用的运用掌握多分支掌握多分支语句句 switch switch的运用的运用掌握掌握选择构

2、造程序构造程序设计C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 第四章第四章 逻辑运算和判运算和判别选取控制取控制4.1关系运算符和关系表达式关系运算符和关系表达式 一、关系运算符及一、关系运算符及优先先级 , = , , a + b 等价于等价于 c (a + b) a b != c 等价于等价于 (a b) != c a = b c 等价于等价于 a = ( b c )C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院二、关系表达式二、关系表达式 格式格式: (表达式表达式 1) 关系运算符关系运算符 (表达式表达式 2)

3、例如例如: ( a = 3) (b = 5) a b + c 留意留意: 1. 表达式可以是算表达式可以是算术表达式表达式; 关系表达式关系表达式; 逻辑表达式表达式 ;赋值表达式表达式; 字符表达式等。字符表达式等。 2. 关系表达式的关系表达式的值为逻辑值,即,即 “真真 或或 “假。假。 用用 “1 表示表示 “真,真, “ 0 表示表示 “假。假。 如如: int a = 3 , b = 2 , c = 1 ; 那么那么: a b 表达式的表达式的 值为 1 (a b ) = = c 表达式的表达式的 值为 1 f = a b c f 的的值为 C语言言程程序序设计第第四四章章四川理工

4、学院四川理工学院四川理工学院四川理工学院4.2逻辑运算符和运算符和逻辑表达式表达式 一、一、逻辑运算符及运算符及优先先级 ! , & , | , ( ! 高于高于 & 高高于于 | ) 1. ! 高于算高于算术运算符运算符, 高于关系运算符高于关系运算符, 高于高于&,高于,高于| 赋值运算符运算符 2. 结合性合性: 从左至右从左至右 例如例如: (a b) & (cd) 等价于等价于 ab& cd !a&b |x y&c 等价于等价于 (!a)&b | ( x y)&c (!a = b)|(x =y) 等价于等价于 !a = b | x = y C语言言程程序序设计第第四四章章四川理工学院

5、四川理工学院四川理工学院四川理工学院 二、二、逻辑表达式表达式 如如: ( m = a b ) & (n = c d ) C 言言语中中逻辑表达式的表达式的值为 “1 或或 “0 。 在判在判别 一个数一个数值量能否量能否为 “真真 时, 以以 “0 代表代表“假假 ,以,以 “非非 0 代表代表“真真 。 留意留意: (1) 逻辑表达式的表达式的值只能只能为“1或或“0。 在表达式中不同位置上出在表达式中不同位置上出现数数值,应正确区分正确区分 那些是作那些是作为数数值运算或是关系运算,那些是运算或是关系运算,那些是 逻辑运算运算对象。象。 (2) 在在逻辑表达式的求解中,并非一切的表达式的

6、求解中,并非一切的逻辑运算运算 符都被符都被执行。行。 1.如如: a = 4 那么那么 !a 为为 0 a = 4 , b= 5 那么那么 a&b 的值为的值为 1 4&0|2 那么表达式的值为那么表达式的值为 1 留意留意: (1) 如如: 5 3&2|8 3 是关系运算是关系运算, 值为1; 1 & 2 是是逻辑运算,运算,值为1; !0 是是逻辑运算,运算,值为 1; 4 1是算是算术运算,运算,值为 3 ; 8 b) & (n=cd) 表达式中表达式中n仍仍为1 留意留意: (1) 如如: 5 3&2|8 3 是关系运算是关系运算, 值为1; 1 & 2 是是逻辑运算,运算,值为1;

7、 !0 是是逻辑运算,运算,值为 1; 4 1是算是算术运算,运算,值为 3 ; 8 b) & (n=cd) 表达式中表达式中n仍仍为1例如例如例如例如例如例如例如例如: C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院例如例如: 4.3 if 语句句 一、一、if 语句的方式句的方式 1. if (表达式表达式 ) 语句句 例如例如: if ( x y ) printf ( “ %d , x ) ; 表达式表达式语句语句根本型根本型 1. 举例 if ( x y ) printf ( “ %d , x ) ; if 语句句实例例 从从键盘输入一个整数入一个整数

8、,假假设大于大于60,就就输出出这个数。个数。main( ) int x, y; y = 60; printf(“Please input x:); scanf(“%d,&x); if (x y)printf(“%d, x);实实例例例例C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院例如例如: 4.3 if 语句句 一、一、if 语句的方式句的方式 2. if (表达式表达式 ) 语句句 1 else 语句句 2 例如例如: if ( x y ) printf ( “ %d ,x ) ; else printf ( “ %d , y ) ;表达式表达式语句语句

9、 2语句语句 1规范型规范型 2. 例如例如: if ( x y ) printf ( “ %d ,x ) ; else printf ( “ %d , y ) ;if 语句句实例例 从从键盘输入两个整数,入两个整数,输出出较大的一个数。大的一个数。main( ) int x, y; printf(“Please input x, y:); scanf(“%d,%d,&x, &y); if (x y) printf(“%d, x); else printf(“%d, y);实实例例例例C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 3. if (表达式表达式

10、1 ) 语句句 1 else if (表达式表达式 2 ) 语句句 2 else if (表达式表达式 3 ) 语句句 3 else if (表达式表达式m) 语句句 m else 语句句 n流程图流程图 switch 多分支构造表示多分支构造表示图重点重点重点重点假假表达表达式式1 1表达表达式式2 2语句语句 1 1语句语句 2 2语句语句 n n语句语句 n+1 n+1真真表达式表达式n n真真假假真真假假假假C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院阐明明: 表达式表达式:可以是各种可以是各种类型的表达式或恣意的型的表达式或恣意的 数数值类型型(

11、整型、整型、实型,字符型,指型,字符型,指针型数据型数据) else 不能不能单独运用,它是独运用,它是 if 的一部分。的一部分。 if 和和else后的后的语句句为复合复合语句句时,应加加 号。号。表达式类型表达式类型反例反例正例正例如如: if ( a= = b& x = = y) printf ( “ a = b , x = y ) ; if ( a ) printf (“This is a char ) ; if ( 10 ) printf ( “ O.K ) ;正例正例 如如: if ( a b) a += 2 ; b = 1 ; else a = 1 ; b += 2 ; 反例反

12、例if ( a b) a += 2 ; b = 1 ; else a = 1 ; b += 2 ;/*b += 2 语句句总要要执行行*/正例正例if ( a b) a += 2 ; b = 1 ; /* 复合复合语句必需加句必需加 号号 */else a = 1 ; b += 2 ; 正例正例正例正例if 语句反例句反例if ( a b) a += 2 ; b = 1 ; else a = 1 ; b += 2 ; /* b += 2 语句句总要要执行行 */实实例例例例if语句的表达式句的表达式可以是各种可以是各种类型的表达式型的表达式或恣意的或恣意的 数数值类型型如如: if ( a=

13、= b& x = = y) printf ( “ a = b , x = y ) ; if ( a ) printf (“This is a char ) ; if ( 10 ) printf ( “ O.K ) ;正例正例正例正例C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院阐明明: 表达式表达式:可以是各种可以是各种类型的表达式或恣意的型的表达式或恣意的 数数值类型型( 整型、整型、实型,字符型,指型,字符型,指针型数据型数据) else 不能不能单独运用,它是独运用,它是 if 的一部分。的一部分。 if 和和else后的后的语句句为复合复合语句句时,应

14、加加 号。号。表达式类型表达式类型反例反例正例正例如如: if ( a= = b& x = = y) printf ( “ a = b , x = y ) ; if ( a ) printf (“This is a char ) ; if ( 10 ) printf ( “ O.K ) ;正例正例 如如: if ( a b) a += 2 ; b = 1 ; else a = 1 ; b += 2 ; 反例反例if ( a b) a += 2 ; b = 1 ; else a = 1 ; b += 2 ;/*b += 2 语句句总要要执行行*/正例正例if ( a b) a += 2 ; b

15、= 1 ; /* 复合复合语句必需加句必需加 号号 */else a = 1 ; b += 2 ; 正例正例正例正例if 语句反例句反例if ( a b) a += 2 ; b = 1 ; else a = 1 ; b += 2 ; /* b += 2 语句句总要要执行行 */实实例例例例if语句的表达式句的表达式可以是各种可以是各种类型的表达式型的表达式或恣意的或恣意的 数数值类型型如如: if ( a= = b& x = = y) printf ( “ a = b , x = y ) ; if ( a ) printf (“This is a char ) ; if ( 10 ) prin

16、tf ( “ O.K ) ;正例正例正例正例C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 例例 5.1 将二个数将二个数进展升序排序展升序排序 main ( ) float a , b , t ; scanf ( “ %f , %f , &a , &b) ; if ( a b) t = a ; a = b ; b = t ; printf ( “ %5.2f , %5.2f , a , b ) ; 运运转结果果: 3.6 , 3.2 3.20 , 3.60 例例 5.1 将二个数进展升序排序将二个数进展升序排序 例例 5.2 将三个数进展升序排序将三个数进展

17、升序排序 例例 5.2 将三个数将三个数进展升序排序展升序排序 main ( ) float a , b , c , t ; scanf ( “ %f,%f ,%f , &a , &b , &c) ; if ( a b) t = a ; a = b ; b = t ; if ( a c) t = a ; a = c ; c = t ; if ( b c) t = b ; b = c ; c = t ; printf(“%5.2f,%5.2f ,%5.2f ,a ,b , c); 二个数升序淅程序二个数升序淅程序三个数升序淅程序三个数升序淅程序 将二个数将二个数进展升序排序展升序排序 main

18、( ) float a , b , t ; scanf ( “ %f , %f , &a , &b) ; if ( a b) t = a ; a = b ; b = t ; printf ( “ %5.2f , %5.2f , a , b ) ; 运运转结果果: 3.6 , 3.2 3.20 , 3.60 例例 5.1 例如例如例如例如 将三个数将三个数进展升序排序展升序排序 main ( ) float a , b , c , t ; scanf(“%f,%f ,%f ,&a, &b, &c); if ( a b) t = a ; a = b ; b = t ; if ( a c) t =

19、a ; a = c ; c = t ; if ( b c) t = b ; b = c ; c = t ; printf(“%5.2f,%5.2f ,%5.2f ,a ,b,c);例例 5.2 例如例如例如例如C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 二、二、if 语句的嵌套语句的嵌套 if语句中又包含一个或多个语句中又包含一个或多个if语句叫语句叫 if语句的语句的嵌套。嵌套。 普通方式普通方式: if (表达式表达式1) else 内嵌内嵌 if 语句语句内嵌内嵌 if 语句语句if (表达式表达式2) 语句句 1else 语句句 2if (表达式表

20、达式3) 语句句 3else 语句句 C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院留意留意 : if和和else的配的配对关系关系:一个一个else总是和它上面离是和它上面离 它最近的且没有与其它它最近的且没有与其它 else 配配对的的 if 配配对。 如如if和和else的数目不等,的数目不等,应分分辩else 与哪个与哪个if 配配对,必要,必要时可可经过加加 号来确定配号来确定配对关系。关系。 例如例如: if ( ) if ( ) 语句语句1 else 语句语句C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 例例

21、5.3 (p95) 程序程序1. main ( ) int x , y ; scanf ( “%d , &x) ; if ( x 0 ) y = 1 ; else if ( x = = 0 ) y = 0 ; else y = 1; printf(“x=%d,y=%dn, x, y); 输入输入 xx = 0 ) if ( x 0 ) y = 1 ; else y = 0 ; else y = 1; printf(“x=%d,y=%dn, x, y); C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 三、条件运算符和条件表达式三、条件运算符和条件表达式 条件运

22、算符条件运算符: ? : C中独一的一个三元中独一的一个三元(三目三目)运算运算符。符。 条件表达式条件表达式: 表达式表达式1 ? 表达式表达式2 : 表达式表达式3 阐明阐明: 1. 条件表达式的值可以是表达式条件表达式的值可以是表达式2的值或表达式的值或表达式3的的值,值, 结果取决于表达式结果取决于表达式1。 2. 条件运算符的优先级高于赋值运算符而低于算术、条件运算符的优先级高于赋值运算符而低于算术、 关系、逻辑运算符。关系、逻辑运算符。 3. 条件表达式可嵌套,条件表达式可嵌套,结合性合性为“从右至左。从右至左。 5. 表达式表达式1、2、3 的数据类型可不同,此时的数据类型可不同

23、,此时 条件表达式值的类型为高类型。条件表达式值的类型为高类型。 4. 条件表达式有时可以替代条件表达式有时可以替代 if 语句,语句, 但条件表达式不能取代普通的但条件表达式不能取代普通的 if 语句。语句。 2。例如:。例如:max=(a b) ? a : b 等价于等价于 max = a b ? a : ba + b ? a :b + 1 等价于等价于 (a + b) ? a : ( b + 1 )3。如。如: a b? a: c d?c:d 等价于等价于 a b?a : (c d ? c : d)即即: 表达式表达式3又是一个条件表达式。又是一个条件表达式。4。如。如: if ( a

24、b ) max = a ; else max = b ; 等价于:等价于: max = ( a b) ? a : b ; 如如: if ( a b ) printf ( “ %d , a ) ; else printf ( “ %d , b ) ; 但可以用但可以用: printf ( “ %d , ab a:b ) ; 2. 例例优先级举例优先级举例如:如: max=(a b) ? a : b 等价于:等价于: max = a b ? a : b而:而:a + b ? a : b + 1 等价于等价于 (a+b)?a:(b+1)2 23. 例例 结合性合性“从右至左从右至左如如: a b?

25、a: c d?c:d 等价于等价于: a b ? a : (c d ? c : d )即即: 表达式表达式3又是一个条又是一个条件表达式。件表达式。3 34. 例例有时可以替代有时可以替代 if 语句语句如如: if ( a b ) max = a ; else max = b ; 等价于:等价于: max = ( a b) ? a : b ; 4 45.例如例如: x ? a : b ( x 为整型整型 ) x y ? 1 : 1.5 假假设 x y , 那么那么值为1,由,由于于1.5 是是实型,故将型,故将 1 转换成成实型型值 1.0 5. 例例 条件表达式条件表达式值的的类型型为高高

26、类型型 x ? a : b ( x 为整整型型 ) x y ? 1 : 1.5 假假设 x y , 那么那么值为1,由于由于1.5 是是实型,故将型,故将 1 转换成成实型型值 1.0 5 C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 补充例题: main ( ) int m = 10 , n = 5 , a = 5 , b = 5 ; int x , y , z ; x = m = = n+ ? m : +n ; y = +a +a ? +b : a ; z = z += z = m + n + a + b ; printf(“%d,%d,%dn, x,

27、y, z ) ; 等价于等价于 x=(m=n+)?(m) : (+n ) x为为7,此时,此时 m ,n分别为分别为 9 , 7。等价于等价于y=+a +a ? + b : a ) y=+a=A&ch= 65&ch = 90 )?(ch + 32 ) : ch ; putchar(ch ) ; C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院switch语句流程表示句流程表示图多分支构造也可用多分支构造也可用if语句嵌套实现语句嵌套实现4.4 switch 语句句 (多分支或开关多分支或开关语句句) 普通格式普通格式: switch ( 表达式表达式 ) cas

28、e 常量表达式常量表达式1 : 语句句 1 case 常量表达式常量表达式2 : 语句句 2 . case 常量表达式常量表达式n : 语句句 n default : 语句句 n + 1 留意冒号留意冒号普通格式普通格式: 流程表示流程表示图if多分支构造多分支构造流程表示图流程表示图重点重点重点重点 switch 多分支构造表示图多分支构造表示图重点重点重点重点表达式表达式表达式表达式= = = =常量表达式常量表达式常量表达式常量表达式1 1 1 1表达式表达式表达式表达式= = = =常量表达式常量表达式常量表达式常量表达式2 2 2 2表达式表达式表达式表达式= = = =常量表达式常

29、量表达式常量表达式常量表达式n n n n语语句句句句1 1 1 1语语句句句句2 2 2 2语语句句句句n n n ndefaultdefaultdefaultdefault语语句句句句n+1n+1n+1n+1breakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreak假假表达表达式式1 1表达表达式式2 2语句语句 1 1语句语句 2 2语句语句 n n语句语句 n+1 n+1真真表达式表达式n n真真假假真真假假假假C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理

30、工学院default:switch case D : break; A : 例:根据例:根据键盘输入的等入的等级,输出出对应的分数段的分数段main ( ) char grade ; scanf (“%c, &grade ); ( ) case printf(“85100n); case B : printf(“7084n); break; case C : printf(“6069n); break; case E: printf(“60n); break; printf(“errorn); break; 阐明阐明: 1. 表达式可为任何数据类型。普通表达式可为任何数据类型。普通是一个是一个

31、 整数表达式整数表达式(或字符表达式或字符表达式),与之相应,与之相应 case 后面应是一个整数后面应是一个整数或字符。或字符。 2. 每个每个 case 后的常量表达式的值互后的常量表达式的值互不相等。不相等。3.例如例如: 假设输入假设输入 A 输出为输出为:85 10070 8460 69 60 n ) ; break ; . 5. switch 语句可以嵌套。语句可以嵌套。gradegradeswitch阐明阐明1 表达式可为任何数表达式可为任何数据类型。普通是一个据类型。普通是一个 整数整数(或字符或字符)表达式,表达式,与之相应与之相应 case 后面应后面应是一个整数或字符。是

32、一个整数或字符。重点重点重点重点 switch阐明阐明2 每个每个 case 后的常量后的常量表达式的值互不相等。表达式的值互不相等。 冒号与常量表达式一冒号与常量表达式一同构成标号,不能省,同构成标号,不能省,重点重点重点重点main ( ) char grade ; scanf (“%c, &grade ); switch ( grade ) case A: printf(“85100n); break; case B : printf(“7084n);break; case C : printf(“6069n);break; case D : printf(“60n);break; de

33、fault : printf(“errorn); break; switch阐明阐明3 break语句的功能语句的功能是跳出是跳出switch构造。构造。 假设省略此处及后面假设省略此处及后面的的break语句后,程序将语句后,程序将顺序执行,不再属于多顺序执行,不再属于多分支构造。分支构造。 重点重点重点重点 switch语句语句 阐明阐明4 多个多个 case 可以共用可以共用一组执行语句。一组执行语句。重点重点重点重点 switch语句语句 阐明阐明5 switch 语句可以嵌套。语句可以嵌套。break语句只能跳出本层的语句只能跳出本层的switch语句。语句。参见习题内容。参见习题内

34、容。重点重点重点重点 switch语句语句 阐明阐明6 default的功能与程序中的功能与程序中的位置无关。的位置无关。参见习题内容。参见习题内容。重点重点重点重点C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 例: 以下程序的输出是: main ( ) int x = 1 , y = 0 , a = 0, b = 0 ; switch ( x ) case 1 : switch ( y ) case 0 : a+; break ; case 1 : b+; break; case 2 : a+ ; b+ ; break ; case 3 : a+ ; b+

35、 ; printf ( “a = %d , b = %d n , a , b ) ; A) a = 1 , b = 0 B) a = 2 , b = 1C) a = 1 , b = 1 D) a = 2 , b = 2答案答案: BC语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 例例 4.6 求求 ax2 + bx + c = 0 方程的解方程的解 #include “math.h main ( ) float a ,b,c,disc,x1,x2,realpart,imagpart ; scanf ( “%f , %f , %f , &a , &b , &c

36、) ; if (a 0 ) x1 = ( b + sqrt (disc) / ( 2*a) ; x2 = ( b sqrt (disc) / ( 2*a) ; printf (“ x1=%8.4f,x2=%8.4f, x1, x2 ) ; C语言言程程序序设计第第四四章章四川理工学院四川理工学院四川理工学院四川理工学院 else realpart = b / (2*a) ; imagpart = sqrt ( disc) / (2*a) ; printf ( “It has complex roots :n ) ; printf(“%8.4f+%8.4fin,realpart, imagpart ); printf(“%8.4f%8.4fi n,realpart,imagpart ); 运转结果: 1 , 2 , 1 The equation has two equal roots : 1.0000 假设输入: 1 , 2 , 2 The equaton has complex roots : 1.0000 + 1.0000 i 1.0000 1.0000 i

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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