C语言 第5章 循环结构_第1页
C语言 第5章 循环结构_第2页
C语言 第5章 循环结构_第3页
C语言 第5章 循环结构_第4页
C语言 第5章 循环结构_第5页
已阅读5页,还剩58页未读, 继续免费阅读

下载本文档

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

文档简介

1、第5章 循环结构程序设计,2,引例:编程计算1*2*3*4*5,可以这样实现: int product; product =1*2*3*4*5 ; 如果问题变为:求1*2*3* *10000? 该问题无法用一个赋值语句实现,3,主要内容,学习三种结构的程序设计方法 顺序结构程序设计 选择结构程序设计 循环结构程序设计 掌握每一种语句的格式、功能、执行过程和执行结果,并学习如何将这些语句组织成程序 学习逻辑问题的解题思路,及递推、迭代的方法,循环结构程序设计,循环的概念 用while语句和do-while语句实现循环 用for 语句实现循环 循环的嵌套 break语句和continue语句 几种

2、循环的比较 程 序 举 例,5,一、循环概述,6,在很多实际问题中会遇到有规律性的重复运算,因此在程序中就需要将某些语句重复执行。 一组被重复执行的语句称为循环体; 每重复一次,都必须作出是继续还是停止循环的决定,这个决定所依据的条件称为循环条件; 循环:在给定条件成立时,反复执行某程序段,直到条件不成立为止,7,循环结构,入口,no,p,a,yes,出口,循环条件,循环体,8,循环结构需要解决的两个问题,2. 控制循环结构的结构描述,条件表示描述方法,逻辑表达式,关系表达式,1. 控制循环结构执行的条件表示,while 语句,do-while语句,实现循环结构的语句,可使用c中的任意表达式,

3、for语句,9,1、while 语句,while(表达式)语句,计算表达式的值; 当表达式的值为非0时,反复执行while中的语句; 当表达式的值为0时,while循环结束,功能:while 语句用来实现“当型”循环,执行流程,10,while 语句执行流程,0,非0,表达式=,循环体外语句,循环体语句,循环入口,循环结束,开始下一次循环,特点:先判断,后执行;若条件不成立,则有可能一次也不执行,适合的情况: 知道控制循环的条件为某个逻辑表达式的值,而且在循环中该表达式的值会被改变,11,例1. 编程计算1+2+3+ +10000,方案一,sum = sum+i,i = i+1,12,方案二,

4、13,方案三,14,2、do-while 语句,do 语句; while(表达式,执行语句; 计算表达式的值; 当表达式的值为非0时,再次执行do中的语句; 当表达式的值为0时,do-while循环结束,执行流程,15,真(非0,表达式=,语句,循环体外语句,0,do-while 语句执行流程,循环结束,开始下一次循环,特点:先执行,后判断;循环至少执行一次语句,16,例2. 用do-while语句实现1+2+3+ +10000,17,例2. 用do-while语句实现1+2+3+ +10000,18,例2. 用do-while语句实现1+2+3+ +10000,改成while语句,注意两个语

5、句的顺序,19,例3.求满足 1 + 2 + 3 + + n500 中最大的 n ,并求其和,编写程序实现,分析,本题还是一个累加求和的问 题,当累加和sum500时反 复执行循环,否则结束循环,步骤,定义变量: sum,n; sum 和 n 分别赋初值; n=0;sum=0; 当 sum 500 时反复执行循环, 否则结束循环。 语句为:while(sum500) +n ; sum += n,20,有错误的地方吗吗,21,22,思考,给定一个小于等于216的正整数,要求: 求出它是几位数; 分别正向打印出每一位数字; 逆序打印出各位数字,23,分析: 变量:正整数 m 小于等于216的正整数

6、; 输入:正整数 m 的值; 输出:几位数、正向输出各位数字、逆向输出各位数字; 解决问题: 变量定义: m 为无符号长整型; num: 位数; a : 某一位数字; 求解过程:while (m!=0),24,求解方法,1)求出它是几位数; 用num 描述正整数m的位数,初值为,0,当m 0 时,开始统计m的位数,while(m0,因为m0,m至少有一位,num,然后把m的个位去除,m=m/10,再判断m是否仍然0,当循环结束时,即,m等于0,结果:num的值即为m的位数,25,有问题吗,26,27,求解方法,2)分别正向打印出每一位数字; 首先应求出m的位数num; 然后从最高位开始输出;

7、最高位为,m/10num-1,除了最高位以外,其他的部分为,m%10num-1,循环直到最后一位输出结束,28,求解方法,3)逆序打印出各位数字; 从最低位开始输出; 最低位为,m/10,除去最低位,其它的部分为,m%10,循环,直到最高位输出结束,30,1):求位数,2):从高位到低 位求每一位,3):从低位到高 位求每一位,31,32,2):从高位到低位求每一位,33,3):从低位到高位求每一位,循环结构程序设计,循环的概念 用while语句和do-while语句实现循环 用for 语句实现循环 循环的嵌套 break语句和continue语句 几种循环的比较 程 序 举 例,35,3、f

8、or 语句,for(表达式1;表达式2;表达式3) 语句,表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:关系表达式或逻辑表达式,循环控制条件; 表达式3:一般为赋值表达式,给控制变量增量/减量; 语句:循环体,当有多条语句时,必须使用复合语句,36,0,真(非0,表达式2=,语句,循环体外语句,表达式1,for(表达式1;表达式2;表达式3) 语句,表达式3,循环结束,开始下一次循环,37,3、for 语句,for语句很好地体现了正确表达循环结构应该注意的三个问题: 循环控制变量的初始化 循环的条件 循环控制变量的更新,for语句适合的情况已知循环次数,38,例6. 用 for 语

9、句计算 1 + 2 + . . . + 100,for( i=1; i=100; i+) sum += i,39,例6. 用 for 语句计算 1 + 2 + . . . + 100,40,例6. 用 for 语句计算 1 + 2 + . . . + 100,int i=0 , sum=0; while( i = 10 ) sum += i; i+;,int i= 0, sum=0; do i+; sum+=i; while(i10,改写成while和do-while语句,41,for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。for语句有以下几种格式: (1)for( ; ;

10、)语句; (2)for( ;表达式2;表达式3 )语句; (3)for(表达式1;表达式2; )语句; (4)for( i=1,j = n; i j; i +,j - - )语句,注意,42,1、for( ; ; ) 该语句是一个死循环,一般用条件表达式加break语句在循环体内适当位置,一旦条件满足时,用break语句跳出for循环。 2、for(;表达式2;表达式3) 使用条件是:循环控制变量的初值不是已知常量,而是在前面通过计算得到。 例如: i=m-n; for(;ik;i+)语句,43,3、for(表达式1;表达式2;)语句 一般当循环控制变量非规则变化,而且循环体中有更新控制变量的

11、语句时使用。 例如: for(i=1;i=100;) i=i*2+1;,44,4、for( i=1,j=n ;ij;i+,j - - )语句; 在for语句中,表达式1、表达式3都可以有一项或多项,如本例中,表达式1同时为i和j赋初值,表达式3同时改变i和j的值。当有不止一项时,各项之间用逗号“,”分隔,45,循环结构小结,同一个问题,往往既可以用 while语句解决,也可以用 do-while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句。 选用的一般原则是: 1、如果循环次数在执行循环体之前就已确定,一般用 for语句。如果循环次数是由循环体的执行情况确定的,一般

12、用 while语句或者do-while语句; 2、当循环体至少执行一次时,用 do-while语句,反之,如果循环体可能一次也不执行,则选用while语句,循环结构程序设计,循环的概念 用while语句和do-while语句实现循环 用for 语句实现循环 循环的嵌套 break语句和continue语句 几种循环的比较 程 序 举 例,47,循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。 内嵌的循环中还可以嵌套循环,这就是多重循环,循环1,循环2,48,for() while(,do for() while(,while() for(),for() for(),以下四种

13、均为合法的嵌套循环结构,49,注意:三种循环语句for、while、do-while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。如下面这种形式是不允许的: do . for(;) . while();,50,例7. 打印乘法“九九表,51,分析,定义变量 i,j,m; i表示行,从1 变化到 9; j表示列,从1 变化到 9; m = i*j;表示表中的值; i 取初值 1; j 从 1 变化到 i ;计算出每一个m=i*j,输出m,但不换行。 输出换行; i 做一次变化,如果i 9,则,转回步骤 6;否则循环结束,52,53,include int main()

14、 int i=0,j=0; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%4d,i*j); printf(n); return 0;,循环结构程序设计,循环的概念 用while语句和do-while语句实现循环 用for 语句实现循环 循环的嵌套 break语句和continue语句 几种循环的比较 程 序 举 例,55,break 语句,用于循环语句和 switch 语句中,作用是 跳出它所在的循环语句或switch 语句。 格式:while(条件1) ;if(条件2) break; 执行过程: 每次执行到 if 语句时,计算条件2的值; 如果条件2的值非零

15、,则跳出循环语句; 否则,执行 if 语句的下一条语句,56,例7.一球从100米高度自由落下,每次落地 后反弹回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? float h=100.0, sum=0.0; int n; for( n=1; ; n+) sum += h; h = h/2; /落地后反弹跳回原高度的一半if( n=10 ) break; /终止执行本循环sum += h;printf(“共经过%f米,第10次反弹%f米n,sum,h,57,continue 语句,continue 语句类似于 break 语句,但不是退出循环,而是跳过循环体下部未执行的语句,回到循环头部(while 处)接着进行下一次循环。 格式:while (条件1) . . .;if (条件2) continue;. . . continue 执行过程: 当条件1成立时,进入 while 的循环体; 执行到 if 语句时,计算条件2的值; 如果条

温馨提示

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

评论

0/150

提交评论