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

下载本文档

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

文档简介

选择结构程序设计,一、关系运算符和关系表达式 二、逻辑运算符和逻辑表达式 三、if语句 四、switch语句 五、程序举例 习题,主要内容,本章要点,关系表达式 逻辑表达式 选择结构程序设计,引言,选择结构的作用:根据所指定的条件是否满足,决定从给定的若干组操作选择其一。 例如: if ( x0 ) y=1; else y=-1; 要设计选择结构程序,要考虑两个方面的问题: 一是在C语言中如何来表示条件。 二是在C语言中实现选择结构用什么语句。,一、关系运算符和关系表达式,关系运算符:比较两个量的运算符。,C语言提供6种关系运算符: (小于) = (小于或等于) (大于) = (大于或等于) = = (等于) != (不等于),优先级别相同(高),优先级别相同(低),举例: cb+b 等效于 c(a+b) ab= =c 等效于(ab)= =c a= =bc 等效于a=(bc),一、关系运算符和关系表达式,算术运算符、关系运算符、赋值运算符优先级比较,关系表达式(左结合性),一、关系运算符和关系表达式,定义:用关系运算符将两个表达式连接起来的式子。,算术表达式 关系表达式 逻辑表达式 赋值表达式 字符表达式,关系表达式的值是一个逻辑值,即“真”或“假” 1代表真,0代表假 一个非零的数值认作为“真”,一般形式:表达式 关系运算符 表达式,逻辑运算符及其优先次序,二、逻辑运算符和逻辑表达式,C语言提供3种逻辑运算符: & (逻辑与) AND | (逻辑或) OR ! (逻辑非) NOT,说明: & 和 | 是双元/目运算符,它要求有两个运算量。 ! 是一元/单目运算符,它要求有一个运算量。 如: (ab)|(xy); !(ab),逻辑运算举例: (1) a&b 只有a,b都为真,则a&b为真。 a|b 只要a,b有一个为真,则a|b为真。 !a 若a为真,则!a为假。 (2)如a=7、b=8、c=9、a1=-7,求下列的值。 ab&bc a+a1|b+a1 ab|cb !a&!b !a|b,二、逻辑运算符和逻辑表达式,逻辑表达式,二、逻辑运算符和逻辑表达式,一般形式:表达式 逻辑运算符 表达式,运算规则: 只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。 对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数。 对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数。,例如: 假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、5、6, 求表达式“(x=n1n2)&(y=n3n4)”的值。,X=0,y=6,例题:逻辑表达式 main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(“%d,%dn“,!x*!y,!x); printf(“%d,%dn“,x|i ,!x*!y为 0,!x的逻辑值为 0,x|i&j-3的逻辑值为 1,ij&xy为 0,i=5&c&(j=8)为 0,x+y|i+j+k为 1,二、逻辑运算符和逻辑表达式,例题:写出下列条件: (1)判断年份year是否为闰年。 (2)判断ch是否为小写字母。 (3)判断m能否被n整除。 (4)判断a是否为整数。 (5)判断ch既不是字母也不是数字字符。,三、if语句,if语句的作用:用来判定所给定的条件是否满足,并根据判定的结果(真或假)决定执行给出的两种操作之一。 例如: if (x0) printf(“%f“,x); else printf(“%f“,-x); if语句有三种基本形式。 1. If 2. if-else 3. if-else-if 前二种形式的if语句一般都用于两个分支的情况。 当有多个分支选择时,可采用if-else-if语句。,1、if语句,三、if语句,流程图,例如:输入两个数a,b,判断并输出其中较大的数。,main() int a,b,max; printf(“n input two numbers:“); scanf(“%d%d“, ,2、if-else语句,三、if语句,例如:输入两个数a,b,判断并输出其中较大的数。,main() int a, b; printf(“input two numbers:“); scanf(“%d%d“, ,流程图,3、If-else-if语句,三、if语句,if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m else 语句n;,流程图,其语义是: 依次判断表达式的值, 当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。,例如: if(number500) cost=0.15; else if(number300) cost=0.10; else if(number100) cost=0.075; else if(number50) cost=0.05; else cost=0;,3、If-else-if语句,三、if语句,if语句中应注意的问题,三、if语句,在三种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。 例如: if(a=5) 语句; if(b) 语句;只要表达式的值为非0,即为“真”。 又如: if(a=b) printf(“%d“,a); else printf(“a=0“);,本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的。,if语句中应注意的问题(续),三、if语句,在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。if (ab) max=a; 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。但要注意的是在之后不能再加分号。 例如: if(ab) a+;b+; else a=0;b=10;,例题:输入3个数a,b,c,要求按由小到大的顺序输出。,三、if语句,思路:,如果va vb的值,则 va与vb交换。 即:if(ab) 则 ab,此时,a的值较小,但不是最小,要与c比较; 即:if(ac) 则 ac,此时,a的值最小; 然后比较b的值和c的值。,例题:输入3个数a,b,c,要求按由小到大的顺序输出。 main( ) float a,b,c,t; scanf(“f,f,f“,&a,&b,&c); if(ab) t=a;a=b;b=t; /* 实现a和b的互换 */ if(ac) t=a;a=c;c=t; /* 实现a和c的互换 */ if(bc)t=b;b=c;c=t; /* 实现b和c的互换 */ printf(“52f,52f,52f“,a,b,c); ,三、if语句,三、if语句if语句的嵌套,在if语句中又包含一个或多个if语句,称为if语句的嵌套。,一般形式:,if ( ),if ( ) 语句1 else 语句2,else,if ( ) 语句3 else 语句4,内嵌if,内嵌if,else总是与它前面最近的if配对,例题:比较两个数的大小关系。 main() int a,b; printf(“please input A,B: “); scanf(“%d,%d“, ,三、if语句if语句的嵌套,输出: please input A,B:3,5 AB,条件运算符: ? : 格式:表达式1 ? 表达式2 : 表达式3 使用场合:若在if语句中,当被判别的表达式的值为 “真”或“假” 时,都执行一个赋值语句且向同 一个变量赋值时,可以用一个条件运算符来 处理。,三、if语句条件运算符,例如: if(ab) max=a; else max=b;,相当于 max=(ab)? a : b;,说明,三、if语句条件运算符,max=(ab)?a:b max=ab?a:b,1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。 2)条件运算符?和:是一对运算符,不能分开单独使用。 3)条件运算符的结合方向是自右至左。,ab?a:cd?c:d ab?a:(cd?c:d),例题:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。,三、if语句条件运算符,main() char ch; scanf(“%c”, ,四、switch语句,switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n1 ,一般形式:,其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。,改良版,改良switch,四、switch语句,switch (表达式) case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; case 常量表达式n:语句n;break; default:语句n1 ,说明: 1)在case后的各常量表达式的值不能相同,否则会出现错误。 2)在case后,允许有多个语句,可以不用括起来,没有语句时,什么也不做,执行后面case的语句,直到遇到break。 3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 4)default子句可以省略不用。,例题:按照输入的考试成绩的等级打印出百分制分数段。,四、switch语句,#include main() char grade; printf(“please input the grade(A,B,C,D): “); grade=getchar(); switch (grade) caseA: printf(“85100n“);break; caseB: printf(“7084n“);break; caseC: printf(“6069n

温馨提示

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

评论

0/150

提交评论