首页 理论教育 C语言程序设计:程序控制及for循环解析

C语言程序设计:程序控制及for循环解析

时间:2023-11-01 理论教育 版权反馈
【摘要】:for后面圆括号中通常含有3个表达式,用“;”隔开,可以是任意形式合法的表达式。

C语言程序设计:程序控制及for循环解析

与其他高级程序设计语言一样,在C语言中也有三种基本程序控制结构:顺序结构、选择(分支)结构、循环结构。另外还有辅助控制转向语句:如,break语句和continue语句等。

1.顺序结构

顺序结构是三种基本程序控制结构中最简单的一种,按照语句出现的先后顺序依次执行。

2.选择结构

选择结构可以根据判断给定的条件是否成立,来选择执行不同的程序段落。通过选择结构可以控制程序的走向。在C语言中,实现选择结构的语句主要有if条件语句和switch语句。

(1)if 条件语句

if条件语句分为单分支、双分支、多分支三种形式。

● 单分支语句

if单分支语句的语法格式如下:

单分支语句的执行过程是:先计算表达式的值,若值为“真”(即表达式具有非0值),则执行语句段,然后执行单分支语句后面的语句。若表达式的值为“假”( 即表达式的值为0),就跳过该语句,直接执行单分支语句后面的语句。

● 双分支语句

if双分支语句的语法格式如下:

双分支语句的执行过程是:先计算表达式的值,若值为“真”(即表达式具有非0值),则执行语句段1,然后执行双分支语句后面的语句。若表达式的值为“假”( 即表达式的值为0),则执行语句段2,然后执行双分支语句后面的语句。

● 多分支语句

当判断条件有多种情况(多于两种)时,可以使用if 多分支语句。

if多分支语句的语法格式如下:

if多分支语句的执行过程是:首先计算表达式1的值,如果值为“真”(即表达式1具有非0值),则执行语句段1,然后跳过其他语句段,直接执行后续语句;否则跳过语句段1,接着依次判断其他表达式,如果某个表达式的值为“真”(即该表达式具有非0值),就执行其分支的语句段,之后转到后续语句执行;如果所有表达式的值都是“假”(即值都是0),则执行最后一个分支else中的语句段n+1。

多分支语句也可以没有最后一段else部分。此时,如果没有任何一个分支的表达式结果为真,则不执行任何一个语句段,直接跳过去执行后续语句。

对if条件语句,需要注意下面三点:

● if后面的表达式一般为关系表达式或逻辑表达式,也可以使C语言中的任何一种其他表达式。例如,以下的几种形式都是合法的:

● 当if语句嵌套使用时,要注意if与else的配对关系。else总是与它上面最近的未配对的if配对。如果if与else的数目不一样,可以加花括号来确定配对关系。

(2)switch语句

当判断条件有多种情况(多于两种)时,也可以使用多分支专用的switch 语句。

switch语句的语法格式如下:

其中,switch、case和default是关键字,switch后面圆括号中表达式的值为整型字符型。花括号内的部分是switch的语句体,case后面必须是整型、字符型的常量或常量表达式。冒号后面是当表达式的值与某个常量相等时,需执行的语句段。如果所有的常量都不与表达式的值相等,就执行default后面的语句段。

对switch语句,要注意下面几点:

● switch 后面的表达式在ANSI标准中允许为任何类型,但通常为整型或字符型,如果是实型数据,系统会自动将其转换成整型或字符型。case 后面的常量表达式,则为整数或字符常量。

● 各个case 和 default 的出现顺序可以是任意的,但各个常量表达式的值必须互不相同。

● 执行完一个case 后面的语句段后,流程控制转移到下一个case 继续执行。因此,为了使多分支结构程序得以实现,通常在语句段的最后添加break 语句。

● 多个case 可以共用一个语句段。例如:

在此程序段中,三个case共用 “printf(">64\n"); break; ” 语句段。

3.循环结构

循环结构是指按照一定的条件,控制重复执行某个程序段的一种结构。C语言中用来实现循环控制结构的语句有3种:for语句、while语句、do-while语句。

(1)for语句

(www.xing528.com)

for 语句的语法格式如下:for语句中,花括号内的内嵌语句为循环体,可以是一条或多条语句构成。for后面圆括号中通常含有3个表达式,用“;”隔开,可以是任意形式合法的表达式。注意圆括号后面没有“;”。

for循环的执行过程是:首先计算表达式1的值,再判断表达式2,如果其值为“真”(即表达式2的值非0),则执行循环体,并计算表达式3;接着再去判断表达式2,一直到其值为“假”(即值为0)时结束循环,执行后续语句。

for 循环不仅可以用于循环次数已经确定的情况,也可以用于循环次数不确定的情况;for 后圆括号内的三个表达式可以是C语言的任何一种表达式,也可以都缺省,但三个部分的分号不能省。

对for循环,如果表达式2的初始值就为“假”,则循环体一次也不被执行

(2)while语句

while循环是一种典型的“当型”循环结构,根据判断条件决定是否执行循环体。while语句的语法格式如下:

While后圆括号中的表达式用来控制循环体是否执行,一般是关系表达式或逻辑表达式,也可以是返回值为0或非0的其他合法表达式。花括号内的内嵌语句为循环体。圆括号后面也是没有“;”,否则会发生空循环。

While语句的执行过程是:首先计算表达式的值,当其值为“真”(即表达式值非0 )时,重复执行循环体,每执行一次,就判断一次表达式的值,直到其值为“假”(即表达式值为0)时,结束循环,执行后续语句。

对while循环,如果表达式的初始值就为“假”,则循环体一次都不被执行。

(3)do-while语句

do-while 语句是一种“直到型”循环结构。该语句执行时,先进入循环执行循环体,再进行条件判断。根据循环条件是否成立,决定是否继续执行循环体。

do-while 语句的语法格式为:do后面的内嵌语句是循环体,while后面圆括号内的表达式用于进行条件判断,决定循环体是否继续执行。圆括号后面有“;”,表示语句结束,这与for循环、while循环语句不同。

do-while语句的执行过程是:首先执行循环体,然后计算while圆括号中表达式的值,当其值为“真”(即值非0)时,再重复执行循环体,并判断条件,直到表达式的值为“假”(即值为0)时,结束循环,执行do-while语句的后续语句。

do-while语句的循环体,至少被执行一次。

(4)无穷循环

在使用循环结构时,如果忘记了更新循环控制变量,就会出现循环条件始终为真的情况,这时就会出现无穷循环(无限次的循环)。除非特殊需要,一般情况下,要尽量避免出现这种情况。

在图3-1中,所示的两种循环结构都表示无穷循环,这两种循环结构在功能上是等价的。

图3-1 两种无穷循环

4.辅助控制语句

C语言中,经常使用的辅助控制语句有break 和 continue 两种。

break语句用在switch语句中,用于跳出switch语句体。同样,在循环结构中,也可用break语句终止本层循环体,提前结束本层循环。

continue语句的作用是跳过当前循环体后面的语句,即结束本次循环,进行下一次循环。

这两种辅助控制语句使用示意,如图3-2所示。

图3-2 break和continue使用示意图

(1)break 语句

break 语句经常用于终止循环语句的运行。

例如:

以上程序段是已知8次的for 循环,但实际只循环了4次。因为i=4时,if条件满足,执行break语句终止了循环。在循环体中用break语句,一般应该与if语句配合使用。

(2)continue 语句

continue 语句只用在循环语句中。在循环体中,当程序流程执行到continue时,就结束本次循环,不再运行循环体中continue 语句后面的其他语句,强行进行下一次循环,但并不退出循环。

例如:

在此程序段运行时,当变量i的值循环到4和8时,表达式“i%4==0”为真,执行contiune语句结束本次循环,使循环变量i的值增1并将程序流程转向for继续进行下一次循环。在这种情况下,语句“sum=sum+i;”不被执行。当循环变量i的值不等于4或8时,表达式“i%4==0”为假,系统直接执行语句“sum=sum+i;”后使循环变量i的值增1并将程序流程转向for继续进行下一次循环。

以上程序段运行时的输出结果如下:

退出for循环时:i=9, sum=24。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈