C程序设计第6章 循环结构程序设计

发布 2019-09-11 19:12:00 阅读 5459

第6章循环结构程序设计。

许多问题的求解归结为重复执行的操作,例如输入多个同学的成绩、对象遍历、迭代求根等问题。这种重复执行的操作在程序设计语言中用循环控制来实现。几乎所有实用程序都包含循环。

特别是在现代多**处理程序(图像、声音、通讯)中,循环更是必不可少。

根据开始循环的初始条件和结束循环的条件不同,c语言中用如下语句实现循环。

1) while语句。

2) do-while语句。

3) for语句。

4) 用goto语句和if语句构成循环。

循环结构在程序设计中十分重要。所谓循环结构就是当给定条件成立时,反复执行某段程序,直到条件不成立时为止。给定的条件称为循环条件,反复执行的程序段称为循环体。

6.1 while语句。

while语句最简单的情况为循环体只有一个语句,其形式如下:

while(表达式) 语句;

但是,while语句通常使用更复杂的形式,也就是其一般形式:

while(表达式)

其中表达式是循环条件,语句序列为循环体。其执行过程是:先计算while后面圆括号内表达式的值,如果其值为真(非0),则执行语句序列(循环体),然后再计算while后面圆括号内表达式的值,并重复上述过程,直到表达式的值为“假”(值为0)时,退出循环,并转入下一语句去执行。

while循环的执行流程如图6-1所示。

使用while语句时,需注意如下几个问题:

1) while语句的特点是先判断表达式的值,然后根据表达式的值决定是否执行循环体中的语句,因此,如果表达式的值一开始就为“假“,则循环体将一次也不执行。

2)当循环体由多各语句组成时,必须用左、右花括号括起来,使其形成复合语句。如:

while(x>0)

printf("sum=%f",sum);

运行结果:sum=2.907979

注意:在此程序中,在循环体中进行累加计算时,必须要对变量i进行强制类型转换,即利用(float)i使其变为浮点型中间变量后再参加运算,否则,由于i中存放的是大于1的整型量,所以,1/i将按整型规则运算,其结果总是为0。

6.2 do-while循环语句。

do-while循环结构的形式如下:

do语句序列(循环体);

while(表达式);例如:do

while(i<10);

说明:1) do是c语言的关键字,必须与while联合使用。

2) do-while循环由do开始,用while结束。必须注意的是:在while(表达式)后的“;”不可丢,它表示do-while语句的结束。

3) while后一对圆括号中的表达式,可以是c语言中任意合法的表达式。由它控制循环是否执行。

4) 按语法,在do和while之间的循环体只能是一条可执行语句。若循环体内需要多个语句,应该用大括号括起来,组成复合语句。

do-while 循环的执行过程是这样的(如图6-3所示):

1) 执行do后面循环体中的语句。

2) 计算while后面一对圆括号中表达式的值。当值为非零时,转去执行步骤1;当值为零时,执行步骤(3)。

3) 退出do-while循环。

由do-while构成的循环与while循环十分相似,它们之间的主要区别是: while循环结构的判断控制出现在循环体之前,只有当 while后面表达式的值为非零时,才能执行循环体;在do-while构成的循环结构中,总是先执行一次循环体,然后再求表达式的值,因此,无论表达式的值是零还是非零,循环体至少要被执行一次。

和while循环一样,在do-while循环体中,一定要有能使while后表达式的值变为0的操作,否则,循环将会无限制的进行下去。

例6-3】利用do-while语句,编写程序,求1+2+3+…+100的值。

根据do-while循环的结构,先画出流程图,见图6-4((a)是传统流程图,(b)是n-s图)。程序如下:

#include""

main ()

int i=1,sum=0;

dowhile(i<=100);

printf("sum=%d",sum);

程序运行后的输出结果:

sum=5050

使用do-while语句应注意如下几个问题:

1) 由于do-while语句是先执行一次循环体,然后再判断表达式的值。所以,无论一开始表达式的值为“真”还是为“假”,循环体中的语句都至少被执行一次,这一点同while语句是有区别的。

2) 如果do-while语句的循环体部分是由多个语句组成的话,则必须用左、右花括号括起来,使其形成复合语句。

3) c语言中的do-while语句是在表达式的值为真时重复执行循环体,这一点与别的语言中类似语句有区别,在程序设计时应引起注意。

例6-4】 利用do-while语句计算1+1/2+1/4+…+1/50的值,并显示出来。

main()

int i=2;

float sum=1;

dowhile(i<=50);

printf("sum=%f",sum);

运行结果:sum=2.907979

在一般情况下,用while语句和do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。如例6-1和例6-3中的循环体是相同的,得到的结果也相同。但在while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。

例6-5】while和do-while循环的比较。

mainmain()

int sum=0,iint sum=0,i;

scanf("%d",&iscanf("%d",&i);

while(i<=10do

sum=sum+isum=sum+i;

ii++;while(i<=10);

printf("sum=%d",sumprintf("sum=%d",sum);

C语言程序设计 循环结构程序设计

实验报告四。一 实验目的 1 了解当型循环和直到型循环的执行机理。2 熟练掌握三种循环语句 while do while和for的使用。3 掌握break和continue语句在循环中的控制作用。4 掌握利用循环语句求解一些常用算法的方法。二 实验内容 实验4 1 鸡兔共笼有30个头,92只脚,求鸡...

第5章循环结构程序设计

通过本章实验作业应达目标 1 熟悉while for do while break continue语句的作用与使用规范,能使用while语句 for语句 do while语句实现循环结构 2 掌握循环结构和选择结构之间嵌套 多重循环间嵌套的设计方法。3 进行算法设计训练,能综合所学控制结构语句解决...

C语言 循环结构程序设计

实验报告三。课程名称 c语言程序设计。实验项目名称 循环结构程序设计实验时间 班级姓名学号 t span cr r 11 实验目的 1.熟练while do while和for三种循环语句的应用。2 掌握三种循环语句使用的区别。实验环境 turbo c 2.0 win tc 实验内容及过程 1 编程...