第四章       语 句
 表达式语句
    表达式语句是指任何一种表达式末尾加上分号〔;)所组成的语句。在C语言程序中,表达式语句出现得最多,因此,有人说C语言是表达式语言。
    表达式语句与表达式之间虽然只差一个分号(;),但二者是截然不同的。在程序中,有的地方需要用表达式,则不能写成表达式语句。例如,在if语句或循环语句的条件中,要求用表达式作为条件,如果写成表达式语句(即末尾加了分号),则是错误的。同样,在要求用表达式语句的地方,写成表达式(即少写一个分号),也是错误的。所以,读者一定要搞清楚何时用表达式,何时用表达式语句,二者不要搞混了。
    例如,
    b=a+3
    是一个表达式;而
    b=a十3;
    便是一个表达式语句,这是一个赋值表达式语句。类似地,表达式语句还有:
    ++i;            (算术表达式语句)
    m>n7m:n;        (条件表达式语句)
    b==5            (比较表达式语句)
    x&&++y||Z;      (逻辑表达式语);
    printf("0n!\n")  (函数调用也是表达式语句)
    i=a,j=5,k=7;    (逗号表达式语句)
    等等。
    有些表达式语句虽然是合法的,例如,
    m> n? m;n;
    但是,它并没有实际意义,需要将其表达式的值赋给某个变量才有意义。例如,
    x=m>n? m:n;
    这是一个有意义的表达式语句,它将一个表达式m>n? m ; n的值赋给了变量x.
    虽然任何一个表达式加上分号都构成表达式语句,但在程序中要出现的是有意义的表达式语句。
  空语句
    空语句是一种只有分号而没有表达式的特殊语句。空语句是c语句中最简单的语句,因为它只由一个分号(;)组成。
    空语句是一种不执行任何操作的语句。说它是特殊语句是指它是一种"不做事情"的语句。
    空语句在编程中也是有用的,它主要被用在需要一条不做事情的语句的地方。例如,它可用来作循环体,则该循环是空循环。下面是一个为了延迟一段时间的循环,其循环体可用空语句。
    for<i=0: i<1000;i++)
    空语句还可以用在goto.语句中语句标号的后面,即需要goto语句转向一条什么事情都不做
的语句,那么在该语句标号的后面可用空语句。
 复合语句
  复合语句是指由两条或两条以上语句用花括号({})括起来的语句序列。
    C语句中的语句简单地划分为单条语句和复合语句两类。单条语句是指只有一条语句,而复合语句是指多条语句的总称,但是,多条语句用花括号括起来才称复合语句。没有用花括号括起的若干条单条语句只能称为语句序列。所以,复合语句是一种特殊的语句序列,它被一对花括号括起来,它在程序中被看作是一条语句。一般地说,凡是可以出现一条语句的地方都可以出现复合语句。
    复合语句是C语言程序中常用的语句形式之一。在复合语句内部还可以包含有复合语句,即复合语句可以嵌套。例如,
    上述便是复合语句嵌套的一种形式。复合语句常用作if语句的if体、else体和else if体以及循环语句的循环体等。
    复合语句和函数体虽然都是用一对花括号({})来定界的,但是两者间是有区别的。复合语句是由两条或两条以上语句序列组成的,而函数体内可以是多条语句的语句序列,也可以只有单条语句,还可以没有语句,即为空。另外,函数体内可以包含若干个复合语句,而复合语句内不能包含函数体,只能包含复合语句。
  分程序
    分程序又称程序块。分程序是一种花括号内含有说明语句的复合语句。分程序是一种复合语句,但是复合语句不一定是分程序,只有包含说明语句的复合语句才是分程序。因此,复合语句包含了分程序,分程序是复合语句的一种。具有下列格式的复合语句是分程序:
    (说明语句序列)
    (执行语句序列)
    }printf输出格式两个逗号
    在分程序中,说明语句序列一定要放在执行语句序列的前边。
    在分程序内可以定义或说明变量,也可以对已定义过的变量进行重新定义。在分程序中定义的变量都是属于局部变量,它的作用域仅在定义它的分程序内。有关这方面的详细情况在讲述存储类时再做详细描述。
条件语句
  条件语句是一种根据指定的条件来决定执行不同的程序段的语句。条件语句又称if语句。
    1.条件语句的格式和功能
    条件语句的格式如下:
    if(条件i>)
    (语句1)
    else if((条件2))
    (语句2>
    else if((条件3))
    (语句3)
    else if((条件N))
    (语句N)
    else
    (语句N+1>
    这是if语句的完整的格式,其中,if和。lse都是关键字。(条件1)至<条件N)都是任一表达式,用来指出条件的表达式多是关系表达式和逻辑表达式,也可用其他表达式。<语句1)至(语句N -} })都是单条语句或复合语句。
    在if语句中,至少要有一个if短语,最简单的if语句格式如下:
    if(条件))
    (语句)
    在if语句中,除了至少要有一个if短语之外,可以有一个(只能有一个)else短语,或者没
有else短语。else if短语在if语句中可以没有,也可以有一个或多个。一般在多路分支的间题中,需要用到多个else if短语。具有一个else短语而无else if短语的if语句格式如下:
    if(条件1))
    (语句1)
    else
    (语句2)
    if语句的功能描述如下:
    先计算(条件1)中表达式的值,如果其值为非零,则执行(语句1),然后执行该if语句后边语句,如果其值为非零,则不执行(语句1>,接着计算《条件2)中表达式的值。如果其值为非零,则执行(语句2),然后执行该if语句后边语句;如果其值为零,则不执行<语句2),接,计算<条件3)中表达式的值,再判断,依次类推。如果N个条件对应的表达式的值全都为零,则执行<语句N+1)然后执行该if语句后边的语句。如果N个条件对应的表达式中某个值不为零,则执行该条件后边的语句,然后退出if语句,即执行该if语句后边的语句。
    if语句的功能可用下图所示:
  2. if语句的应用
    if语句在具体应用中要注意:一个if语句中只能有一个。Ise短语,也可以没有。lse短语,而且在多重嵌套的if语句中,else短语总是与它前面最近的if相匹配的。
    下面通过]L个具体例子说明if语句的使用。
    [例4.1]输入两个整数,按其值由大到小顺序输出这两个数。
    Main()
    {
    int a,b,t,
    pcintf("Input a,b;"),
    scanf ("%d%d"&a,&b),
    if(a<b)
    {
    t=a
    a=b,
    b=t,
    }
    printf (%d,"d\n,",a,b);
    }
    执行该程序后,屏幕显示如下提示信息:
    Inputa,b,  3u5
    输入3和5后,按回车键3与5之间用空格符分隔,屏幕显示如下结果:
    5.3
    说明:该程序中使用了最简单的if语句的格式。仅有if短语和一个if体,该if体用一个复合语句,它由3条斌值表达式语句组成,其功能是实现变量a和b之间的内容的交换。交换方法是通过第3个变量t,先将a的值斌给t,再将b的值赋给a,最后将t的值赋给b.其关系如下所示:
    通过上述方法使得变量a和b的值进行了交换。这是一种有用的算法,以后还会用到。
    如果要求将两个整数按由小到大的顺序输出时,只需将程序中
    if (a<b)
    改写为
    if <a>b)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。