控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。在C语言中有九种控制语句。 可分成以下三类:
1.条件判断语句:if语句、switch语句;
2.循环执行语句:do while语句、while语句、for语句;
3.转向语句:break语句、continue语句、goto语句、return语句。
1.1 if语句
if语句中,首先判断表达式的值,然后根据该值的情况控制程序流程。表达式的值不等于0,即为真;否则为假。
if语句有if,if--else和else if 三种形式。
用于单分支选择结构。
if(表达式) 语句
用于双分支控制的条件语句;非此即彼的关系。
if(表达式) {
语句1;
}else{
语句2;
}
用于多分支的控制的条件语句。
if(表达式1) {
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
......
}else{
语句n;
}
1.2 switch语句
switch语句是一个多分支选择语句,并且可以支持嵌套。
switch语句的基本样式
switch(表达式){
case 常量1:
语句1;
case 常量2:
语句2;
......
default:
语句n;
break;
}
switch语句后面的表达式可以为int,char类型,case标签必须是常量表达式,如2或者'd'。同时,case后的常量值必须是惟一,不允许两个case具有相同的值。
switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相等则跳到下一个case语句,当表达式和常量值相等,switch语句会将当前case语句以及后面所有的case语句全部输出。
注意,当运行以下代码
#include <stdio.h>
int main()
{
int day = 0;
printf("请输入一个数字\n");
scanf("%d",&day);
switch (day)
{
case 1:printf("星期一\n");
case 2:printf("星期二\n");
case 3:printf("星期三\n");
case 4:printf("星期四\n");
case 5:printf("星期五\n");
case 6:printf("星期六\n");
case 7:printf("星期天\n");
default:
break;
}
return 0;
}
输入2以后的结果为以下结果
switch语句将我2,以及下面所有语句都执行,要解决这一问题,我们只需要在每一个case语句后面加上一个break语句。
2.1与2.2 do while语句、while语句
while是最基本的循环,它的结构为:
while(表达式){
循环语句;
}
只要while后的表达式一直成立,循环语句的代码就会一直执行。所以,对于 while 语句而言,若不满足条件,则不能进入循环。
而do while 循环和 while 循环相似,不同的是,do while 循环至少会执行一次。do while的结构为:
do{
循环语句;
}while(表达式)
同理,只要while后的表达式一直成立,循环语句的代码就会一直执行。
do while 与while语句的区别在于:
do while,无论是表达式是否成立,循环语句会先执行一次。
while,他会在代码执行前先判断表达式是否成立,如果成立才会执行循环语句。
2.3 for语句
在for语句中,允许您编写一个执行指定次数的循环控制结构,它的结构为:
for(表达式1;表达式2;表达式3){
循环语句;
}
其中,表达式1为初始化表达式,它只计算一次。在计算控制表达式之前,先计算一次表达式 1,以进行必要的初始化,后面不再计算它。所以,表达式1可以为空。
表达式2为控制表达式,每轮循环前都要计算控制表达式,以判断是否需要继续本轮循环。当控制表达式的结果为 false,结束循环。
表达式3为调节表达式,在每轮循环结束后,在表达式 2 计算前执行。在运行了调节表达式后,执行表达式 2,以进行判断。
注意,在循环语句中,一定要有可以使代码跳出循环的语句,否则会使代码运行时,陷入死循环。
3.1 break语句
当break关键字用于while、for循环,会终止循环,转而执行整个循环语句后面的代码。而在多层循环中,一个break语句只向外跳一层。而在switch语句中,可用于终止switch语句中的一个 case。
3.2 continue语句
continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for循环中。对于for循环,continue语句执行后自增语句仍然会执行。对于 while和do while循环,continue语句重新执行条件判断语句。
break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。
3.3 goto 语句
C语言中的goto语句允许把控制无条件转移到同一函数内的被标记的语句。goto语句可以使程序在没有任何条件的情况下跳转到指定的位置,所以goto语句又被称为是无条件跳转语句。它的结构为:
goto label;
//其它代码
label:
3.4 return语句
函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过return 语句返回。它的结构为:
return 表达式;