第 10章 Cx51流程控制语句
C 语言程序有顺序结构,选择结构,循环结构三种基本结构 。
选择结构又可分为串行分支结构和并行分支结构,循环结构又分为,while”型循环结构和
,do-while” 型循环结构,相应的流程图如图
10-1,10-2,10-3,10-4,10-5,10-6所示。
10.1 C 语言程序的基本结构及流程图
A
B
A
B
Y
N
P 为 真?
图 10-2选择结构流程图图 10-1 顺序结构流程图图 10-3 串行多分支结构流程图 图 10-4 并行多分支结构流程图
Y
N
P 为 真

A
入 口出口
Y
N
P 为 真

A
入 口出口图 10-5,while-do”型循环结构流程图 图 10-6,do”型循环结构流程图
10.2 选择语句 if
C语言提供了三种形式的 if语句。
(1) if(表达式){语句}
(2) if(表达式 ){语句 1;}
else{ 语句 2; }
(3) if(表达式 1){语句 1;}
else if(表达式 2){语句 2;}
else if(表达式 3){语句 3;}
else if(表达式 m){语句 n;}
else(语句 m;)
if语句的嵌套:
在 if语句中又含有一个或多个 if语句,
这种情况称为 if语句的嵌套。
if语句的嵌套的基本形式如下:
外层嵌套 if 语句 {
if ( )
el s e
if ( )
el s e
{ 语句 1 ; }
{ 语句 2 ; }
if ( )
el s e
{ 语句 1 ; }
{ 语句 2 ; }
{
{
内层嵌套语句内层嵌套语句
10.3 switch/case 语句
switch语句的一般形式如下:
switch(表达式)

case 常量表达式 1:{语句 1;} break;
case 常量表达式 2:{语句 2;} break;
.
.
.
case常量表达式 n:{语句 n;} break;
default:{语句 n+l;}
}
使用 case 语句需注意下列几个问题:
(1) 当 switch括号中表达式的值与某一 case后面常量表达式的值相等时,就执行它后面的语句,然后因遇到 break而退出 switch语句。当所有的
case中的常量表达式的值都没有与表达式的值相匹配时,就执行 default后面的语句。
(2)每一个 case的常量表达式必须是互不相同的,
否则将出现混乱局面(对表达式的同一个值,有两种或两种以上的选择)。
(3)各个 case和 default出现的次序,不影响程序执行的结果。
(4)如果在 case语句中遗忘了 break,则程序在执行了本行 case选择之后,不会按规定退出 switch
语句,而是将执行后续的 case语句。
10.4 循环语句
C语言中用来实现循环的语句有,while”,,do while”、
,for”三种。
1,while 语句
while语句的一般形式为:
while(表达式 ){
语句;/ * 循环体 */

在这里,表达式是 while循环能否继续的条件,而语句部分则是循环体,是执行重复操作的部分。只要表达式为真,就重复执行循环体内的语句;反之,则终止
while循环,执行循环之外的下一行语句。
2,do-while 循环语句
do-while语句的格式为:
do{
语句;/ * 循环体 */

while(表达式);
do-while循环语句的执行过程如下:首先执行循环体语句,然后执行圆括号中的表达式。如果表达式的结果为真
(1),则循环继续,并再一次执行循环语句。只有当表达式的结果为假 (0)时,循环才会终止,并以正常方式执行程序后面的语句。
do-while循环语句把 while循环语句作了移位,即把循环条件测试的位置从起始处移至循环的结尾处。该语句大多用于执行至少一次以上的循环的情况 。
3,for 循环语句
for语句是最灵活、最复杂的 C语言循环语句。它不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定但已经给出循环条件的情况。它既可以包含一个索引计数变量,也可以包含任何一种表达式。
for循环语句的一般形式为:
for(表达式 1;表达式 2;表达式 3)
{
语句; /* 循环体 */

for循环的语句执行过程如下:
(1) 先对表达式 1赋初值,进行初始化。
(2) 判断表达式 2是否满足给定的循环条件,若满足循环条件,则执行循环体内语句,然后执行第 (3)步:若不满足循环条件,则结束循环,转到第 (5)步。
(3) 若表达式 2为真,则在执行指定的循环语句后,求解表达式 3。
(4) 回到第 (2)步继续执行。
(5) 退出 for循环,执行下面一条语句。
例如:
int i,sum = 0;
for(i=0; i<=5; i++)
{
sum += i;
}
程序运行结果:变量 sum值为 15。
在程序中,for循环表达式 1是 i=0。其作用是给 i赋初值。表达式 2是 i<=5。其作用是对循环条件进行测试。当
i<=5时,表达式 2为真,则执行循环体内语句,sum+
=i(即 sum=sum+ i),然后执行表达式 3(i++),进入下一轮循环;当 i>5时,表达式 2为假,则终止循环 。