第6章:循环控制.ppt_第1页
第6章:循环控制.ppt_第2页
第6章:循环控制.ppt_第3页
第6章:循环控制.ppt_第4页
第6章:循环控制.ppt_第5页
已阅读5页,还剩38页未读, 继续免费阅读

下载本文档

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

文档简介

1、漳州师范大学计算机系软件与理论系C程序设计,2007年7月,第6章,循环控制系统,6.1概述,在C语言中有四种循环控制:(1)由goto和if语句构成的循环(2)由while语句构成的循环(3) do while语句(4)由for语句构成的循环,6.2 goto语句和goto语句,无条件循环注意:语句标签用标识符表示,由字母、数字和下划线组成。第一个字符必须是字母或下划线。例如,转到标签_ 1;(正确)例如goto 312(错误)goto语句和if语句可用于形成循环。示例6.1使用if语句和goto语句形成一个循环,并要求1 2 3.100演示示例ex6 _ 1.c,main () int I

2、,sum=0;I=1;如果(i=100) sum=sum 1,则循环:I .goto循环;printf(“% d”,总和);6.3 while语句,“当类型”循环结构while语句格式:while(表达式)语句执行过程:当表达式为非0时,执行while语句中嵌入的语句。首先进行判断,然后执行。示例6.2: 1 23.100演示示例ex6 _ 2.c,main () int I=1,sum=0;而(I=100)sum=sum I;I .printf(“% d”,总和);6.4 do-while语句,格式:do loop语句while(表达式);执行过程:首先执行循环语句,然后判断表达式。如果为真

3、,则再次执行循环,直到表达式为0。示例6.3使用do-while语句查找:1 2 3.100演示示例ex6_3.c,main() int i,sum=0;I=1;do sum=sum I;I .而(I=100);printf(“% d”,总和);一般来说,如果循环体的语句相同,那么while循环与do-while循环相同,但是当while的表达式在开始时为false (0)时,结果就不同了。示例6.4“同时”和“不同时”循环之间的比较。(1) main() int sum=0,I;Scanf (%d ,当i=0时,当i=11时,(2) main() int sum=0,I;Scanf (%d

4、,当i=0时,当i=11时,6.5表示语句,格式:表示(表达式1;表达式2;表达式3)循环的语句执行过程描述可以理解为:(循环变量赋初始值;流通条件;循环变量增量)语句,它也可以等价于:表达式1;而(表达式2)语句表达式3;例如:sum=0;对于(I=1;i=100I)sum=sum I;相当于:总和=0;I=1;而(I=100)sum=sum I;I .for循环描述:(1)表达式1可以省略,但是在for语句之前应该给循环变量一个初始值。例如,I=1;对于(;i=100I)总和=总和1;(2)表达式2可以省略,即无条件判断,那么它就是一个永恒的循环。例如:对于(I=1;I)总和=总和1;相当

5、于:i=1。而(1)总和=总和I;I .表达式3可以省略,但是变量增量应该添加到循环语句中,例如:for(I=1;i=100)sum=sum I;I .(4)表达式1和表达式3可以省略,即只应给出循环条件,但应添加初始值,变量应自动增加。例如,I=1;对于(;i=100)sum=sum I;I .(5)当省略三个表达式时,例如:for(;)语句相当于:而(1)语句(永恒循环),(6)表达式1可以设置循环变量的初始值,或者设置与循环变量无关的其他表达式。例如:对于(总和=0;i=100I)sum=sum I;此外,表达式1和表达式3可以用逗号表示,例如:for (sum=0,I=1;i=100I

6、)sum=sum I;(同时指定两个初始值),或:for(I=1;i=100I,I)sum=sum I;相当于:为(i=ii=100I=I2);表达式2可以是关系表达式或逻辑表达式,例如(I=0;(c=getchar()!=n。I=c);该功能是连续输入字符并添加它们的ASCII码值,直到输入一个“新行”字符。对于(;(c=getchar()!=n。)printf (%c ,c);功能是在读入一个字符后立即输出它。6.6循环嵌套。一个循环包含另一个完整的循环结构,称为循环嵌套。嵌入式循环也可以是嵌套循环,称为多层循环。三种循环(while循环、do while循环、for循环)可以相互嵌套。,

7、例如:(1)当().while().(2)做.做.while();while();(3)对于(;)为(;(.(4)而().做.while();(5)为(;(.while().(6)做.对于(;)而();6.7几个循环的比较,(1)一般不推荐转到型循环。其他三个周期通常可以互相替换。(2) while和do- while循环,只指定while之后的循环条件,并且应该有语句来增加循环变量的值。当使用while和do while循环时,循环变量的初始值应该在循环语句之前,并且for语句可以在表达式1中初始化。(4) while、do-while和for循环,可以用break语句跳出循环,用conti

8、nue语句结束循环。6.8 break语句和continue语句,6.8.1 break语句break语句可以跳出switch结构并继续执行switch语句下面的语句。它也可以用来跳出循环。尽早结束周期。例如:for(r=1;r100)断开;printf(“% d”,区域);break语句的格式为:break;Break语句不能在循环语句和switch语句之外使用。6 . 8 . 2继续声明。格式:继续;函数:结束这个循环,也就是说,跳过这个循环中以下未执行的语句。回到有条件的判决。示例6.5输出100200之间不能被3整除的数字。Exe6 _ 5.c,main()int(n=100;n=20

9、0n)如果(n%3=0)继续;打印文件(“%d”,n),6.9程序示例,示例6.6近似值/411/31/51/7.直到最后一项的绝对值小于106。例ex6_6.c,例6.7,找到40个斐波那契数列,这个数列有以下特征:第一个和第二个数字是1,1。从第三个数字开始,这个数字是前两个数字的和。也就是说,F11(n=1)f21(n=2)fn=fn-1fn-2(n=3)演示了示例ex6_7.c,示例6.8判断m是否是素数。Exe6 _ 8。c显示:为了判断m是否是素数,让k=m1/2,让m除以i(i=2k)。如果m可以被2k中的任何整数整除,循环将提前结束,并且此时循环变量I必须小于k;如果m不能被2k之间的任何整数整除,则在完成循环后,i=k 1。然后在循环之后,判断它是否大于或等于k 1,如果大于或等于k1,则它是一个素数。6.9找出100200之间的所有素数。在示例6.8的基础上,这个问题可以用嵌套for循环来处理。例ex6_9.c,例6.10,翻译密码,为了对信息保密,通常根据一定的规则将它们转换成密码,然后接收者根据约定的规则将它们翻译回原始文本。例如,以下规则可用于将消息转换为密码。将字母a改为字母e,a改为e,即其

温馨提示

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

评论

0/150

提交评论