选择结构程序设计.ppt_第1页
选择结构程序设计.ppt_第2页
选择结构程序设计.ppt_第3页
选择结构程序设计.ppt_第4页
选择结构程序设计.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第五章 选择结构程序设计,5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 if语句 5.4 switch语句 5.5 程序举例,5.1 关系运算符和关系表达式,注意 : (1) 字符数据按其ASCII码值进行比较 (2) 应避免两个实数作 = = 或 != 的比较,一、关系运算符 = = = != 1. 优先级 : 低于纯算术类, 高于赋值类 2. 结合性 : 左结合性,二、关系表达式: 用关系运算符连接起来的式子 关系表达式的值 : 只有2个, 真以 1 表示 , 假以 0 表示,注意: (3) 表达式 5278 是允许的 , 它相当于 (52)7)8 (4) 可以将关系表达式看成是一种整型表达式,关系表达式: 注意: 关系表达式的值应是逻辑值, 在C中无逻辑型 数据。 若关系表达式成立,其值为1;在C中非零的值均 表示逻 辑真 若关系表达式不成立, 其值为零;零表示逻辑假。,5.2 逻辑运算符和逻辑表达式,一、 逻辑运算符 & | ! (与 或 非) 3个运算符的优先级由高到低为 ! & | ! 的优先级高于关系运算, &和 | 的优先级 低于关系运算 ! 是右结合性, & 和 | 是左结合性 ,二、逻辑表达式 1.逻辑表达式的值应该是“逻辑真”或“逻辑假”, 逻辑运算的结果以数值1代表“真”, 以数值0代表“假”; 进行判断时, 非零值代表“真”, 零值代表“假”,例: 表示 x -1,1区间 应写为: x=-1 & x=1,2.逻辑运算中的规律 (1) 在& 表达式中, 若左端为0, 则不必再计算右端, 表达式值为0 即: 0 & a = 0 (2) 类似有 1 | a = 1,规律: 0|a =a 0&a=0 1|a=1 1&a=a a|a=a a&a=a a|!a=1 a&!a=0 !(a|b)=!a&!b !(a&b)=!a|!b,已知:c (char); i, j, k (int); x,y (double) ; c = w, i = 1, j = 2, k = -7, x = 7e+033, y = 0.001 a+1c (a+1)c 1 3j5 (3j)5 1 1-0= =1 (1-0)= =1 1 1= =0+1 1= =(0+1) 1 xx+y x(x+y) 1 i+j+k =-2*j (i+j)+k) =-2*j 1 ij= =xy (ij)= =(xy) 0 i=j= =ky i=(j= =(ky) ) 0,表达式 等价表达式 表达式值,i=ky i=(ky) 1,表达式 等价表达式 表达式的值,2.逻辑表达式: (C的任何一种表达式均可) 已知: c(char); i,j,k (int); x,y (double), c=w, i=j=k=3, x=0.0,y=2.3 i & j & k (i & j) & k 1 x & i | j -2 (x & i) | (j-2) 1 x | i & j -3 x | (i & (j-3) 0 i j & x y (ij) & (xy) 0 i = = j & x = y (i= =j) & (x=y) 1 x!=y&j+1= =!k+4 (x!=y) & (j+1)= = (!k)+4) 1 A=c & c=Z (A = c) & (c = Z) 0 i=i= =2|j= =4|k=6 i=(i= =2) | (j= = 4) | (k= =6) 0,! + - 算术运算符 关系运算符 = = != & |,已学过的运算符优先级如下:,赋值和复合赋值符 逗号运算符,运算符和结合性,优先级 运算符 含义 要求运算 结合方向 对象的个数,圆括号 下标运算符 指向结构体 成员运算符 结构体成员运算符 逻辑非运算符 按位取反运算符 自增运算符 自减运算符 负号运算符 类型转换运算符 指针运算符 地址,与运算符 长度运算符 乘法运算符 除法运算符 求余运算符 加法运算符 减法运算符,1,2,3,4,( ) . ! + - - - (类型) * & sizeof * / % + -,1 (单目运算符),2 (双目运算符),2 (双目运算符),自右至左,5,9,10,11,2 (双目运算符),2 (双目运算符),2 (双目运算符),优先级 运算符 含义 要求运算 结合方向 对象的个数,左移运算符 右移运算符 关系运算符 等于运算符 不等于运算符 按位与运算符 按位异或运算符 按位或运算符 逻辑与运算符 逻辑或运算符 条件运算符 赋值运算符 逗号运算符 (顺序求值运算符),6,7,8,12,13,14,15, = = = != & ! & |,? :,= += &=,2 (双目运算符),2 (双目运算符),2 (双目运算符),2 (双目运算符),2 (双目运算符),3 (三目运算符),2,自右至左,自右至左,5.3 if语句,一、if 语句的两种形式 1. 单分支形式: if ( 表达式 ) 语句,2. 双分支形式: if ( 表达式 ) 语句1 else 语句2,执行过程: 先计算表达式的值, 如果值为1, 就执行其后的 语句, 如果值为0, 就继续向下执行.,执行过程: 先计算表达式的值, 如果值为1, 就执行其后的 语句1, 如果值为0, 就执行else后的语句2,说明: 1. 语句可以是简单语句或复合语句 2. 表达式一般为逻辑或关系表达式, 且应用( )括起来,#include #include void main( ) int x, y; scanf(“%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,格式 功能 if (表达式) 语句 if (表达式) 语句1 else 语句2 if(表达式1)语句1 else if (表达式2) 语句2 else if(表达式n) 语句n else 语句n+1,-,表达式值非0?,表达式值非0?,表达式值非0?,表达式值非0?,表达式1值非0?,表达式2值非0?,表达式3值非0?,表达式n值非0?,语句,语句,语句 1,语句2,语句1,语句2,语句2,语句n+1,语句3,语句n,语句1,Y,N,Y,Y,Y,Y,Y,Y,Y,N,N,N,N,N,N,.,条件语句,例: 输入3个数, 按由小到大的顺序输出,#include void main( ) int a,b,c,t; scanf(“%d%d%d”, ,二、 if 语句的嵌套 : 在if 语句中又包括一个或多个if 语句,规定: 在if 嵌套结构中, else是与其前面最近的尚未配对的if 配对(就近原则),所以第一种理解是正确的。,1. if (表达式1) if (表达式2) 语句,4. if (表达式1) if (表达式2) 语句1 else 语句2,2. if (表达式1) 语句1 else if (表达式2) 语句2,3. if (表达式件1) 语句1 else if (表达式2) 语句2 else 语句3,对第4种形式可以有两种理解方式: (1) if (表达式1) if (表达式2) 语句1 else 语句2 ,(2) if (表达式1) if (表达式2) 语句1 else 语句2,方法1 if (x0) y=-1; else if (x=0) y=0; else y=1;,方法2 if (x=0) if (x0) y=1; else y=0; else y=-1;,方法3 y=-1; if(x!=0) if(x0) y=1; else y=0;,修改方法3 y=-1; if(x!=0) if(x0) y=1; else y=0;,例: 试编程,当键入+,-,*,/ 时, 分别计算并输出x+y, x-y, x*y, x/y的值 main ( ) int x,y ; char c1; scanf (“x=%d, y=%d, c1=%c”, ,三、 条件运算,例 max=ab? a : b+1 ab? a : cd? c : d,注意: (1) 表达式1, 表达式2和表达式3 的数据类型可以互不相同 (2) 条件表达式的值的数据类型与表达式2, 表达式 3中数 据类型较高的那个保持一致 如 75? 10 : 1.4 条件表达式的值为10.0,ab? a : (cd? c : d ),1. 条件运算符 ? : ( 唯一的三目运算符) 优先级仅高于赋值类, 是右结合性,执行过程: 先计算表达式1 , 若其值为非零值(真), 则计算表达式2 的值, 该条件表达式的值即为表达式2 的值; 若表达式1的值为零(假), 则计算表达式3 的值, 该条件表达式的值即为表达式3 的值,2. 条件表达式的一般形式 : 表达式1? 表达式2 : 表达式3,max=(ab? a : b+1),用条件表达式实现 #include void main( ) int max; max=xy? x : y ; max=zmax? z : max; printf(“max=%d”,max); ,当if中的语句为简单赋值语句时,我们可以用条件表达式 来取代if 语句,例 求3个数中的最大数 #include void main( ) int max; if (xy) max=x; else max=y; if (zmax) max=z; printf(“max=%d”,max); ,5.4 switch语句,一、switch语句的格式 switch ( 表达式 ) case 常量表达式1 : 语句1 case 常量表达式2 : 语句2 : : : case 常量表达式n : 语句n default : 语句n+1 ,注意: 1. 表达式一般多为整型或字符型表达式 2. case后常量表达式的值必须互不相同 3. case和default的出现次序不影响结果 4. 语句1至语句n+1为复合语句时可省略 5. 多个case可以共用一组执行语句 6. Switch语句可以嵌套,格式: switch (表达式) case 常量表达式1: 语句系列1 case 常量表达式2: 语句系列2 . . . case 常量表达式n: 语句系列n default : 语句系列n+1 功能: (条件: 语句系列1-语句系列n 后均有 break 语句 ),表达式值=时该开关合上,计算表达式值,.,语系1,语系2,语系n,语系n+1,表达式值与某 常量表达式值 相匹配,则对应开关合上,执行对应语句系列,switch语句的执行过程 : 计算switch后表达式的值 如果表达式的值与某个case常量表达式的值相等时, 就执行此case后的语句, 执行完后将继续执行下一个case后的语句, 如果表达式的值与所有case常量表达式的值都不同, 就执行default后的语句,例 void main ( ) int x, y ; scanf(“%d” , ,如果输入x为 2 则输出: 20 30 0,如果输入x为 6 则输出: 0,注意 : 在执行一个case 分支后, 应用break语句结束switch语句,void main ( ) int x, y ; scanf(“%d” , ,如果输入x为 2 则输出: 20,如果输入x为 6 则输出: 0,例:用 switch 编程,当键入+ , - , * ,/ 时, 分别计算并输出x+y, x-y, x*y, x/y的值 main( ) int x,y; char c1; scanf(“x=%d, y=%d, c1=%c”, ,课 后 作 业,课本P104 习题5.3 5.5 5.6 5.9,习题5.3 (1)a+bc成立但是b=c不成立,所以表达式的值为0 (2)等价于a|(b+c)&(b-c),a=3成立,所以值为1 (3)值为1 (4)值为0 (5)等价于(!(a+b)+c-1)&(b+c/2),值为1,习题5.5 main() int x,y; scanf(“%d”, ,X1,否,y=x,1=x10,是,是,否,y= 2x-1,y= 3x-11,习题5.6 main() float s; char c; int i; printf(“ninput a score:“); scanf(“%f“, ,习题5.9 main() int a5,x,i; printf(“ninput 4 numbers:“); scanf(“%d%d%d%d“, 为a3的值*/,if(xa4) /*若x大于a4,则将x中的改 x=a4;i=4; 为a4的值*/ (总之,保证x中是四个数中最小的数的值) if(i!=1) /*若i的值不等于1,则说明x中的 ai=a1; 不再是a1的值,将a1的值与 a1=x; 四个数中最小值相交换*/ x=a2;i=2; if(xa3) /*从x=a2开始,依次与a3和 x=a3;i=3; a4比较,保证x中存放三个数 if(xa4) 中的最小值。将x的传给a2 */ x=a4;i=4; ,if(i!=2) ai=a2;a2=x; x=a3;i=3; if(xa4) /*从x=a3开始,与a4比较, x=a4;i=4; 使x中存放a3 和a4中的 if(i!=3) 最小值。将x的传给a3 */ ai=a3,a3=x; printf(“a1=%d,a2=%d,a3=%d,a4=%d“,a1,a2,a3,a4); ,设置C语言编程环境: 1、若机器中没有TC.EXE,则到网上下载。地址是:48,其中有一个名为“system”的文件夹,打开之后找名为“教学软件”的文件夹,打开

温馨提示

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

评论

0/150

提交评论