C语言程序设计教学做一体化-模块5.ppt_第1页
C语言程序设计教学做一体化-模块5.ppt_第2页
C语言程序设计教学做一体化-模块5.ppt_第3页
C语言程序设计教学做一体化-模块5.ppt_第4页
C语言程序设计教学做一体化-模块5.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 教学做一体化 主编 滕泓虬 中国水利水电出版社,模块五 循环结构程序设计,5.1 概述 5.2 goto语句以及用goto语句构成循环 5.3 while语句 5.4 do-while语句 5.5 for语句 5.6 循环嵌套 5.7 几种循环的比较 5.8 break语句和 continue语句 5.9 程序举例,C语言中,可用以语句实现循环:,(1) 用goto语句和if语句构成循环; (2) 用while 语句; (3) 用do-while语句; (4) 用for语句。,5.1 while语句,1、格式: while (表达式) 循环体;,2、执行过程:首先计算表达式的值,若表达式成立(非0),执行一遍循环体,再判断表达式,若成立再执行循环体当表达式不成立(其值为0)时退出循环,跳转到循环体之后的语句执行。,3、特点:先判断表达式,然后执行循环体。若表达式一开始就不成立,则循环体一次也不执行。,4、注意: (1)、循环部分为多个语句时,必须用大括号构成复合语句; (2) 、在while 语句之前应给循环变量赋初值。 (3)、循环体中应有语句修改控制条件,使循环趋向结束。,1+2+3+4+5=15,分析: 需要几个变量? 输入, 输出分别是什么? 程序大体可分为几个步骤?,实例5_1 :计算 sum=1+2+3+100,i =1; sum=0;,i =100,sum=sum+i; i= i+1;,(a) 结构流程图,(b) N-S流程图,假(0),真(非0),main( ) int i,sum = 0; i = 1; while ( i=100) sum = sum + i ; i = i +1; printf ( “%d” , sum) ; ,i + ;,5.2 dowhile 循环语句,1、格式: do 循环体; while (表达式);,2、执行过程:先执行一遍循环体,然后判断表达式,当表达式的值为非0(真)时,返回重新执行循环体;如此反复,直到表达式的值为0(假)时退出循环。,3、特点:先执行循环体,后判断循环条件(表达式)是否成立,即循环体至少执行一次。,4、推荐书写格式: do while();,例: 计算 sum=1+2+3+100,i=100,i=1,sum=sum+i; i=i+1;,真,假,main ( ) int i , sum; sum=0; i=1; do sum=sum+i; i+; while (i=100) ; printf(“sum=%dn”, sum); ,一般情况下,用while语句和do-while语句处理同一问题时,若二者的循环体一样,则结果也一样。但是如果while后面的表达式一开始就为假(0)时,两种循环的结果是不同的。,while语句和do-while语句的比较:,5.3 for语句,1、格式:,for (表达式1 ;表达式2 ;表达式3) 循环体;,其中: 表达式1规定循环控制变量的初始值; 表达式2指出循环条件表达式; 表达式3修改循环变量的值;,eg410.c,for语句最易理解的形式: for (循环变量赋初值;循环条件;循环变量增值) 循环体;,2、功能: 先求解表达式1,给循环控制变量赋初值; 求解表达式2,若为真(非0),执行循环体; 求解表达式3,它改变了表达式2中的某个变量; 返回; 直到条件为假(0),退出循环。,main() int i ,sum=0; for (i=1; i=100;i+) sum=sum+i; printf(“sum=%d”,sum); ,实例5_3 :计算 sum=1+2+3+100,(1) 可以省略表达式1 sum = 0 ; for ( ; i=100 ; i+ ) sum = sum+i ;,3. 说明,i=1;,(2) 可以省略表达式3 sum = 0 ; for ( i=1 ; i=100 ; ) sum = sum+i ;,i+ ;,(3) 同时省略表达式1和表达式3 sum = 0 ; i=1 ; for ( ; i=100 ; ) sum = sum+i ; i+ ; ,(4) 3个表达式都可以省略:,for ( ; ; ) 循环体;,while (1) 循环体;,表达式2一般不会省略, 若省略表达式2循环将不能停止。 从语法上讲是正确的,但一般没有实际意义。,5.4 循环语句的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。按嵌套的层次可分为两重嵌套、三重嵌套或多重循环。,循环嵌套流程的执行情况:,for (i=1; i=5; i+) for (j=1; j=3; j+) sum=sum+j; x=i+j; ,实例5_6 编写程序,在屏幕上显示如下图案:,* * * * *,实例5_7 编写程序,在屏幕上显示如下图案:,* * * * * * * * * * * * * * *,实例5_8 编写程序,在屏幕上显示如下图案:,* * * * * * * * * * * * * * *,for (i=1; i=5; i+) for (j=1; ? ;j+) printf(“*”); printf(“n”); ,在设计循环嵌套时要注意:应该“在一个循环体内包含另一个完整的循环结构”,不论嵌套次数多少,要遵守这个原则。,while ( ) do while( ); ,do for ( ; ; ) while( );,5.5 break语句和continue语句,1、格式:,break;,2、功能:在循环体或switch语句中,执行到break语句时,终止当前语句的执行,程序流程转移到当前循环语句或switch语句的后继语句去执行,1. break语句,3、说明:,若是多重循环,break只能使流程跳出离break 最近的一层;,break只用于switch语句和循环语句;,实例5_11 计算 r=1到 r=10时的圆面积,直到面积大 于100为止。,main( ) int r ; float area = 1, pi = 3.1415;,for ( r = 1 ; r 100 ) break; printf (“%f ”, area ); ,1、格式:,continue;,2、功能:在循环体中,当执行到continue语句时,跳过循环体内位于其后的其它语句,接着进行下一次是否执行循环的判定;即“提前结束本次循环”,2 continue语句,3、说明:,、continue语句只能用于循环语句中,它是一种具有特殊功能的转移语句;,、continue与break不同:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环,不再判断循环条件是否成立。,实例5_12 输出100200之间所有能被8整除的数。,main( ) int n ; for (n = 100 ; n = 200 ; n+) if (n % 8 != 0 ) /*如果n不能被8整除*/ continue; /*直接跳到n+处执行*/ printf (“%5d“, n); ,程序运行结果如下: 104 112 120 128 136 144 152 160 168 176 184 192 200,实例分析: (1)本实例要求输出100200之间所有能被8整除的数,即不能被8整除的数不用输出,所以可用continue语句跳过本次的输出printf (“%5d”, n);语句。 (2)本实例不使用continue,仅用if语句也可实现要求:if ( n % 8 = = 0 ) printf (“%5d”, n);,这里仅仅是举例说明continue的用法。,动手实践 若要输出100200之间所有不能被8整除的数,程序该怎么修改?,动手演练,基础练习 一 选择题 1、以下程序的输出结果是( ) # include main( ) int num = 0, i=1; while ( i = 7 ) num = num +i; printf(“%dn”, num ); A)1 B)2 C)3 D)4,2、以下程序的输出结果是( ) main( ) int num = 0; while ( num = 2 ) num = num + 1; printf(“%dn”, num ); A)1 B)1 C)1 D)1 2 2 2 3 3 4,3、以下程序段执行( )次。 x = 1 ; while ( ! x ) x = x * x ; A) 1 次 B)2次 C)死循环 D)0次,4、以下程序段执行( )次。 x = 0 ; while ( ! x ) x = x * x ; A) 1 次 B)2次 C)死循环 D)0次 5、以下程序段执行( )次。 x = -1 ; do x = x * x ; while ( ! x ); A) 1 次 B)2次 C)死循环 D)0次,二 程序分析,1、下面程序的运行结果是: # include main( ) int i , sum=0 ; for ( i = 0 ; i = 5 ; i+ ) sum = sum + 1; printf(“sum = %dn”, sum ); ,二 程序分析,2、以下程序的输出结果是: main( ) int i , sum=0 ; for ( i = 0 ; i = 5 ; i+ ) sum = sum + i ; printf(“%dn”, sum ); ,3、程序的运行结果是: # include main( ) int i , j ,n, sum = 100; for(i = 5 ; i 0 ; i-) n = 0

温馨提示

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

评论

0/150

提交评论