C 言if case分支 构
C 言if case分支 构复合 句在C 言中,用
一 花括号“{ }”将若干条 句括起来成 一个 句 ,称
复合 句,其一般形式如下: { 句 1; 句 2; 句 3;??;
句 n ; }花括号内 句的数量、 型不限,可以是声明
句、 句等;一个复合 句在 法上被 一条 句。
例如: #include
/* 量 a,b,c 只能在此复合 句内使用*/a=10; b=20;c=a+b;
printf
(“
%d,%d ,
n” ,a,b,c
) ;}
??
} 注意,复合 句内
的定 量 句要出 在 行 句之前,且复合 句内定
的 量只能在 复合 句内部有效。4.2 二分支 构一、
的二分支 构C 言的 if 句有两种基本形式。 1、
独立 if 构( 1) 法形式if(表达式) 句其中,①if
是 C 言的关 字; ②表达式可以是任意的表达式且一
括号不可缺省; ③ 句可以是一条 句或复合 句。 ( 2) 行 程首先 算表达式的 ,然后根据其真假来决定程序
的走向。若表达式 真 ( 非零) 行 句, 若 假(
零) 不 行 句。退出分支 构后程序 行if 构
后面的 句。 4.1 if 构流程 ( 3) 例 if(a>b)b++;
若 a 的初 20 , b 的初 10 , 表达式 (a>b) 真, 行 句“ b++; ”a, 的 果 20,b 的 果 11 。若 a 的初
值为 10 ,b 的初值为 20 ,则表达式 (a>b) 为假,不执行语句“ b++; ” ,a则和 b 均保留初值 :10 和 20 。如果语句为复合语
句,将以上程序段改为:
if(a>b){ b++;a++; }
则,若
a 的
初值为
20 ,b
的初值为
10 ,则表达式
(a>b)
为真,执行语
句“ b++; ”和“ a++;a”的,结果为 21,b 的结果为 11 。而若 a 的初值为 10 ,b 的初值为 20 ,则表达式 (a>b) 为假,语句 “ b++; ”和“ a++; ”均不被执a行的,结果仍为 10,b 的结果仍为
。若将复合语句的一对花括号去掉则程序段成为:
if(a>b)b++;a++;此时,语句“a++; ”已不再属于if结构,不
管条件为真或为假,对于整个程序来说它都将被执行。2、
if-else
结构(
1)语法形式
if(表达式)语句
1else
语句
2 其
中,①
if 和
else
是 C 语言的关键字,表达式及语句
1 、语句
2 解释同上;②
else
不能独立存在,它必须与
if
语句配对、
组合方可使用, 否则会产生语法错误; ③ else后面绝对不能跟
条件表达式,它执行的条件是隐含的,即与之配对的if 的反
面。( 2)执行过程首先计算表达式的值,然后根据其真假
来决定程序的走向。若表达式为真(值为非零)则执行语句
1,若为假(值为零)则执行语句2。退出分支结构后程序继
续执行 if-else 结构后面的语句。 图 4.2 if-else 结构流程图( 3)举例 if(a>b)b++;elsea++; 若 a 的初值为 20 , b 的初值为
10 ,则表达式 (a>b) 为真,执行语句“ b++; ” , 然后退if出-else结构,则 a 的结果为 20,b 的结果为 11 。若 a 的初值为 10 ,
b 的初值为 20 ,则表达式 (a>b) 为假,执行语句“ a++; ”然,后退出 if-else 结构,则 a 的结果为 11,b 的结果为 20 。前文曾提到过语句 1 和语句 2 都可以是复合语句, 但如果不慎将
语句 1 的花括号丢了,则编译时会出现语法错误,如下例:
main(){int a=1,b=2;if(a>b) a++; b--;else a--; } 该程序执行时会出现错误提示信息:“ Error:Misplaced else in function main ”,因为此时 else 不能与 if 合法匹配,而 else 又不能独立存在,所以出现了上述错误。二、嵌套的二分支选择结构
1、在 if 语句中嵌套分支结构 ( 1)语法形式
if(表达式 1) if
(表达式 2) 语句 1 else
语句 2else
语句 3 其