zoukankan      html  css  js  c++  java
  • 控制语句

    程序的三种基本结构

    复合语句

    将若干个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
    ",a);
        else
          printf("max=%d
    ",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语句只能从循环嵌套内层转向外层,反之则不行。

     

  • 相关阅读:
    Napa简介——基于Web用于Outlook/SharePoint的IDE
    Azul开源Zing Jvm
    如何控制单元测试的粒度?
    存储过程与Entity Framework
    Java增强的for循环和普通for循环对比
    Java中的static变量、方法、代码块初始化执行顺序
    推荐一款好用的博客软件——菊子曰
    Android进程与线程
    OPhone SDK
    开始学习Android
  • 原文地址:https://www.cnblogs.com/action0/p/10288350.html
Copyright © 2011-2022 走看看