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

下载本文档

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

文档简介

1、C C语言程序设计语言程序设计北京建筑工程学院北京建筑工程学院Beijing Architecture and Civil Engineering Institute2022-5-24The C Programming Language2教学内容v第一章 C语言概述v第二章 数据类型v第三章 顺序结构v第四章 选择结构v第五章第五章 循环结构循环结构v第六章 数组v第七章 函数调用v第八章 指针v第九章 结构体与共用体v第十章 文件操作v补充章节 位运算v补充章节 预编译 2022-5-24The C Programming Language3内容提纲v循环的概念循环的引入循环的概念v循环的实

2、现while语句、do while语句、for语句基本的输入和输出v循环的嵌套循环嵌套break语句和continue语句v循环结构程序举例2022-5-24The C Programming Language4循环的引入求100个学生的平均成绩,需要输入成百上千个输入语句。什么是循环?什么是循环?为什么要使用循环?为什么要使用循环?1001nyn2022-5-24The C Programming Language5 循环的概念 v在许多问题中需要用到循环控制。循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。v循环分为两种:无休止循环和有终止

3、循环构成有效循环的条件:循环体和循环结束条件2022-5-24The C Programming Language6内容提纲v循环的概念循环的引入循环的概念v循环的实现while语句、do while语句、for语句基本的输入和输出v循环的嵌套循环嵌套break语句和continue语句v循环结构程序举例2022-5-24The C Programming Language7循环的实现方法v在语言中,可用以下语句实现循环:用语句和if语句构成循环用语句用语句用语句2022-5-24The C Programming Language8goto语句v格式:语句; . 语句标号;2022-5-24

4、The C Programming Language92022-5-24The C Programming Language10goto语句v功能:无条件转移语句v说明:不能不能用整数作标号,只能用标识符只能出现在goto所在函数内,且唯一唯一语句标号只能加在可执行语句前面不提倡使用goto语句2022-5-24The C Programming Language11While语句v一般形式:while (表达式) 语句当表达式为非非0值时,执行while语句中的内嵌内嵌语句执行过程:先先判断表达式,后后执行语句。特点:适用于事先不知道事先不知道循环次数的操作2022-5-24The C Pr

5、ogramming Language12While语句示例v例5.1(作过修改)求1+2+3+4+小于某数N的最大值,N由用户指定。例如:小于10,n最大值为4。(1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现.(2)在循环体中应有使循环趋向于结束的语句。2022-5-24The C Programming Language13While 语句的特点v特点:表达式,循环体v说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式(为零)循环体内遇无限循环: 在循环中应有使循环趋向结束的语句while(1) 循环体;2022-5-24T

6、he C Programming Language14例5.1 1+2+100(未修改)2022-5-24The C Programming Language15人口增长v例:我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。v分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n直接利用标准对数函数求得;也可利用循环求得2022-5-24The C Programming Language16最大公约数与最小公倍数用辗转相除法和辗转相减法求两自然数m,n的最大公约数和最小公倍数。2022-5-24The C Programming Language17辗转

7、相减法 m=m-n mn n=n-m nm m、n为公约数 m=nWhile( m != n) m n If(m n) 14 6 m = m n 8 6 else 2 6 n = n m 2 4 2 2辗转相除法m、n为公约数 m=nIf(mn) temp = m; m = n; n = temp;r=m % n;While (r != 0) m=n; n=r; r= m % n;printf( 最大公约数最大公约数=, n); M n r14 6 26 2 02022-5-24The C Programming Language18do-while循环v特点:循环体,循环条件。v一般形式:

8、do 循环体语句while (表达式);v执行过程:2022-5-24The C Programming Language19do-while示例1001nn2022-5-24The C Programming Language20While与do-while的比较2022-5-24The C Programming Language21圆周率v例5.4 用/41-1/3+1/5-1/7+公式求的近似值,直到某一项的绝对值小于为止。2022-5-24The C Programming Language22For语句循环vC语言中的for语句使用最为灵活,可以用于循环次数的情况,可以用于循环次数

9、不确定而只给出循环结束条件的情况,它可以while语句。v一般形式: for(表达式1;表达式2;表达式3) 语句2022-5-24The C Programming Language23v执行过程2022-5-24The C Programming Language24vfor语句最简单的形式:for(循环变量赋初值;循环条件;循环变量增值) v例如:for(i=1;i=100;i+) sum=sum+i;v相当于:i=1;while(i=100) sum=sum+i;i+; 用for语句简单、方便。2022-5-24The C Programming Language25For语句说明fo

10、r语句中语句中expr1, expr2 ,expr3 类型任意,都可类型任意,都可省略,但省略,但;不可省;不可省无限循环无限循环: for( )2022-5-24The C Programming Language26表达式1可以是设置循环变量初值,也可以是和循环变量无关的其它其它表达式表达式一般是关系表达式或逻辑表达式,也可以是数值表达式或者字符表达式2022-5-24The C Programming Language27思考题v思考: v1. 求12+22+32+42+1002v2. 求13+33+53+n3v3. 求1-3+5-7+(-1)n+1(2n-1)4. 求求1n21) 1(

11、5131111n-+-+-+11115. 求求) 1n(n+34+23+122022-5-24The C Programming Language281n21513111-2. 求求 3. 求求: 1k2k21k2k2765654343212+-思考题v思考: v1. 求 13 5 7(共N项)。2022-5-24The C Programming Language29思考题v思考: 输出1、3、5、7、9、N。输出1到500之间所有能被3整除的数,一行显示10个数。输出1到指定N之间所有能被3和7同时整除的数。2022-5-24The C Programming Language30示例v例

12、5.5 打印斐波那契(Fibonacci)数列的前40项v斐波那契数列: 有一对兔子,从出生后第3个月起每个月都生一对兔子,兔子长到3个月后又生一对兔子。假设所有兔子都不死,问每个月兔子总数为多少? 见 0,1,1,2,3,5,8,13,v分析:即从第三项起每一项是其前两项之和2022-5-24The C Programming Language31字符统计v从键盘任意输入30个字符,每次一个,分别统计字符“A”、“B”、“C”的个数(不区分大小写)。如果中途连续输入三个字符Q,则结束输入。v分析:初值:1;终值:30;步长为1中途退出 break;2022-5-24The C Program

13、ming Language32基本输入v第一类:输入不说明有多少个Input Block,以EOF为结束标志。v本类的解决方案是:while(scanf(%d %d,&a, &b) != EOF) . 2022-5-24The C Programming Language33说明vScanf函数返回值就是正确读出的变量个数,如:scanf( “%d %d”, &a, &b ); 如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。vEOF是一个预定义的常量,等于-1。2022-5-24The C Programming Language34基本输入

14、v第二类:输入一开始就会说有N个Input Block,下面接着是N个Input Block。v本类的解决方案是:scanf(%d,&n); for( i=0 ; in ; i+ ) / while(n-) . 2022-5-24The C Programming Language35基本输入v第三类:输入不说明有多少个Input Block,但以某个特殊输入为结束标志。v本类的解决方案是:while(scanf(%d,&n) & n!=0 ) . 2022-5-24The C Programming Language36基本输入v第四类:以上几种情况的综合 1093 1094 10921和2

15、的综合2和3的综合2和2的综合2022-5-24The C Programming Language37基本输入v第五类:暂不讲2022-5-24The C Programming Language38基本输出v第一类:同输入第一类一个Input Block对应一个Output Block,Output Block之间没有空行。v本类的解决方案是: . printf(%dn,ans); 2022-5-24The C Programming Language39基本输出v第二类:一个Input Block对应一个Output Block,每个Output Block都有空行。v本类输出的解决方案

16、是:while(scanf(%d %d,&a, &b) != EOF)printf(%dnn,a+b);2022-5-24The C Programming Language40基本输出v第三类:一个Input Block对应一个Output Block,Output Block有空行,最后一行没有空行。v本类输出解决方案:for (k=0;kcount;k+) while () printf( %dn,result); if (k!=count-1) printf(n); 2022-5-24The C Programming Language41内容提纲v循环的概念循环的引入循环的概念v循环

17、的实现while语句、do while语句、for语句基本的输入和输出v循环的嵌套循环嵌套break语句和continue语句v循环结构程序举例2022-5-24The C Programming Language42循环的嵌套v说明:三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程2022-5-24The C Programming Language43循环的嵌套2022-5-24The C Programming Language44循环嵌套示例v乘法九九表2022-5-24The C Programming Language45循环嵌套示例v求1

18、+(1+2)+(1+2+3)+(1+2+3+n),n由用户输入。v分析:外循环循环n次,内循环循环i次内循环设置一个累加变量,注意每次内循环完成需要置空外循环设置一个累加变量,记录总和。2022-5-24The C Programming Language46辅助控制语句v功能:在循环语句和switch语句中,终止并跳出循环体或开关体v说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中2022-5-24The C Programming Language47辅助控制语句v功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执

19、行循环体的判断仅用于循环语句中2022-5-24The C Programming Language48 几种循环的比较v四种循环可以互相替代,不提倡使用gotovwhile和do-while,只有当while条件第一次就不成立的时候,结果不相同,其它情况一般都相同;在循环体内都应包含使循环趋向结束趋向结束的语句。vfor循环在第一个表达式中完成赋初值的工作;条件判断在第二个表达式;第三个表达式中包括使循环趋向结束趋向结束的语句。v循环中可以用break跳出循环,用continue结束本次循环。goto语句不可以使用。2022-5-24The C Programming Language49内

20、容提纲v循环的概念循环的引入循环的概念v循环的实现while语句、do while语句、for语句基本的输入和输出v循环的嵌套循环嵌套break语句和continue语句v循环结构程序举例2022-5-24The C Programming Language50递推法v递推法又称为迭代法。是循环经常考的一种题型。v其基本思想是将一个复杂的计算过程转化成为简单过程的多次重复。每次重复都从旧值的基础上推出新值,并有新值代替旧值。2022-5-24The C Programming Language51蟠桃会v孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半

21、多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。这下可把神仙们心疼坏了,请帮忙计算一下,第一天开始吃的时候桃子一共有多少个桃子?v分析:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1 的一半减1,即xn=0.5xn-1-1或xn-1 =( xn +1)22022-5-24The C Programming Language52穷举法v穷举法又称枚举法。即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。2022-5-24The C Prog

22、ramming Language53百钱买百鸡v公鸡5个钱一只,母鸡三个钱一只、小鸡一个钱三只,要用100个钱买100只鸡,问公鸡、母鸡、和小鸡各买几只?(百元买百鸡)v分析:设公鸡、母鸡、小鸡分别买x、y、z只,则数学模型为:x+y+z=1005x+3y+z/3=1002022-5-24The C Programming Language54猜字问题v雨水淋湿了算术书的一道题,8个数字只能看清3个,第一个数字虽然看不清,但可看出不是1。编程求其余数字是什么? *(3)2 = 89v分析:设分别用A、B、C、D、E五个变量表示自左到右五个未知的数字。其中A的取值范围为2-9,其余取值范围为0-

23、9。条件表达式即为给定算式2022-5-24The C Programming Language55棋迷俱乐部v张三、李四、王五三个棋迷,定期去文化宫下棋。张三每五天来一次,李四每六天来一次,王五每九天来一次。问每过多少天他们才能一起在文化宫下棋?v分析:设结果为x ,其取值范围为0。因上限为无限大,计数值不能预先确定,故用while循环结构更合适。 2022-5-24The C Programming Language56素数判断v分析:素数是一个大于2,且不能被1和本身以外的整数整除的整数。 v方法:一般来说,将数N被2N之间的整数除,除尽不是素数;除不尽是素数;实际上可以将数N被2sqr(N)间全部整数除。2022-5-24The C Programming Language57素

温馨提示

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

评论

0/150

提交评论