C语言程序设计教程(修订本)第3章选择结构.ppt

上传人:本田雅阁 文档编号:2143021 上传时间:2019-02-21 格式:PPT 页数:23 大小:242.01KB
返回 下载 相关 举报
C语言程序设计教程(修订本)第3章选择结构.ppt_第1页
第1页 / 共23页
C语言程序设计教程(修订本)第3章选择结构.ppt_第2页
第2页 / 共23页
C语言程序设计教程(修订本)第3章选择结构.ppt_第3页
第3页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计教程(修订本)第3章选择结构.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计教程(修订本)第3章选择结构.ppt(23页珍藏版)》请在三一文库上搜索。

1、第3章 选择结构,3.1 语句与复合语句 3.2 if 语 句 3.3 ifelse结构 3.4 条件运算符 3.5 switch结构 3.6 程序举例,3.1 语句与复合语句 在C语言中,一个表达式后面跟随一个分号就构成了一个语句,这种语句称为表达式语句。 在C语言中,分号(;)是表达式语句的终结符,而不是语句之间的分隔符,也就是说,分号是表达式语句的一个组成部分,只不过它位于表达式的后面。 在一个函数体内部,由左、右花括号括起来的语句称为复合语句,它的一般形式为 说明部分;语句部分;,返回目录,对于复合语句要注意以下几点: (1)一个复合语句在语法上等同于一个语句,因此,在程序中,凡是单个

2、语句(如表达式语句)能够出现的地方都可以出现复合语句,并且,复合语句作为一个语句又可以出现在其他复合语句的内部。 (2)复合语句是以右花括号为结束标志,因此,在复合语句右括号的后面不必加分号,但在复合语句内的最后一个非复合语句是要以分号作为结束的。,(3)在复合语句的嵌套结构(将函数体也看成是一个复合语句,而且是最外层的复合语句)中,一个复合语句内所进行的说明只适合于本层中该说明语句以后的部分(包括其内层的复合语句),在该复合语句外不起作用。 (4)在复合语句的嵌套结构中,如果在内层与外层作了相同的说明,则按照局部优先的原则,内层复合语句中的执行结果不带回到外层。,3.2 if 语 句 If

3、语句的形式为 if (表达式) 语句 这种选择结构的流程图如图3.1所示。,图3.1 if语句的流程图,返回目录,下面对if语句作几点说明: (1)if语句中的逻辑表达式(即条件)必须要用一对圆括号括起来。 (2)if语句后的语句可以是复合语句。 (3)一个if语句 最后需要强调的是,在使用if语句时,一定要注意逻辑表达式的正确写法,特别是在连续使用多个if语句时更要注意。,3.3 ifelse结构 在C语言中,ifelse结构的语句形式为 if (表达式) 语句1 else 语句2,图3.2 ifelse结构的流程图,返回目录,下面对ifelse结构作以下几点说明: (1)ifelse结构中

4、的语句1与语句2都可以是复合语句。 (2)在ifelse结构中,语句1与语句2都可以是空语句。 (3)在ifelse结构中,如果在else前面有多个if语句,则else与最近的if配对。,(4)如果有多个ifelse结构嵌套如下: if (表达式1) 语句1 else if (表达式2) 语句2 else else if (表达式n) 语句n else 语句n1 则可简写成 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式n) 语句n else 语句n1,这种结构又称为ifelse if结构,其流程图如图3.3所示。,图3.3 ifelse if结构的

5、流程图,3.4 条件运算符,在ifelse结构中,如果语句1与语句2都是单一的赋值语句,并且都是给同一个变量赋值,则可以用条件运算符来进行处理。 下面对条件表达式作几点说明: (1)条件运算符优先级要比赋值运算符高。 (2)条件运算符的优先级比关系运算符与算术运算符都要低,因此,条件表达式中的“表达式1”、“表达式2”与“表达式3”都不必用括号括起来。 (3)条件运算符的结合方向为“从右到左”。,返回目录,3.5 switch结构,在C语言中提供了一个直接实现多路分支选择的结构,称为switch结构,其一般形式如下: switch(表达式) case 常量表达式1: 语句1 case 常量表达

6、式2: 语句2 case 常量表达式n: 语句n default : 语句n1 ,图3.4 switch结构的流程图,返回目录,下面对switch结构作几点说明: (1)switch结构中的表达式、常量表达式1、常量表达式n必须是整型或字符型。这是因为,在switch结构中,其分支数一般是有限的,并且是离散的,因此,其表达式的值也应是有限的,且是离散的。 (2)同一个switch结构中的常量表达式值必须互不相同,否则就会出现矛盾的现象,即对于“表达式”的同一个值对应多种执行方案,这是错误的。,(3)在switch结构中,case 与 default 的顺序可以任意,各case之间 的顺序也可以

7、任意。 (4)在执行switch结构时,当执行完某case 后的语句后,将顺序执行后面case 后的语句,直到遇 break 语句才退出整个switch 结构的执行。 (5)在switch结构中,如果没有default 且“表达式”值不等于任何case 后常量表达式的值,则直接退出switch 结构而转到其后的语句执行。,3.6 程序举例,例3.12 计算奖金。 当企业利润P等于或低于0.5万元时,奖金为利润的1%;当0.5P1万元时,超过0.5万元部分的奖金为利润的1.5%,0.5万元以下仍按1%计算;当1P2万元时,1万元以下部分仍按前面的方法计算,超过1万元的部分其奖金按利润的2%计算;

8、当2P5万元时,2万元以下部分仍按前面的方法计算,超过2万元部分的奖金按利润的2.5%计算;当5P10万元时,5万元以下部分仍按前面的方法计算,超过5万元部分的奖金按利润的3%计算;当P10万元时,10万元以下部分仍按前面的方法计算,超过10万元部分按3.5%计算。其中P由键盘输入,计算并输出相应的奖金数W。,返回目录,其流程图如图3.5所示。,图3.5 例3.12中ifelse if结构的流程图,根据图3.5所示的流程图,用ifelse if结构写出C程序如下: #include “stdio.h“ main() float p,w; printf(“input p: “); scanf(“

9、%f“,&p); if (p0.0) w0.0; else if (p0.5) w0.01*p; else if (p1.0) w0.0050.015*(p0.5); else if (p2.0) w0.01250.02*(p1.0); else if (p5.0) w0.03250.025*(p2.0); else if (p10.0) w0.10750.03*(p5.0); else w0.25750.035*(p10.0); printf(“w%fn“,w); ,例3.14 求解一元二次方程Ax2BxC0。,可以得到求一元二次方程根的流程图如图3.8所示。,图3.8 例3.14的流程图,

10、相应的C程序如下: #include “stdio.h“ #include “math.h“ main() double a,b,c,d,x1,x2,p; printf(“input a,b,c: “); scanf(“%lf%lf%lf“,&a,&b,&c); if (a0.0) if (b0.0) printf(“ERRn“); else printf(“X%fn“,c/b); else if (b0.0) dc/a; if (d0.0) printf(“X1%fn“,sqrt(d); printf(“X2%fn“,sqrt(d); ,else printf(“X1j%fn“,sqrt(d); printf(“X2j%fn“,sqrt(d); else if (c0.0) printf(“X10.0n“); printf(“X2%fn“,b/a); ,else db*b4*a*c; if (d0.0) dsqrt(d); if (b0.0) x1(bd)/(2*a); else x1(bd)/(2*a); x2c/(a*x1); printf(“X1%fn“,x1); printf(“X2%fn“,x2); ,else dsqrt(d)/(2*a); pb/(2*a); printf(“X1%fj%fn“,p,d); printf(“X2%fj%fn“,p,d); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1