C++中的基本控制结构

时间:2022-09-09 14:16:38

》C++语句

       语句是C++程序中的基本功能单元。任何一条C++语句都会为完成某项任务而进行相关的操作。C++语句通常以分号作为结束标志。

       >声明语句:用于对程序中的各种实体进行声明、定义及初始化。

       >表达式语句:用于对程序中的数据进行具体操作和处理。

       >选择语句:用于实现程序的选择结构。

       >循环语句:用于实现程序的循环结构。

       >跳转语句:用于实现程序执行流程的转移。

       >复合语句:用于表示程序中的语句块。

注:C++中并不存在赋值语句和函数调用语句,赋值和函数调用都术语表达式而不是语句。


》顺序结构

       C++程序中执行流程的默认结构。在一个没有选择和循环结构的程序中,语句将按照书写的先后顺序,从左向右,自上而下依次执行。除了选择、循环和跳转语句外,其他C++语句都可以看做实现程序顺序结构的语句。


       >声明语句

                  又称为说明语句,它可以用来对程序中出现的各种名称进行声明。这些名称通常是表示变量、常量、函数、结构、类、对象等实体的标识符。在C++中,一个名称在使用之前必须先声明。声明的目的是告诉编译器某个名称所指代的实体类型。

       >表达式语句

                   C++中所有对数据的操作和处理工作都是通过表达式语句来完成的。 语法格式:    <表达式>;


       >基本输入输出

                    C++程序的输入输出操作是通过标准库中的输入/输出流对象来完成的。在头文件iostream中定义了代表屏幕的标准输出流对象cout和代表键盘的标准输入流对象cin。在使用cin和cout之前,应首先加入预处理命令:#include<iostream>,以包含标准头文件iostream。

                    cout<<Expr;

                    这是一条表达式语句。其中,Expr代表一个表达式;“<<”称为插入运算符。

                    cin>>Var;

                    这也是一条表达式语句。其中,Var代表一个变量;“>>”称为提取运算符。整条语句的含义是:程序将暂时中止执行,等待用户从键盘上输入一个数据。如果用户键入了一个有效的数据并按下了回车键,程序就将此数据保存到变量Var中,并继续执行后续语句。

       

         >复合语句和空语句

                    严格地说,复合语句和空语句并不是功能上独立的一类语句。但是,复合语句能够实现语句快的概念;空语句也可以在一些情况下派上用场。因此,有了复合语句和空语句会使C++程序的设计变得更加方便。

                    复合语句又称为块语句,它是用一对花括号“{   }”将若干条语句包围起来而组成的一条语句,其语法格式为:

                                                    {

                                                        <语句1>

                                                       ......

                                                        <语句n>

                                                    }

                     复合语句可以出现在程序中任何需要语句的地方,通常情况下复合语句可以以函数的函数体、循环语句的循环体、if语句的分支、switch语句的执行部分等成分出现在程序中。

                    空语句是一种特殊的表达式语句。其语法格式为:int  main(){   ;  } 主函数main中只含有一条空语句,执行此程序不会产生任何动作。在某些场合下需要用空语句作为占位符,以表示该处存在着一条语句。


》选择结构

         >if语句

         1.基本if语句

                  if(<条件>)<语句>

            其中if为关键字;<条件>通常是一个表达式且必须用圆括号包围起来;<语句>称为if子句,它可以是任何类型的语句(包括复合语句和空语句)。

           执行过程:首先计算<条件>的值,如果此值不为0(“真”),则执行<语句>;如果此值为0(“假”),则忽略<语句>(即不执行)而继续执行if语句之后的下一条语句。


          2.if...else语句

                  if(<条件>)

                          <语句1>

                  else  

                          <语句2>

            为基本if语句的扩展,其功能是根据给定条件是否成立来决定执行两部分语句中的哪一部分。其中if和else为关键字;<语句1>称为if子句,<语句2>else子句,它们可以是单条语句也可以是复合语句。

            执行过程:首先计算<条件>的值,如果此值不为0(“真”),则执行<语句1>,然后忽略后面的<语句2>去执行if语句之后的下一条语句;如果此值为0(“假”),则忽略<语句1>,执行<语句2>,然后继续执行if语句之后的下一条语句。


           3.if语句的嵌套

             if子句和else子句可以是任何类型的C++语句,当然也可以是if...else语句本身。通常将这种情况称为if语句的嵌套。

             C++中规定:else关键字总是与它前面最近的未配对的且可见的那个if关键字配对。复合语句内的if关键字对其外面的else关键字是不可见的。

             程序设计中有时使用嵌套的if语句构成if...else...if阶梯结构,其形式如下:

                               if(<条件>)

                                        <语句>

                               else if(<条件>)

                                        <语句>

                               else if(<条件>)

                                        <语句>

                               ......

                               else

                                        <语句>

                 执行过程:从上向下逐一对if之后的条件进行检测。如果某一条件为“真”,则执行相应的if子句并越过剩余的阶梯结构;如果所有条件都为“假”,则执行最后一个else子句。


            >switch语句

                  又称为开关语句,它也是一种选择语句。switch语句的功能是根据给定表达式的不同取值来决定从多个语句序列中的哪一个开始执行,其语法格式如下:

                  switch(<表达式>){

                  case<常量表达式1>:

                            <语句序列1>                 

                  case<常量表达式2>:    
                            <语句序列2>
                  ......
                  case<常量表达式n>:

                            <语句序列n>

                  default:

                            <语句序列n+1>

                   }

               其中,switch,case和default为关键字;<表达式>的值必须属于整型、字符型或枚举型。<常量表达式i>(i=1,2,...n)是取值互不相同的整型常量、字符常量或枚举常量,其具体类型应与<表达式>的值的类型相一致。<语句序列i>(i=1,2,...n)可以是任意多条语句。关键字case与其后的<常量表达式i>,冒号“:”和<语句序列i>一起构成一条case标号语句。关键字default与其后的<语句序列n+1>一起称为default标号语句。

               执行过程:(1)首先计算出<表达式>的值,设此值为E。

                                   (2)然后计算每个<常量表达式i>的值,设它们分别为C1、C2、...,Cn。

                                   (3)将E依次与C1、C2、...,Cn进行比较。如果E与某个值相等,则从该值所在的case标号语句开始执行各个语句序列,直至遇到break语句。在不出现break语句的情况下,将一直执行到switch语句结束。

                                   (4)如果E与所有的值都不相等且存在default标号,则从default标号语句起开始乡下执行,在不出现跳转语句的情况下,一直执行到switch语句结束。

                                   (5)如果E与所有值都不相等且不存在default标号、则switch语句不会执行任何操作。

               注:为了不让switch语句输出多余的内容,必须在每条case标号语句后面加上break语句。这样,每当执行到break语句时,执行流程就会跳出switch语句而执行下一条语句。通常情况下,switch语句总是和break语句联合使用,以确保多路选择结构的正确实现。


》循环结构

       在程序设计中,常常需要根据给定的规则重复的执行某些操作。使用循环结构可以方便地让程序处理各类重复的操作。实现程序循环结构的语句称为循环语句。

       >for语句

           语法格式:

                                  for(<表达式1>;<表达式2>;<表达式3>)

                                             <语句>

                   其中,for为关键字;<表达式1>是for循环的初始化部分,一般用来设置循环控制变量的初始值;<表达式2>是for循环的条件部分,用来判定循环是否继续进行;<表达式3>是for循环的增量部分,一般用于修改循环控制变量的值;<语句>称为for循环的循环体,它是要被重复执行的代码行,for循环体可以是单条语句,也可以是由花括号包围起来的复合语句。

                   执行过程:

                                      (1)计算<表达式1>的值;

                                      (2)计算<表达式2>的值,如果此值不等于0(即循环条件为“真”),则转向步骤(3);如果此值等于0(即循环条件为“假”),则转向步骤(5);

                                      (3)执行一遍循环体<语句>;

                                      (4)计算<表达式3>的值,然后转向步骤(2);

                                      (5)结束for循环。             

                     C++中for语句的书写格式非常的灵活,主要表现在:                

                           ><表达式1>可以是变量声明语句,即循环控制变量可在其中定义。C++中规定在<表达式1>中定义的变量只在for语句内部有效,for循环结束后变量将自行消失。

                           ><表达式1>可以省略。这时,应在for语句之前给循环控制变量赋初值。省略<表达式1>时,其后的分号不能省略。

                           ><表达式2>可以省略。这时,for语句将不在判断循环条件,循环会无限次的执行下去。这种情况通常称为“死循环”。省略<表达式2>时,其后的分号不能省略。

                           ><表达式3>可以省略。这时,应在循环体中对循环控制变量进行递增或递减操作,以确保循环能够正常结束。

                           >三个表达式可同时省略。这时,for语句显然也是一个“死循环”。

                           ><表达式1>、<表达式2>、<表达式3>都可以是任何类型的C++表达式。


          >while语句

                    语法格式:

                                 while(<表达式>)<语句>

                    其中,while为关键字;<表达式>是while循环的条件,用于控制循环是否继续进行;<语句>称为while循环的循环体,它是要被重复执行的代码行;while循环体可以是单条语句,也可以是由花括号括起来的复合语句。实际上,while语句是for语句省略掉<表达式1>和<表达式3>的特殊情况。如果条件不成立,while语句的循环体一次也不会执行

                   执行过程:

                                 (1)计算<表达式>的值,如果此值不等于0(即循环条件为“真”),则转向步骤(2);如果此值等于0(即循环条件为“假”),则转向步骤(4);

                                 (2)执行一遍循环体<语句>

                                 (3)转向步骤(1)

                                 (4)结束while循环

                 注:由于while语句中缺少对循环控制变量进行初始化的结构,因此在使用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循环

                     注:在使用do...while循环之前同样需要对循环控制变量进行初始化;在do...while循环体中仍然不要忘记对循环控制变量进行修改,以使循环趋向结束,避免死循环的发生。do...while语句通常用在循环条件是否成立由循环体决定的情况下。

             

            >循环的嵌套

              在一个循环结构中又完整地包含着另一个循环结构称为循环的嵌套。C++中三种类型的循环语句都可以相互嵌套,并且嵌套的层数没有限制。


》跳转语句

            使用跳转语句可以实现程序执行流程的无条件转移。

         >break语句

         又称跳出语句,其语法格式:

                                       break;

              由关键字break加上一个分号构成。break语句只能用在switch语句和循环语句中。在switch语句中,break用来执行流程跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来执行流程无条件地跳出本层循环体,而不在跳出外层循环体。另外,break语句还经常用于使执行流程跳出死循环。


              >continue语句

             又称继续语句,其语法格式:

                                       continue;

             由关键字continue加上一个分号构成。continue语句仅用在循环语句中,它的功能是:跳过循环体中尚未执行的语句结束本次循环,接着进行下一次是否执行循环的条件判定。

             在while和do...while循环中,continue语句将使执行流程直接跳转到循环条件的判定部分,然后决定循环是否继续进行。在for循环中,当遇到continue时,执行流程将跳过循环体中余下的语句,而转去执行for语句中的<表达式3>,然后根据<表达式2>进行循环条件的判定以决定是否继续执行for循环体。


             >return语句

            又称为返回语句,其语法格式:

                      格式一:  return;

                                格式二:  return <表达式>;

            其中,return为关键字,<表达式>可以是任何类型的C++表达式。return语句只能用在函数体中。在返回类型为void的函数体中,若想跳出函数体,将执行流程转移到调用该函数的位置,应使用格式一。在返回类型不是void的函数体中,应使用格式二,使执行流程转移到调用该函数的位置,并将<表达式>的值作为函数的返回值。

            对于非void返回类型的函数来说,其函数体中必须至少具有一条return语句。

           

            >goto语句

         又称为转向语句,其语法格式:                  标号格式:

                                            goto<标号>;                     <标号>:<语句>

              其中,goto为关键字;<标号>是一个由用户命名的标识符,在<标号>和<语句>之间使用一个冒号分隔,这种语法节后称为标号语句。在goto语句所处的函数体中必须同时存在一条由<标号>标记的语句。<标号>应于goto语句中的<标号>相同,<语句>可以是任何类型的C++语句。

             注:某个goto语句和相应的标号语句必须位于同一函数体内。一个复合语句之外的goto语句不能跳转到该复合语句内部。