C语言程序设计教程﹝修订本﹞第3章选择结构.ppt
文本预览下载声明
第3章 选择结构
;3.1 语句与复合语句
3.2 if 语 句
3.3 if…else结构
3.4 条件运算符
3.5 switch结构
3.6 程序举例
;3.1 语句与复合语句
在C语言中,一个表达式后面跟随一个分号就构成了一个语句,这种语句称为表达式语句。
在C语言中,分号(;)是表达式语句的终结符,而不是语句之间的分隔符,也就是说,分号是表达式语句的一个组成部分,只不过它位于表达式的后面。
在一个函数体内部,由左、右花括号括起来的语句称为复合语句,它的一般形式为
{说明部分;语句部分;}; 对于复合语句要注意以下几点:
(1)一个复合语句在语法上等同于一个语句,因此,在程序中,凡是单个语句(如表达式语句)能够出现的地方都可以出现复合语句,并且,复合语句作为一个语句又可以出现在其他复合语句的内部。
(2)复合语句是以右花括号为结束标志,因此,在复合语句右括号的后面不必加分号,但在复合语句内的最后一个非复合语句是要以分号作为结束的。
;(3)在复合语句的嵌套结构(将函数体也看成是一个复合语句,而且是最外层的复合语句)中,一个复合语句内所进行的说明只适合于本层中该说明语句以后的部分(包括其内层的复合语句),在该复合语句外不起作用。
(4)在复合语句的嵌套结构中,如果在内层与外层作了相同的说明,则按照局部优先的原则,内层复合语句中的执行结果不带回到外层。;3.2 if 语 句
If 语句的形式为
if (表达式) 语句
这种选择结构的流程图如图3.1所示。
;下面对if语句作几点说明:
(1)if语句中的逻辑表达式(即条件)必须要用一对圆括号括起来。
(2)if语句后的语句可以是复合语句。
(3)一个if语句
最后需要强调的是,在使用if语句时,一定要注意逻辑表达式的正确写法,特别是在连续使用多个if语句时更要注意。
;3.3 if…else结构
在C语言中,if…else结构的语句形式为
if (表达式) 语句1
else 语句2
;下面对if…else结构作以下几点说明:
(1)if…else结构中的语句1与语句2都可以是复合语句。
(2)在if…else结构中,语句1与语句2都可以是空语句。
(3)在if…else结构中,如果在else前面有多个if语句,则else与最近的if配对。
;(4)如果有多个if……else结构嵌套如下:
if (表达式1) 语句1
else
if (表达式2) 语句2
else
…
else
if (表达式n) 语句n
else 语句n+1
则可简写成
if (表达式1) 语句1
else if (表达式2) 语句2
…
else if (表达式n) 语句n
else 语句n+1
;这种结构又称为if…else if结构,其流程图如图3.3所示。;3.4 条件运算符;3.5 switch结构;下面对switch结构作几点说明:
(1)switch结构中的表达式、常量表达式1、…?、常量表达式n必须是整型或字符型。这是因为,在switch结构中,其分支数一般是有限的,并且是离散的,因此,其表达式的值也应是有限的,且是离散的。
(2)同一个switch结构中的常量表达式值必须互不相同,否则就会出现矛盾的现象,即对于“表达式”的同一个值对应多种执行方案,这是错误的。;(3)在switch结构中,case 与 default 的顺序可以任意,各case之间 的顺序也可以任意。
(4)在执行switch结构时,当执行完某case 后的语句后,将顺序执行后面case 后的语句,直到遇 break 语句才退出整个switch 结构的执行。
(5)在switch结构中,如果没有default 且“表达式”值不等于任何case 后常量表达式的值,则直接退出switch 结构而转到其后的语句执行。
;3.6 程序举例
;其流程图如图3.5所示。
;根据图3.5所示的流程图,用if…else if结构写出C程序如下:
#include stdio.h
main()
{ float p,w;
printf(input p: );
scanf(%f,p);
if (p<=0.0) w=0.0;
else if (p<=0.5) w=0.01*p;
显示全部