《选择结构设计》PPT课件.ppt

上传人:za****8 文档编号:14450056 上传时间:2020-07-21 格式:PPT 页数:42 大小:312KB
返回 下载 相关 举报
《选择结构设计》PPT课件.ppt_第1页
第1页 / 共42页
《选择结构设计》PPT课件.ppt_第2页
第2页 / 共42页
《选择结构设计》PPT课件.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
第5章 选择结构程序设计,5.1 关系运算符和关系表达式,5.1.1 关系运算符及其优先次序,1. C语言的6种关系运算符: = = = !=,2. 优先次序, = (同级) = = != (同级),高,低,3. 结合方向: 左结合 注意:关系运算符的优先级低于算术运算符,但高于赋值运算符。,例如: aa+b 等效于 c(a+b) 算术运算符 ab=c 等效于 (ab)=c 关系运算符 a=bc 等效于 a=(bc) 赋值运算符,5.1.2 关系表达式 1概念:用关系运算符将两个表达式连接起 来的式子,称关系表达式。,例:a/21+3b (a=3)(b=5) ab)(bc),2关系表达式的值 关系表达式成立时, 其值为1 关系表达式不成立时, 其值为0 例:若a=3,b=2,c=1 则 ab表达式的值为1 (ab)= =c表达式的值为1 b+cb 表达式的值为1 f =abc表达式的值为0,f=(ab) else 语句2;,1if(表达式)语句;,例:if (xy) printf(%d,x);,例:if (xy) printf(%d,x); else printf(%d,y);,例:编程,判断任意输入一个整数x是不是正数,若是则将该数输出。 程序如下: main() int x; scanf(“%d”, ,例:编程,判断任意输入的一个正整数是不是偶数,若是则输出YES,否则输出NO。 程序如下: main() int x; scanf(“%d”, ,3 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式m) 语句m; else 语句n;,说明: if后面的(表达式)一般为逻辑表达式或关系表达式,系统对表达式的值进行判断,若为0按“假”处理,若为非0,按“真”处理。因此,表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型,实型,字符型,指针型数据)。如: if (3) printf(“O.K.”); 是合法的。 if (A) printf(“%d”,a);也是合法的。, 后面两种形式的if语句中,每个else前面有一个分 号,不要错认为是两个语句。, if 和else后面有多个语句时,可以使用复合语句,即用“”将多个 语句括起来。,例: if (a+bc ,例输入一个数,若大于零则输出。,main( ) float a; scanf(%f, ,main() float a,b,t; scanf(%f,%f , ,a,b,t,方法1:,例输入两个实数,按由小到大次序输出。,方法2:,main() float a,b; scanf(%f,%f, ,例输入三个数,按由小到大顺序输出。,main( ) float a,b,c,t; scanf(%f,%f,%f, ,34,12,34,17,34,34,5.3.2 if语句的嵌套 在 if 语句中又包含一个或多个 if 语句称为 if语句的嵌套。其一般形式为: if ( ) if ( ) 语句1; else 语句2; else if ( ) 语句3; else 语句4; 说明:应注意 if 与 else 的对应关系,else总是与它上面最近的 if 配对,若if与 else 的数目不一致,可以加 来确定配对关系。,内嵌 if 语句,内嵌 if 语句,main( ) int x,y; scanf(%d, ,if (x0) y= -1; else if (x= =0) y=0; else y=1;,y= -1; if (x!=0) if (x0) y=1; else y=0;,y=0; if (x=0) if (x0) y=1; else y= -1;,5.3.3 条件运算符 1. 一般形式:表达式1 ? 表达式2:表达式3 2. 执行过程:如果表达式1为真,则条件表达式取表达式2的值,否则取表达式3的值。,取表达式 2 的值,if (ab) max=a; else max=b;,max=(ab)?a:b;, 说明: 条件运算符是C中唯一的一个三目运算符。 条件运算符优先于赋值运算符。 条件运算符的结合方向为 “右结合”。 例:ab?a:cd?c:d 相当于 ab?a:(cd?c:d) 条件运算符不能取代一般的if语句,只有在if语 句中内嵌的语句为赋值语句且两个分支都给同一 个变量赋值时才能代替 if 语句。 表达式 1、2、3可以是任意类型的。(字符型,整型、实型),如: x ? a : b x为整型变量 xy ? 1:1.5结果为实型, 条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。,例:输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。程序如下:,main( ) char ch; scanf(%c, ,5.4 switch语句,二说明: (1) switch后面括弧内的“表达式”,可以是任意类型的表达式。 (2) 当表达式的值与某一个 case 后面的常量表达式 的值相等时,就执行此 case 后面的语句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default后面的语句。 (3) 每一个 case 的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。 (4) 各个 case 的出现次序不影响执行结果。,(5) 多个case可以供用一组执行语句。如:,case A : case B : case C :printf(60n);,(6) 执行完一个 case 后面的语句后,流程控制转移到下一个 case 继续执行。 “case常量表达式”只是起语句标号的作用,并不是在该处进行条件判断。,若grade= A ,则将输出: 85100 7084 6069 60 error,switch(grade) case A: printf(85100n); case B: printf(7084n); case C: printf(6069n); case D: printf(60n); default : printf(errorn); ,break;,break;,break;,break;,若grade=A , 则输出结果为: 85100,break语句可以使流程跳出switch结构,继续执行switch语句下面的语句。,5.5 程序举例,例任给三角形的三边,判断该三角形是等边、等腰、直角或一般。,分析: 用变量a, b, c表示三角形三条边的长,#include math.h main( ) int a,b,c; scanf(%d%d%d, ,例. 写程序,判断某一年是否闰年。,闰年的条件是符合下面二者之一: 1.能被4整除,但不能被100整除; 2.能被4整除,又能被400整除。,main( ) int year,leap; scanf(%d,方法1:if 语句的嵌套,if (leap) printf(%d is ,year); else printf(%d is not,year); printf(a leap year .n); ,方法2:if 语句的第三种形式,main( ) int year,leap; scanf(%d,if (leap) printf(%d is ,year); else printf(%d is not,year); printf(a leap year .n); ,例: 求 方程的解,有以下几种可能:,1. ,不是二次方程。否则,2. ,有两个相等实根。,3. ,有两个不等实根。,4. ,有两个共轭复根。,#include math.h main( ) float a,b,c,disc,x1,x2,p,q; scanf(%f,f,%f,else p=-b/(2*a); q=fabs(sqrt(-disc)/(2*a); printf(%8.4f+%8.4f i n, p, q); printf(%8.4f-%8.4f i n, p, q); ,例. 给一百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A ,80-89分为B,70-79分为C,60-69分为D,60分以下为E。,根据score确定分数段temp,grade =A,grade =B,grade =C,grade=E,grade =D,0,8,7,6,5,4,3,2,1,9,读入学生成绩score,score100,Y,N,输出grade,输入数据有误,结束,main( ) int score,temp; char grade; scanf(%d,case 6: grade=D ; break; case 5: case 4: case 3: case 2: case 1: case 0: grade=E ; printf(%d,%cn,score,grade); ,switch (temp) case 9 : grade=A;break; case 8 : grade=B;break; case 7: grade=C;break;,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!