四、C语言控制语句
4.1 C 语言控制语句
类别 | 语句 |
---|---|
条件判断语句 | i f 语 句 、 s w i t c h 语 句 if语句、switch语句 if语句、switch语句 |
循环执行语句 | d o w h i l e 语 句 、 w h i l e 语 句 、 f o r 语 句 do\;while语句、while语句、for语句 dowhile语句、while语句、for语句 |
转向语句 | b r e a k 语 句 、 r e t u r n 语 句 、 g o t o 语 句 、 c o n t i n u e 语 句 break语句、return语句、goto语句、continue语句 break语句、return语句、goto语句、continue语句 |
4.2 分支结构(条件判断)语句
4.2.1 if 语句
(1)单分支:如果表达式的值为真,则执行其后的语句,否则不执行该语句。
if(表达式)
{语句};
(2)二分支:如果表达式的值为真,则执行语句1,否则执行语句2。
if(表达式)
{语句段1;}
else
{语句段2;}
(3)多分支:
if(表达式1)
{语句段1;}
else if(表达式2)
{语句段2;}
else if(表达式3)
{语句段3;}
......
else
{语句段n;}
4.2.2 条件运算符
条件运算符:是一个三目运算符,其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。
表达式1? 表达式2:表达式3;
max = (a>b)?a:b; //其语义为 max 为 a, b 中的最大值
注意点:
(1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符;
(2)条件运算符的结合方向是 自右至左;
a>b?a:c>d?c:d 应理解为 a>b?a:(c>d?c:d)
4.2.3 switch 语句
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
......
case 常量表达式n: 语句n;
default : 语句n+1;
}
4.3 循环控制语句
4.3.1 goto 语句和 if 语句构成循环
goto 语句格式为:goto 语句标号;
goto 语句常与 if 条件语句连用,当满足某一条件时,程序跳到标号处运行;标号必须与 goto 语句同处于一个函数中,但可以不在一个循环层中。如:
// 实现 0,1,2,....,100 的累加
main()
{
int i, sum;
i = 1, sum = 0;
loop: if (i<=100)
{sum = sum + i;
i++;
goto loop;}
}
goto 语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。
4.3.2 while 语句
while(表达式) {语句块;}
计算表达式的值,当值为真(非0)时,执行循环体语句。
// 实现 0,1,2,....,100 的累加
main()
{
int i, sum;
i = 1, sum = 0;
while(i<=100)
{sum = sum + i;
i++;}
}
4.3.3 do-while 语句
do
{语句;}
while(表达式)
这个循环与 while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此, do-while 循环至少要执行一次循环语句。
// 实现 0,1,2,....,100 的累加
main()
{
int i, sum;
i = 1, sum = 0;
do
{sum = sum + i;
i++;}while(i<=100)
}
4.3.4 for 语句
for(表达式1; 表达式2; 表达式3) {语句;}
for(循环变量赋初值;循环条件;循环变量增量){语句;}
其执行过程为:
(1)先求解表达式1;
(2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第(3)步;若其值为假(0),则结束循环,转到第(5)步;
(3)求解表达式3;
(4)转回上面第(2)步继续执行;
(5)循环结束,执行for语句下面的一个语句。
// 实现 0,1,2,....,100 的累加
main()
{
int i, sum;
for(i=1; i<=100; i++)
{sum = sum + i;}
4.3.5 break 语句:
break;
(1)当break语句用于do-while、for、 while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环;
(2)当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break 语句,则将成为一个死循环而无法退出
注意:
(1)break 语句对 if-else 的条件语句不起作用;
(2)在多层循环中,一个break语句只向外跳一层。
4.3.6 continue 语句
continue;
continue 语句的作用是跳过循环本中剩余的语句而强行执行下一次循环;continue语句只用在for、while、do-while等循环体中,常与 if 条件语句一起使用,用来加速循环。
continue 与 break 用于循环时,之间的差别如下: