C语言程序设计第6章(循环控制).ppt_第1页
C语言程序设计第6章(循环控制).ppt_第2页
C语言程序设计第6章(循环控制).ppt_第3页
C语言程序设计第6章(循环控制).ppt_第4页
C语言程序设计第6章(循环控制).ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 循环控制,本章要点: 建立循环程序设计的基本概念和逻辑思维 掌握C语言循环程序设计的方法,6.1 概述 1.引入循环控制语句的作用 当满足一定条件时,重复执行一段程序. 2.设置循环需要考虑的问题 循环初值; 循环条件的设置;循环体应包括的语句;循环条件的修改。 3.C语言中可用以下语句实现循环 循环结构主要有: (1)用goto语句和if语句构成循环; (2)用while语句; (3)用do-while语句; (4)用for语句。,6.2 goto语句以及用goto语句构成循环,一般形式: goto 标号; 标号:语句 其中:标号用标识符表示,即由字母、数字和下划线组成,且首字符必须

2、为字母或下划线。不能用整数来作标号。 用途: 1. 与if语句一起构成循环结构。 2. 从循环体中跳到循环体外(一般指最深层)。 3. 改变程序自上而下的执行顺序。,缺点:滥用goto语句,可使程序无规律、可读性差。,例6.1 用if语句和goto语句构成循环,求和 s=1+2+100 main( ) int i,sum=0; i=1; loop: if(i=100) sum=sum+i; i+; goto loop; printf(“%d”,sum); ,6.3 while语句,一般形式: while (表达式) 语句 功能:当表达式为非0值时,执行while语句中的内嵌语句。 特点:先判断

3、表达式,后执行语句。 流程图:,说明: (1)执行while循环语句时,如果表达式的值第一次计算就等于0,则循环体一次也不执行。 (2)发生下列情况之一时,while循环结束执行: 表达式的值为0; 循环体内遇到break语句; 循环体内遇到goto 语句,且与该goto语句配合 使用的标号所指定的语句在本循环体外; 循环体内遇到return语句,此时退出while循环后,执行的流程从包含该while语句的函数返回到调用函数。,例6.2 求 main( ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d”,sum); ,i=1,

4、sum=0,i=100?,sum=sum+i i=i+1,零,非零,说明: 1)循环体中如果包含一个以上的语句,应该用花括 号括起来; 2)在循环体中应有使循环趋于结束的语句,避免进 入死循环;在本例中,设置循环条件为i100,然后语句中有出i+,这样就不会出现死循环。,6.4 do-while语句,一般形式: do 循环体语句 while (表达式); 特点:先执行循环体,然后判断条件是否成立, 成立继续执行,否则退出循环; 流程图:,例 6.3用do-while语句求 main( ) int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); pri

5、ntf(“%d”,sum); ,表达式=0?,语句,零,非零,i=100?,sum=sum+i i=i+1,i=1,while语句与do-while语句之间的区别和相同点 1)do-while语句结构可以转换成while结构,可以认为do-while结构是由一个语句加一个while结构构成; 2)当while后的表达式为真时,while语句 和dowhile语句的结果相同,但是对于while后面的表达式一开始就为0值,两种循环的结果不同;,main( ) int i , s=0; scanf(“%d”, 输入:1 打印:55 输入:11 打印:0,main( ) int i , s=0; sc

6、anf(“%d”, 输入:1 打印:55 输入:11 打印:11,6.5 for语句,for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句 执行过程流程图:,表达式1,表达式2,真,语句,表达式3,假,for语句的 下一语句,例:for(i=1;i=100;i+) sum=sum+i,i=1,i=100,真,sum=sum+i,i+,假,它相当于 i=1; while(i=100) sum=sum+i; i+; ,说明: (1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。比如: for(i=1;i=100;i+) sum=sum+i

7、; 可写为: i=1; for( ;i=100;i+) sum=sum+i ; (2)表达式2不能省略,否则会导致死循环;,(3)表达式3可以省略,但此时应另外设法保证循环能正常结束。比如: for(i=1;i=100;i+) sum=sum+i ; 可写为: for(i=1;i=100; ) sum=sum+i ; i+ ; ,(4)表达式1可以为设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他变量表达式。此外表达式1和表达式3还可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。 例: for( sum = 0; i = 100; i+) sum = sum + i ;

8、 for( i=0, j=100; i=j; i+, j - -) k = i + j ;,(5)表达式2一般是关系表达式或逻辑表达式,也可以为数值表达式或字符表达式,只要其值为非零,就执行循环体。 例: for( ; (c = getchar( ) != n; ) printf(“%c”, c); 此句的作用是每读入一个字符后输出该字符,直到输入一个“换行符”为止。 (6)for语句简单、方便,使用灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定只给出循环结束条件的情况,它完全可以取代while和do while语句。,6.6 循环的嵌套,C语言中,允许三种循环(whil

9、e循环、do-while循环和for循环)相互嵌套和进行多层嵌套。下面几种都是合法的嵌套形式:,for( ; ; ) while( ) for循环体嵌套while循环体,for( ; ; ) for( ; ; ) for循环体嵌套for循环,do do while( ); while( ); do_while循环体 嵌套do_while循环,while( ) do while( ); while循环体嵌套 do_while循环,while( ) for( ; ; ) while循环体嵌套for循环,do for( ; ; ) while( ); do_while循环体嵌套for循环,例7:fo

10、r 语句的循环嵌套例子。,for(i=1; i=2; i+) for(j=1; j=2; j+) printf(“%3d”, i+j); printf(“n”); output: 2 3 3 4,for( i =1; i = 2; i+) for( j=1; j=2; j+) printf(“%3d”,i+j); printf(“n”); output: 2 3 3 4,6.8 break语句和continue语句,6.8.1 break语句 break语句的一般形式: break; 作用:只能用于循环语句和switch语句,用来从循环体内跳出循环体,以提前结束循环。 例: for(r = 1

11、; r 100) break; printf(“%f”, area); ,6.8.2 continue语句 一般形式: continue; 作用:结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。 contiune语句和break语句的区别是: contiune语句只是终止本次循环,不是终止整个循环,而break语句是结束整个循环; 详细的流程图分析,可参见教科书.,例6.5 把100200之间的不能被3整除的数输出; main( ) int n; for (n = 100; n = 200; n+) if (n%3 = 0) continue; printf(

12、“%d”,n); ,6.9 程序举例,例 6.6 用 求 的近似值,直到最后一项的绝对值小于10-6为止。下为N-S流程图和程序。,#include main( ) int s; float n, t, pi; t = 1; pi = 0; n = 1.0; s = 1; while( (fabs(t) 1e-6 ) pi = pi + t; n = n + 2; s = -s; t = s / n; pi = pi * 4; printf(“pi=%10.6fn”, pi); ,例6.7 求Fibonacci数列的40个数。 Fibonacci数列为:,main ( ) long int f1, f2; int i; f1 = 1; f2 = 1; for( i =1; i = 20; i+) printf(“%12ld %12ld”, f1, f2); if ( i%2 = 0 ) printf(“n”); f1 = f1 + f2; f2 = f2 + f1; ,1, 1, 2, 3, 5, 8, 13, ,例6.8 判断m是否为素数。 分析:判断一个数是否为素数,通常的做法是让这个数被从2到它的平方根(取整)的数除,如果能被其中任何一个数整除,则该数不是素数。,#include main( ) int m, i, k; scanf

温馨提示

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

评论

0/150

提交评论