程序的三种基本结构

复合语句

将若干个C语句使用花括号{ }包括起来形成复合语句。花括号内可以包含任何C语句,

其一般形式为:

{

语句1;

语句2;

……

语句n;

}

1.if条件分支语句

if语句有三种语法形式,构成三种分支结构。

1)流程(单选控制结构)

语句形式如下:

if (表达式)语句;

其中,表达式可以是任何种类的表达式。

执行过程中:若表达式的值为逻辑真(非0值),则执行if的内嵌语句;若表达式的逻辑值为假(0值),则跳过该语句,执行if语句的下一条语句。

单选控制结构只有1条语句可供选择:或者执行,或者不执行。

如:高考分数大于650分,则选择清华大学。

if (scores > 650)
   University=Tsinghua University;

2)if…else流程(二选一控制结构)

语句形式如下:

if (表达式)

   语句1;

else

   语句2;

代表两路分支结构,即二选一控制结构。

执行过程:如果表达式的值为真,则执行语句1;否则,执行语句2.

如,求b的绝对值

if (b>=0)

   a=b;

   else

   a=-b;

如果语句1、语句2不需要采用复合语句时,if语句可以用条件运算符?:简化。

如,求b的绝对值可以这么写

a=(b>=0)?b:-b;

3)else…if流程(多选一控制结构)

语句形式如下:

if ( 表达式1)        语句1;

else if(表达式2)  语句2;

else if(表达式3)  语句3;

……

else if(表达式n)    语句n;

else                      语句n+1;

根据条件的判定,进行多路分支选择,即多选一控制结构。

执行过程:依次计算各表达式的值;若某个表达式的值为真,则执行相应的语句,然后执行if之后的后续语句。

if语句中的最后一条else语句用来处理所有条件均不成立的情况,即当所有表达式的值均为假时,执行最后一个else后的语句。如果所有条件均不成立时,不需要完成任何操作,则可省略else。

4)if语句嵌套

C语言允许if语句嵌套,if的内嵌语句可以是另一条三种形式之一的if语句。

如:在a>=b的条件下,判断a,c中的最大值:

if (a>=b)
    if(a>=c)
      printf("max=%dn",a);
    else
      printf("max=%dn",c);

在if流程中嵌套了if…else流程。

使用if语句嵌套时,应注意if与else的配套关系,以免发生二义性。

如:用if语句完成一个分段函数计算:

 

  -a    x<0
y= 0     x=0
  a     x>0

如果程序段为:

  y=-a;
     if(x!=0)
        if(x>0)
            y=a;
        else y=0;

执行结果就时错误的,问题出在else和if的配对。C语言采用的是最邻近配对原则,else总是与它最近的if配对,尽管形式上写成了else与第一个if配对,但语法上else是与第二个if配对的,所以出现错误,这种情况出现,可采用复合语句的方法来解决。

程序段改写为:

 y=-a;
   if(x!=0){
      if(x>0)
        y=0;
     }
   else
        y=0;

采用复合语句,从语法上规定了程序段第3~5行已是第一个if语句的一条完整的内嵌语句,是一个if流程,因此不能再与else子句配对,从而使得else与第一个if语句配对。

4.switch多路开关语句

一般形式为:
switch(表达式)
{
case常量1:语句1;
       break;
case常量2:语句2;
       break;
……
case常量n:语句n;
       breakdefault:语句n+1;
}

      其中,switch,case和default为关键字。switch后的表达式可以是整型或字符型表达式,但不能是关系表达式或逻辑表达式。常量1~n可以是整数、字符或常量 表达式。

 

执行过程:计算swicth语句中的表达式的值,再依次与case后面的1~n个常量比较,当表达式的值与某个case后的常量相等时,则执行该case对应的语句;break语句可以跳出switch结构。

如果n个常量都不等于switch中的表达式的值,则执行default后的语句。

每个case后的语句可以是单条语句或空语句,也可以是多条语句构成的一个程序段。

break语句的作用是结束switch语句,使流程跳出switch结构。缺少break语句不能实现多路分支。

5.for循环

一般形式:

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

       循环体

表达式1——一般为赋值表达式,为循环控制变量赋初值

 表达式2——一般为关系表达式或逻辑表达式,为控制循环结束的条件。

表达式3——一般为赋值表达式,对循环控制变量进行修改(增量或减量)

循环体——可以是单语句,也可以是复合语句

6.while循环和do…while循环

1)while语句

while语句

一般形式:

while(表达式)

           循环体

2)do…while语句

一般形式为:

do循环体while(表达式);

7.循环嵌套

 

1for(…)
     {
     …
       while(…)
               {…}
       ……
      }
2do
     {
      …
        for(…)
         {…}
      …
      }while3)while(…)
   {
     …
     do{
    …  
          }while();
    …
    }
4for(…)
   {
    …
       for(…)
            {…}
    …
    }

 

 

 


 8.break,continue,goto语句

1)break语句

可用于switch语句中,使某个case子句执行完后,跳出switch结构,实现多路分支。

在for、while和do…while循环结构中,当需要循环在一定条件下提前终止时,break语句可以跳转出循环结构。

break语句提供了通过中间测试使循环结束的中间出口方法。

2)continue语句

continue语句只能用于循环结构,continue语句结束本次循环,直接进入本循环结构的下一次循环操作

3)goto语句

一般形式为

goto标号;

标号:语句

标号使用标识符表达

标号代表的语句可以是一个空语句

goto语句只能从循环嵌套内层转向外层,反之则不行。

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程