C语言及程序设计课件1第五章 循环结构程序设计_第1页
C语言及程序设计课件1第五章 循环结构程序设计_第2页
C语言及程序设计课件1第五章 循环结构程序设计_第3页
C语言及程序设计课件1第五章 循环结构程序设计_第4页
C语言及程序设计课件1第五章 循环结构程序设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教学要点和重点教学要点:循环结构的特点,使用方法及各参数变量的设计。教学重点:循环表达式中各参数的设计技巧包括循环因子的选择,循环条件的设计及循环因子的条件变化等。如何利用循环结构处理复杂问题。第五章循环结构程序设计C语言提供了多种循环语句如while语句、do-while语句和for语句,可以组成各种不同形式的循环结构。

while语句用来实现“当型”循环结构。其一般形式如下:while(表达式)循环体语句功能:先计算表达式的值,若表达式的值为真(值非0)时,重复执行语句,即执行循环体语句;否则当表达式的值为假(结果为0)时,循环结束,转而执行while语句之后的语句。5.1while和do-while循环结构5.1.1while语句的一般形式图5-1while语句流程图注意:如果循环体包含有2条或2条以上的语句,则必须用一对花括号将语句括起来,即循环体是一个复合语句。不加花括号就表示循环体只包含一条语句。如下面的程序段:

while(表达式)语句1;语句2;当循环条件成立时,只有语句1是循环体语句,会被重复执行,语句2不属于while语句范围,只有while循环语句结束后才被执行。【例5.1】编写一个程序,从1+2+3+4+……+100,求这个值是多少?程序部分如下:

程序说明:随着循环的执行,不断有新输入的数累加到sum上,最后得到累加和。循环结束后,执行循环的后续语句“printf(“sum=%d\n”,sum);”,输出结果,程序结束。5.1.1while语句的一般形式①while语句是先判断条件,然后决定是否执行循环体。如果循环继续条件(即表达式)的值一开始就为“假”(0),则循环体不会被执行,而是直接执行循环语句的后续语句,while循环又称入口条件循环。②为使循环能正常结束,应保证每次执行循环体后,表达式的值会有一种向“假”变化的趋势,如果i的值不变化,表达式i<=n的值就永远为“真”,循环体就不断被执行不能停止,变成了无限循环(死循环)。如以下循环:i=15; while(i>0) {x++;}

由于每次循环体执行后,i的值都不改变,因此循环体不断地被执行,无法正常终止,成为一个死循环。③在进入循环之前应做好有关变量的初始化赋值操作。如上例中,累加变量sum初始化为0,i变量初始化为1。

5.1.2while语句使用说明

【例5.2】编写程序,用户从键盘输入20个数,求平均值并输出结果。

do-while语句的特点是先执行循环体一次,再判断循环条件是否成立,以决定循环是不是需要继续被执行,相当于执行循环直到循环继续条件不再成立时终止循环。

do-while语句实现“直到“型循环结构。其一般形式如下:

do

循环体语句

while(表达式);图5-2do-while语句流程图5.1.3do-while语句的一般形式功能:先执行循环体语句,然后计算表达式的值。若表达式值为真(值非0),继续执行循环;否则当表达式的值假(值为0)时,循环结束,执行do-while语句的后续语句。5.1.4do-while语句使用说明

do-while语句与while语句的使用方法相同,都由循环继续条件来决定循环体语句是否继续被重复执行。但while循环语句的执行顺序是先判断循环条件是否成立,根据判断结果决定循环体是否被执行,而do-while循环则首先执行一次循环体,然后再判断循环条件并根据判断结果决定循环体是否被执行,do-while循环又称出口条件循环。也就是说:do-while语句不论循环条件是否成立,循环体语句总会至少被执行一次。与while循环一样,为使循环能正常结束,do-while语句也应保证每次执行循环体后,表达式的值会有一种向“假”变化的趋势,防止出现无限循环条件。【例5.3】用do-while语句完成【例5.1】的要求;编写一个程序,从1+2+3+4+……+100,求这个值是多少?【例5.4】用do-while语句完成【例5.2】的要求,用户从键盘输入

20个数,求它们的平均值并输出结果。do-while语句实例5.2for循环结构和循环的嵌套从前面的while循环和do-while的循环例子可以看出,有三个执行步骤:①执行循环前对循环控制变量进行初始化;②在循环体中更新循环控制变量的值;③在循环继续条件中判断循环控制变量是否接近终止值。在C语言中for循环结构能更清楚看到这三个步骤。5.2.1for循环语句的一般形式

for循环是C程序使用最灵活的循环结构。其一般形式如下:

for(表达式1;表达式2;表达式3)

循环体语句功能:先执行表达式1语句,然后判断表达式2的值是否为真(值非0);如果为真,则执行循环体语句,接着执行表达式3,再判断表达式2的值;如此重复执行,直到表达式2的值为假(0)终止循环,跳转到循环体之后的语句执行。图5.3for语句流程图

在for语句中()中的三条表达式语句中表达式1通常是对循环控制变量进行初始化的语句(也可以是其他合法的C语句),表达式2是循环继续条件语句,表达式3通常是循环控制变量更新的语句(也同样可以是其他合法的C语句);

for循环语句最简单的应用形式也是最容易理解的形式如下:

for(循环变量初始化;循环继续条件;循环变量更新)

循环体语句【例5.6】使用for循环语句实现例【5.2】的要求,用户从键盘输入20个数,求它们的平均值并输出结果。5.2.1for循环语句的一般形式【例5.5】用for语句完成【例5.1】的要求,从1+2+3+4+……+100,求这个值是多少?5.2.2for循环语句使用说明①for语句可以取代while语句或do-while语句,尤其对于确定循环次数的循环,使用for语句让程序结构更加直观和容易理解。②for语句中()中的三条表达式语句可以省略,即可以将它们写在程序其他地方,但是它们之间的分号“;”不可省略。③在for循环的()中,表达式2也是可以省略的,比如写成下面这样形式:

for(;;)/*三个表达式都省略*/

循环体语句由于没有循环继续条件来判断循环在什么时候结束,这就形成了一个无限循环,除非是特别的用法(在循环体内有使循环终止的语句)。④C语言中的for循环是非常灵活的,可以把与循环控制无关的语句写在表达式1和表达式3中,这样可以使程序更短小简洁,但这样会使得for循环语句显得杂乱,可读性差,所以建议初学者最好不要采用后面两种形式(把与循环控制无关的语句写到for语句的()中)。5.2.3循环嵌套的形式在一个循环体内有包含另一个完整的循环结构,这样的循环结构称为循环的嵌套,也就是多层循环。其中包含其他循环、处于外部的循环叫外层循环,被包含在内部的循环也叫内层循环。5.2.4嵌套循环的说明①分析嵌套结构的循环程序时,要注意嵌套循环的执行顺序,由于外层循环的循环体包含了内层循环,所以外层循环体每次被执行时,先执行完内层循环前面的语句再进入到内层循环,内层循环在执行完所有的循环次数后再返回到外层循环,并继续往下执行。②关于被嵌套的内层循环执行次数,外层循环每执行一次,内层循环就要执行一个完整的循环周期,例如下面2重循环结构:

for(i=0;i<10;i++) {/*外层循环体开始*/ for(j=0;j<20;j++) {…;}/*内层循环的循环体*/ }/*外层循环体结束*/

外层循环次数为10,内层循环次数为20,整个2重嵌套循环被执行时,内层循环的循环体要执行10×20=200次。常见2重循环嵌套的结构形式5.3流程转向语句对于循环结构的程序而言,循环体是否继续重复执行是由循环条件决定的,如果程序员想要在某些特定的情况下希望中断循环或改变原来循环结构的执行流程,比如在满足某种条件下,提前从循环中跳出或者不再执行循环中剩下的语句,终止本次循环并重新开始一轮循环,就可以使用流程转向语句。

C语言中流程转向语句:goto语句、break语句和continue语句。5.3.1goto语句

goto语句是无条件转向语句,其语句形式为:goto语句标号;

goto语句包含两个部分:goto关键字和一个语句标号,语句标号是写在一条合法C语句前的一个标识符号,这个标识符加上一个“:”一起出现在函数内某条语句的前面。例如下面的printf语句前就有一个语句标号part1:

part1:printf(“Alabelbeforethissentence!”);

执行goto语句后,程序将跳转到该语句标号处并执行其后的语句。注意语句标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。5.3.2break语句break语句通常用在循环语句和switch-case多层分支语句中。当break用于switch-case语句中时,可使程序跳出switch-case语句而执行switch-case语句以后的语句。break语句的形式:

break;

break语句形式非常简单,只有关键字和一个分号“;”组成,在do-while、for、while循环语句中如果有break语句,如图5.5所示,当break语句被执行时,会终止它所在的循环,而去执行所在循环后面的语句。通常break语句是与if语句在一起使用,即当某种条件成立的时候便跳出它所在的那层循环。图5.5break语句执行情况5.3.3continue语句

continue语句只用在for语句、while语句、do-while语句构成的循环结构中,continue语句的作用是跳过所在循环体在本次循环中剩余的语句,而直接开始执行下一轮循环。continue语句的形式:continue;

continue语句由关键字continue和一个分号“;”组成,它常与if条件语句一起使用,用来加速循环。

注意:continue语句和break语句不同,break语句是终止本层循环,而continue只是提前结束本轮循环。图5.6continue语句执行情况5.4循环结构程序设计举例在具体使用循环结构来解决一个实际任务时,存在如何确定循环体执行次数、哪个循环语句最合适使用、循环体在执行过程中是否需要提前结束循环等问题,下面用一些实例来说明如何解决这些问题。5.4.1确定循环次数与不确定循环次数有一类问题在编写循环程序实现的时候,能够知道循环将要被执行的次数,请看下例:【例5.10】在屏幕上显示九九乘法表。程序设计分析:九九乘法表是一个9行的三角形的表格,每一行规律是从1乘以某个数开始,一直乘到此行行号为止,从上向下,每一行的列数是不同的,规律是第i行就有i列。可以使用2重嵌套循环来实现,外层循环每执行一次,显示一行的内容,内层循环每执行一次,显示2个数的乘积。【例5.11】编写一个程序,接收用户从键盘输入的字符,当用户输入回车时表示确认输入,统计用户输入了多少个字符(不含回车符)。程序设计分析:虽然无法预知循环的执行次数,但可以根据题目的要求来确定循环继续条件。使用循环来接收用户的输入,每次接收一个字符都判断其是否是回车符,如不是则把计数变量的值增加1。5.4.2选择循环语句

C语言中提供了while语句、do-while语句和for语句,用来构成循环结构(goto语句也可构成循环),这三种循环可以互换。选择循环语句时,首先确定需要入口条件循环还是出口条件循环,如果是出口条件循环可以使用do-while循环语句,通常认为使用入口条件循环更好一些,增强程序可读性。如果使用入口条件循环,可以使用for语句还是while语句。for循环和while可以完全互换,把for语句中的表达式1和表达式3去掉就和while语句的功能一样了。例如:for(;循环条件;){循环体;}

与下面while循环的写法是等效的

while(循环条件){循环体;}

一般来说,在涉及到有明显的循环控制变量初始化和更新的场合时,使用for语句更为恰当,因为使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论