第四章语句

1.表达式语句和空语句

1)表达式语句:任何一种表达式末尾加上分号组成的语句

(有时单独存在的表达式语句是没有实际意义的,需要将其表达式的值赋给某个变量才有意义。)

2)空语句:空语句是一种只有分号,没有表达式的特殊语句。(它是“不做事情”的语句,用其来延迟一段时间。)

2.复合语句和分程序

1)复合语句:由两条或两条以上语句用花括号{}括起来的语句序列。

(语句可以简单的划分为:单语句,复合语句,单语句是指只有一条语句,复合语句是多条语句的总称,多条语句用花括号括起来才称为复合语句。没有花括号括起来的若干条单语句只能称为语句序列。复合语句在程序中没看作是一条语句。复合语句可以嵌套。)

复合语句和函数体虽然都由花括号括起来但:复合语句是由两条或两条以上语句序列组成的,而函数体内可以包含若干个复合语句,也可以只有一条语句,也可没有语句。

2)分程序:花括号内含有说明语句的复合语句

{说明语句}

{执行语句}

说明语句一低昂要放在执行语句前。

3.分支语句

1)条件语句:根据指定的条件安决定执行不同程序段的语句。

格式如下:

If(条件1)

(语句1

Else if(条件语句2

(语句2

Else(条件语句3

(语句3          ifif下最近的else匹配)

 

举个例子:

要求输入两个数,案由大到小的顺寻输出,程序如下:

#include <stdio.h>

int main()

{

int a,b,c=0;

printf("请输入a,b:");

scanf("%d%d",&a,&b);

if(a<b)

{

c=a;

a=b;

b=c;

}

printf("%d,%d\n",a,b);

getchar();

getchar();

}

结果为:

 

2)开关语句:(又称switch语句)

格式如下:

Switch(×××表达式)

{

Case(×××表达式1):{程序段1}

Case(×××表达式2):{程序段2}

Case(×××表达式3):{程序段3}

Case(×××表达式4):{程序段4}

Case(×××表达式N):{程序段N}

Default:(程序段N+1)

}

解释一下:

其中,switch,case,default是关键字。{×××表达式}要求其表达式的值为int型数,否则转换为int型,程序段是由0条刀多条语句组成的语句序列,一般情况下在末尾加上break跳出开关语句。

其大体执行过程为:计算switch关键字后面的{×××表达式的值},并转换成int型数,然后用该值按顺序的与case关键字后的{×××表达式的值}进行比较,如果相等则执行case后的执行语句,遇到berak跳出开关语句,否则继续执行下面的case语句直到执行完最后一个程序段,遇到右花括号为止。

举个例子:

要求可以对两个浮点型数分别进行,加,减,乘,除运算。

程序如下:

#include <stdio.h>

int main()

{

float a,b;

char op;

printf("请输入a,op,b:");

scanf("%f,%c,%f",&a,&op,&b);

switch(op)

{

case'+':printf("%.2f%c%.2f=%.2f\n",a,op,b,a+b);

case'-':printf("%.2f%c%.2f=%.2f\n",a,op,b,a-b);

case'*':printf("%.2f%c%.2f=%.2f\n",a,op,b,a*b);

case'/':printf("%.2f%c%.2f=%.2f\n",a,op,b,a/b);

default:printf("op is error!\n");

}

     getchar();         getchar();         getchar();   

}

结果为:

 

咦不对吧?写的减,怎么除了减法运算外还运行了乘除运算?(因为没有遇见break,匹配上了减法运算后,不再进行匹配,继续执行后面的case运算。)

我们来调一下:

#include <stdio.h>

int main()

{

float a,b;

char op;

printf("请输入a,op,b:");

scanf("%f,%c,%f",&a,&op,&b);

switch(op)

{

case'+':printf("%.2f%c%.2f=%.2f\n",a,op,b,a+b);

break;

case'-':printf("%.2f%c%.2f=%.2f\n",a,op,b,a-b);

break;

case'*':printf("%.2f%c%.2f=%.2f\n",a,op,b,a*b);

break;

case'/':printf("%.2f%c%.2f=%.2f\n",a,op,b,a/b);

break;

default:printf("op is error!\n");

 

}

     getchar();         getchar();         getchar();   

}

结果是不是就正常了哈!