C语言中 case不可以单独出现,C语言 if case 分支选择结构

复合语句

在C语言中,用一对花括号“{ }”将若干条语句括起来成为一个语句组,称为复合语句,其一般形式如下:

{ 语句1; 语句2; 语句3;……; 语句n ; }

花括号内语句的数量、类型不限,可以是声明语句、赋值语句等;一个复合语句在语法上被视为一条语句。例如:

#include

main()

{ ……

{int a,b,c;          /*变量a,b,c只能在此复合语句内使用*/

a=10; b=20;

c=a+b;

printf(“%d,%d,%d\n”,a,b,c);

}

…… }

注意,复合语句内的定义变量语句要出现在执行语句之前,且复合语句内定义的变量只能在该复合语句内部有效。

4.2 二分支选择结构

一、简单的二分支选择结构

C语言的if语句有两种基本形式。

1、独立if结构

(1)语法形式

if(表达式)

语句

其中,

①if是C语言的关键字;

②表达式可以是任意的表达式且一对圆括号不可缺省;

③语句可以是一条简单语句或复合语句。

(2)执行过程

37436648_1.gif

首先计算表达式的值,然后根据其真假来决定程序的走向。若表达式为真(值为非零)则执行语句,若为假(值为零)则不执行语句。退出分支结构后程序继续执行if结构后面的语句。

图4.1 if结构流程图

(3)举例

if(a>b)

b++;

若a的初值为20,b的初值为10,则表达式(a>b)为真,执行语句“b++;”,则a的结果为20,b的结果为11。

若a的初值为10,b的初值为20,则表达式(a>b)为假,不执行语句“b++;”,则a和b均保留初值:10和20。

如果语句为复合语句,将以上程序段改为:

if(a>b)

{ b++;

a++; } 则,

若a的初值为20,b的初值为10,则表达式(a>b)为真,执行语句“b++;”和“a++;”, a的结果为21,b的结果为11。而若a的初值为10,b的初值为20,则表达式(a>b)为假,语句“b++;”和“a++;”均不被执行,a的结果仍为10,b的结果仍为20。若将复合语句的一对花括号去掉则程序段成为:

if(a>b)

b++;

a++;

此时,语句“a++;”已不再属于if结构,不管条件为真或为假,对于整个程序来说它都将被执行。

2、if-else结构

(1)语法形式

if(表达式)

语句1

else

语句2

其中,

①if和else是C语言的关键字,表达式及语句1、语句2解释同上;

②else不能独立存在,它必须与if语句配对、组合方可使用,否则会产生语法错误;

③else后面绝对不能跟条件表达式,它执行的条件是隐含的,即与之配对的if的反面。

(2)执行过程

37436648_2.gif

首先计算表达式的值,然后根据其真假来决定程序的走向。若表达式为真(值为非零)则执行语句1,若为假(值为零)则执行语句2。退出分支结构后程序继续执行if-else结构后面的语句。

图4.2 if-else结构流程图

(3)举例

if(a>b)

b++;

else

a++;

若a的初值为20,b的初值为10,则表达式(a>b)为真,执行语句“b++;”,然后退出if-else结构,则a的结果为20,b的结果为11。

若a的初值为10,b的初值为20,则表达式(a>b)为假,执行语句“a++;”,然后退出if-else结构,则a的结果为11,b的结果为20。

前文曾提到过语句1和语句2都可以是复合语句,但如果不慎将语句1的花括号丢了,则编译时会出现语法错误,如下例:

main()

{int a=1,b=2;

if(a>b) a++; b--;

else a--; }

该程序执行时会出现错误提示信息:“Error:Misplaced else in function main”,因为此时else不能与if合法匹配,而else又不能独立存在,所以出现了上述错误。

二、嵌套的二分支选择结构

1、在if语句中嵌套分支结构

(1)语法形式

if(表达式1)

if(表达式2) 语句1

else   语句2

else 语句3

其中,

①表达式1、2均可以是任意的表达式;

②语句1、2、3均可以是一条简单语句或复合语句;

③内层if-else语句书写时注意格式缩进以培养良好的程序设计风格;

④内层if-else结构仍然可以继续嵌套,以此类推。

(2)执行过程

首先计算表达式1的值,若表达式1为真则执行内层if-else语句,若表达式1为假则执行语句3。若执行内层if-else语句,则计算表达式2的值,若表达式2为真则执行语句1,若表达式2为假则执行语句2。总之,程序必须在语句1、2、3中选择其一来执行。

37436648_3.gif

(a)外层if-else流程图                  (b)内层if-else流程图

图4.3 if嵌套的分支结构流程图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值