C语言程序设计第6节.ppt_第1页
C语言程序设计第6节.ppt_第2页
C语言程序设计第6节.ppt_第3页
C语言程序设计第6节.ppt_第4页
C语言程序设计第6节.ppt_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

第6章循环控制,到目前为止,如果要求同学们写一段程序来计算1+2+3+9+10的值,那么有的同学可能这样写(excch6intro_1.c):,#includevoidmain()ints;s=1+2+3+4+5+6+7+8+9+10;printf(nsumis%d,s);,也有的同学可能这样写(excch6intro_2.c):#includevoidmain()ints=0;s=s+1;/*把1加到s上,s的值为1*/s=s+2;/*把2加到s上,s的值为3,为前两项之和*/s=s+3;s=s+4;s=s+5;s=s+6;s=s+7;s=s+8;s=s+9;s=s+10;printf(nsumis%d,s);,可以看出,在这种实现方法中,反复进行如下操作:s=s+i;其中,i代表累加项,i由1增到10,显然,当累加的项数较多时,这两种方法的局限性就凸现出来。我们可以借助于C语言的循环结构来加以实现。,循环结构,循环结构作为3个基本结构之一,它的作用是反复执行某些操作。,当型循环结构,直到型循环结构,在C语言中,可以用以下4种方式实现循环结构:goto语句while语句dowhile语句for语句,goto语句,goto语句的一般形式为:goto语句标号;,gotoABC;ABC:,其中,语句标号是一种标识符,它用来标示程序中的某个语句,请不要忘记冒号。另外,语句标号对所标示的语句没有影响。,当程序执行到goto语句时,goto语句会使得程序跳转到语句标号所标示的位置继续执行。,有时,人们把goto语句与if语句配合使用,来实现某些操作的重复执行。例如,求1+2+10的值(excch6goto_sum.c)。,因此,goto语句与if语句相配合,是实现循环结构的一种手段。,但是,由于goto语句的滥用会导致程序的可读性变坏,所以结构化程序设计主张限制使用goto语句,除非使用goto语句能大大提升程序的执行效率。,while语句,while语句可用来实现当型循环结构,其一般形式为:while(表达式)语句,while(x=0)y=y+x*x;x-;,例如,while(j=0,while语句的执行过程是:首先求解表达式,如果值为真,则执行语句;然后再来求解表达式,如果值为真,则执行语句,如此重复,直到某一次表达式的值为假,while语句结束。,循环体,循环体,while语句的特点是:先判断、后执行。,其中,语句部分被称为循环体,循环体既可以是单条语句,也可以是复合语句。,while语句举例,例一、用while语句来实现的累加求和(excch6whilesum.c)。,例二、intx=3;while(x5)x=x/6;printf(”x=%d”,x);,例三、intk=4,s=0;while(k0)s+=k;,注意:循环体一次也不执行,注意:循环体中缺乏使循环趋于结束的语句,造成死循环。,注意:若循环体包含多个语句,必须用复合语句。,intk=4,s=0;while(k0)s+=k;-k;,intk=4,s=0;while(k0);s+=k;-k;,注意:分号多余,dowhile语句,dowhile语句可用来实现直到型循环结构,其一般形式为:do语句while(表达式);注意:while后要有分号。,例如,dos=j*8;-j;while(j=0);,dowhile语句执行过程是,首先执行语句,然后求解表达式,如果值为真,则再次执行语句;然后再来求解表达式,如果值为真,则执行语句,如此重复,直到某一次表达式的值为假,dowhile语句结束。,dowhile语句的特点是:先执行、后判断。,dowhile语句举例,例一、用dowhile语句实现的累加求和(excch6dowhlsum.c)。,例二、intk=-1,s=8;dos=s/3;k+;while(k10);printf(”n%d”,k);,例三、intk=1,s=0;dos=s+2*k;k+;while(k=4);,注意:循环体至少执行一次,注意:1由于=写成=,造成死循环;2循环体中应包括使循环趋于结束的语句。,for语句,for语句是一个使用频繁的循环语句,它的一般形式为:for(表达式1;表达式2;表达式3)语句,for语句的执行过程是:首先求解表达式1,然后求解表达式2,如果值为真,则执行语句,然后再求解表达式3;然后再来判断表达式2的值,如此重复,直到某一次表达式2的值为假,for语句结束。,例如,for(k=0;k5;k+=2)y+=k*k;,由流程图可以看出,它实际上等价于:表达式1;while(表达式2)语句表达式3;,for语句最常用的形式是:for(循环变量赋初值;循环条件;循环变量增值或减值)语句,例如,for(k=0;k=0,for语句举例,例一、用for语句实现的累加求和(excch6forsum.c)。,关于for语句再做如下几点说明:求解完表达式1后,接着不是去执行语句,而是去求解表达式2。,表达式1可以省略,但是分号不能少。,表达式2也可以省略,这时系统认为表达式2始终为真,循环会无限进行下去。可以通过循环体中的break或goto语句结束循环。,表达式3也可以省略,但应使循环能正常结束。,三个表达式全省略时,for语句成了for(;)语句,表达式1、表达式3有时也会用到逗号表达式,例如,for(i=1,s=0;i=10;i+)s=s+i;,例二、用for语句实现输出120之间的奇数。(excch6forodd.c),几种循环的比较,1对某个循环结构来说,可以用前面介绍的4种方式中的任何一种进行描述,但结构化程序设计不赞成采用goto语句方案。,2从变量初始化的时机看,for语句通常用表达式1完成一些初始化工作;While语句、dowhile语句只能在它们之前初始化。,3for语句通常用表达式3使循环趋于结束,而while语句、dowhile语句通常在循环体中完成该工作。,for(k=0;k10;k+),k=0;while(k10)k+;,变量初始化,变量初始化,使循环趋于结束,使循环趋于结束,循环的嵌套,在for语句、while语句、dowhile语句的循环体中,还可以包含循环语句,这就构成了循环的嵌套,参见P121所示各种情况。,例三、输出如下图案:*,例二、输出如下图案:(ch6tristars.c)*,例一、输出如下图案:(ch6recstars.c)*,break语句,break语句对我们并不陌生,前面我们用break语句来结束switch语句。类似地,它可以用来结束循环语句。,while(表达式1)if(表达式2)break;,例一、用break语句结束循环(excch6break.c),注意:break语句仅能用于循环语句和switch语句中。,以while语句为例,其用法如下:,在多重循环中,break只结束本重循环。,for()while(表达式1)if(表达式2)break;,continue语句,一般地说,一个循环语句的循环体会被反复执行多次,要进行多次循环,例如,累加求和的例子就循环了10次。,while(表达式1)if(表达式2)continue;,注意:continue语句仅提前结束当次循环,而不是结束整个循环过程。,例一、P124例6.5(excch6ex6-5.c)。,在进行某次循环时,可以用continue语句提前结束当次循环。continue语句的一般形式为:continue;,下面介绍其用法:,for(表达式1;表达式2;表达式3)if(表达式4)continue;,doif(表达式2)continue;while(表达式1);,循环结构程序举例,前面学习了循环语句,下面对循环控制作进一步的总结。一、根椐事先是否知道循环次数,循环可分为两大类。,for(i=1;i=M;i+),/*必要的初始化*/dowhile(循环条件);,1事先知道循环次数M。,例一、求全班同学的高数平均成绩(ch6aver.c)。,2事先不知道循环次数,但知道循环的结束条件。,/*必要的初始化*/while(循环条件),或者,例二、反复从键盘输入正整数,求其中的最大值。一旦输入0或负数,循环就结束。(ch6max.c),可以用for语句构成循环,用循环变量来控制循环的次数。,循环结构程序举例,二、累加、累乘的处理方法,在用循环计算累加和、累积的时候,一般是按如下模式来处理的:,试计算:3+5+7+101,试计算:1*2*3*20,循环结构程序举例,例四、P126例6.8,从键盘输入自然数m,判断它是否为素数。(ch6ex6-8.c),例三、P124例6.6,计算的近似值(excch6ex6-6.c)。,例五、P127例6.9,求100200间的全部素数(ch6ex6-9.c)。,在本例中,每个累加项t=,其中,n=1、3、5、7、s=1、-1、1

温馨提示

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

评论

0/150

提交评论