1for语句
for语句是C+ +中最常用且功能最强的循环语句,其语法格式如下:
for(<表达式1>;<表达式2>;<表达式3>)
<语句>
其中,for为关键字;<表达式1>是for循环的初始化部分,它一般用来设置循环控制变量的初始值;<表达式2>是for循环的条件部分,它是用来判定循环是否继续进行的条件;<表达式3>是for循环的增量部分,它一般用于修改循环控制变量的值;<语句>称为for循环的循环体,它是要被重复执行的代码行,for循环体可以是单条语句,也可以是由花括号包围起来的复合语句。
for语句的执行过程是:
(1)计算<表达式1>的值;
(2)计算<表达式2>的值,如果此值不等于0(即循环条件为“真”),则转向步骤(3);如果此值等于0(即循环条件为“假”),则转向步骤(5);
(3)执行一遍循环体<语句>:
(4)计算<表达式3>的值,然后转向步骤(2);
(5)结束for循环。
C+ +中for语句的书写格式非常灵活,这主要表现为:
(1)<表达式1>可以是变量声明语句,即循环控制变量可在其中定义。
(2)<表达式1>可以省略。这时,应在for语句之前给循环控制变量赋初始值。注意:省略<表达式1>时,其后的分号不能省略。
(3)<表达式2>可以省略。这时,for语句将不再判断循环条件,循环会无限次地执行下去。这种情况通常称为“死循环”。
(4)<表达式3>可以省略。这时,应在循环中对循环控制变量进行递增或递减操作,以确保循环能够正常结束。
(5)三个表达式可同时省略。这时,for语句显然也是一个“死循环”。
(6)<表达式1>、<表达式2>和<表达式3>都可以是任何类型的C+ +表达式。
2while语句
while语句是一种形式较为简单的循环语句,其语法格式如下:
while(<表达式>)<语句>其中,while为关键字:<表达式>是while循环的条件,它用于控制循环是否继续进行;<语句>称为while循环的循环体,它是要被重复执行的代码行;while循环体可以是单条语句,也可以是由花括号括起来的复合语句。实际上,while语句是for语句省略掉表达式1和表达式3的特殊情况。
while语句的执行过程是:
(1)计算<表达式>的值,如果此值不等于0(即循环条件为“真”),则转向步骤(2);如果此值等于0(即循环条件为“假”),则转向步骤(4);
(2)执行一遍循环体<语句>;
(3)转向步骤(1);
(4)结束while循环。
从中可以看出,while语句将在<表达式>成立的情况下重复执行<语句>;如果在第一次进入while循环时<表达式>就不成立,则<语句>一次也不会执行。
注意:
(1)由于while语句中缺少对循环控制变量进行初始化的结构,因此在使用while循环之前对循环控制变量进行初始化显得很重要。
(2)在while循环体中不要忘记对循环控制变量的值进行修改,以使循环趋向结束。
3do…while语句; do…while语句也是一种循环语句,它的功能类似于while语句,只是将循环的判定条件移到了循环体之后,其语法格式如下:
do<语句>while(<表达式>);
其中,do和while为关键字;<语句>称为do…while循环的循环体,它是要被重复执行的代码行,do……while循环体可以是单条语句,也可以是由花括号包围起来的复合语句;<表达式>是do……while循环的条件,它用于控制循环是否继续进行。
注意:在do…while语句中最后的分号不能丢掉,它用来表示do……while语句的结束。
do……while语句的执行过程是:
(1)执行一遍循环体<语句>;
(2)计算<表达式>的值,如果此值不等于0(即循环条件为“真”),则转向步骤(1);如果此值等于0(即循环条件为“假”),则转向步骤(3);
(3)结束do…while循环。
注意:
(1)在使用do…while循环之前同样需要对循环控制变量进行初始化;在do…while循环中仍然不要忘记对循环控制变量进行修改,以使循环趋向结束,避免死循环的发生。
(2)do…while循环与while循环的不同之处在于:do…while循环的循环体在前,循环条件在后,因此do…while循环体在任何条件下(即使不满足循环条件)都至少被执行一次。而while循环条件在前,循环体在后,当条件不满足时,循环体有可能一次也不会执行。这一点正是在构造循环结构时决定使用while语句还是do…while语句的重要依据。
循环的嵌套
在一个循环结构中又完整地包含着另一个循环结构称为循环的嵌套。C+ +中三种类型的循环语句都可以相互嵌套,并且嵌套的层数没有限制。程序设计中有许多问题需要使用循环结构的嵌套来解决。
3.5 跳转语句
C+ +中有4种跳转语句,它们是:break语句、continue语句、return语句和goto语句。
1break语句
break语句又称为跳出语句,其语法格式如下:
break;
即由关键字break加上一个分号构成。
break语句只能用在switch语句和循环语句中。在switch语句中,break用来使执行流程跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来使执行流程无条件地跳出本层循环体。
另外,break语句还经常用于使执行流程跳出死循环。
2continue语句
continue语句又称为继续语句,其语法格式如下:
continue;
即由关键字continue加上一个分号构成。
continue语句仅用在循环语句中,它的功能是:结束本次循环,即跳过循环中尚未执行的语句,接着进行下一次是否执行循环的条件判定。
在while和do…while循环中,continue语句将使执行流程直接跳转到循环条件的判定部分,然后决定循环是否继续进行。在for循环中,当遇到continue时,执行流程将跳过循环中余下的语句,而转去执行for语句中的<表达式3>,然后根据<表达式2>进行循环条件的判定以决定是否继续执行for循环体。
3return语句
return语句又称为返回语句,它具有两种语法格式:
(1)return;
(2)return<表达式>;
其中,return为关键字,第2种格式中的<表达式>可以是任何类型的C+ +表达式。
return语句只能用在函数体中。在返回类型为void的函数体中,若想跳出函数体,将执行流程转移到调用该函数的位置,应使用return语句的第1种格式。在返回类型不是void的函数体中,应使用return语句的第2种格式,使执行流程转移到调用该函数的位置,并将<表达式>的值作为函数的返回值。
对于非void返回类型的函数来说,其函数体中必须至少具有一条return语句。
4goto语句
goto语句又称为转向语句,其语法格式如下:
goto<标号>; 考试站(www.examzz.com)
其中,goto为关键字;<标号>是一个由用户命名的标识符。在goto语句所处的函数体中必须同时存在一条由<标号>标记的语句,其格式为:
<标号>:<语句>
即在<标号>和<语句>之间使用一个冒号分隔,这种语法结构称为标号语句。标号语句中的<标号>应与goto语句中的<标号>相同,<语句>可以是任何类型的C+ +语句。注意:某个goto语句和相应的标号语句必须位于同一函数体内。
goto语句的功能是使执行流程跳转到<标号>所标记的<语句>处(即对应的标号语句处)。