第4章 控制语句

来源:互联网 发布:淘宝怎么申请退保证金 编辑:程序博客网 时间:2024/05/12 09:12

4.1顺序结构

4.2选择结构

4.2.1 if语句

格式
if (表达式)
语句块1
else
语句块2
常见形式
1)简化形式
if(表达式) 语句块 例如: if(x>y) printf(“%d”,x);
2)阶梯形式
格式:
if(表达式1) 语句块1
else if(表达式2) 语句块2
else if(表达式3) 语句块3
else if(表达式4) 语句块4

else 语句块n
注意:
语句块:当有若干条语句时,必须用{…}括起来。
表达式:
1)if语句的表达式一般情况下为逻辑表达式或关系表达式。
如:if(a= =b && x= =y) printf(“a=b,x=y”);
2)也可以是任意类型(包括整型、实型、字符型、指针类型)
例如:if(‘a’) printf(“%d”,’a’);
if(‘3’) printf(“OK!”);
注意:“非零”与“零”的用法
思考:请区分if(x=1)与if(x= =1)的不同

3) 嵌套形式
格式
if语句的嵌套
if()
if() 语句块1
else 语句块2
else
if() 语句块3
else 语句块4
注意:
if语句中if与else的配对关系为:
else总是与它上面的最近的if配对.书写格式的缩进与否与它们之间的配对无关.
要实行强行的配对关系可以利用{ }
如: if()
{if() 语句块1}
else 语句块2

4.2.2条件运算符

在if语句中,表达式为真和假时都执行一条赋值语句并且都是给同一个变量赋值.这时可以把if语句简化为条件运算符.
表达式1?表达式2:表达式3;
if (a>b) max=a;
else max=b;  max=(a>b)?a:b;
注意:
1)条件运算符的执行顺序:
先求表达式1,若为真则求解表达式2,整个表达式的值为表达式2的值;若表达式1的值为假则求解表达式3,整个表达式的值为表达式3的值。
2)比较条件运算符与其他运算符的优先级别和结合性。
3)条件表达式中表达式1的类型可以与表达式2和表达式3的类型不一致.表达式2与表达式3的类型也可以不一致。

4.2.3 switch语句

格式
switch (表达式)
{
case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2; break;
….
case 常量表达式n:语句块n; break;
default :语句块n+1;
}
使用:
1)switch中的表达式可以是整型或字符型表达式
(也可以是枚举类型,新标准的c语言允许为任意类型.)
2)每个常量表达式的值必须各不相同,否则将会出现矛盾。
3)当表达式的值与case后面的常量表达式值相等时就执行此case后面的语句。
4)“case 常量:”只起语句标号的作用。
5)break语句在switch中的作用:强行跳出switch体转到其它某条语句,每个case后面应有一个break语句(否则程序的执行顺序将改变),default分支后的break可以省略。
6)各个case出现的先后顺序不影响程序的执行结果.
7)多个case可以执行一组语句.

4.3循环语句

4.3.1 for语句

格式
for(变量;条件;表达式)
{语句}

4.3.2 while语句

格式:
while(表达式)
{语句}

4.3.3 do while语句

do
{语句}while(条件)

4.4.其他

break语句
1)用于从循环体内跳出循环体,即提前结束循环。
2)break只能用在循环语句和switch语句中.
continue语句
结束本次循环,接着判定下一次是否执行循环。
continue与break的区别:
continue直结束本次循环,而break终止本层循环.
return语句
return语句主要用于终止包含它的函数的执行,当然终止包含return语句的分支语句或循环语句,执行完return语句之后,将把控制转移给调用函数。
若return终止的为主函数,控制返回到操作系统。根据它所在函数返回值的类型,return对<表达式>运算后,将其数值转换为相应的函数类型,返回给调用函数。
return语句的一般形式:return ( <表达式> ) ;

小贴士:

1.static 用法
1)

#include <stdio.h>void fun(){    int i=0;    i=i+5;    printf(“%d”,i);} int main (int argc,char **argv){    fun();    fun();        return 0;}

结果为:
5
5

2)

#include <stdio.h>void fun(){    static int i=0;    i=i+5;    printf(“%d”,i);} int main (int argc,char **argv){    fun();    fun();        return 0;}

结果为:
5
10

3)

#include <stdio.h>void fun(){    static int i;     i=0;    i=i+5;    printf(“%d”,i);} int main (int argc,char **argv){    fun();    fun();    return 0;}

结果为:
5
5

4)

#include <stdio.h>void fun(){    int i;    i=0;    i=i+5;    printf(“%d”,i);} int main (int argc,char **argv){    fun();    fun();    return 0;}

结果为:
5
5