欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

控制语句

程序员文章站 2022-05-17 14:49:35
程序的三种基本结构 复合语句 将若干个C语句使用花括号{ }包括起来形成复合语句。花括号内可以包含任何C语句, 其一般形式为: { 语句1; 语句2; …… 语句n; } 1.if条件分支语句 if语句有三种语法形式,构成三种分支结构。 1)流程(单选控制结构) 语句形式如下: if (表达式)语句 ......

程序的三种基本结构

控制语句控制语句控制语句

控制语句

复合语句

将若干个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=%d\n",a);
    else
      printf("max=%d\n",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;
       break;
default:语句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.循环嵌套

 

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

 

 

 


 8.break,continue,goto语句

1)break语句

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

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

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

2)continue语句

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

3)goto语句

一般形式为

goto标号;

标号:语句

标号使用标识符表达

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

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