已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 循环结构程序设计,教学要求:通过本章的教学,掌握循环结构三种语句while、do_while和for的基本特点,及其循环控制的具体过程;掌握循环程序设计方法,能运用循环结构的三种语句熟练进行循环结构程序设计;掌握break和continue语句在循环结构中的不同作用;掌握多重循环程序的结构特点,能设计简单的多重循环结构程序。 教学提示:C语言中for语句的使用最为灵活,功能更强,凡是用while、do_while循环能完成的,用for循环一定能够实现。另外,在循环结构中应有使循环趋向于结束的处理语句,否则循环将无休止的执行下去。多重循环是实际应用中常用的循环结构,熟练掌握单重循环程序设计是进行多重循环程序设计的基础。,第5章 循环结构程序设计,教学内容:循环结构是C语言的三种基本结构之一,前两章分别对顺序结构和选择结构进行了介绍,接下来,本章将介绍循环结构及其循环结构程序设计的相关知识,内容主要包括:【1】实现循环结构的三种语句(while语句、do_while语句和for语句)的语法格式、结构特点、功能,以及使用它们进行循环结构程序设计的方法;【2】break和continue语句的用法;【3】多重循环的概念、结构特点及其应用。,第5章 循环结构程序设计,在实际应用中,我们会遇到大量的需要按一定规律重复处理的问题。比如,计算前100个自然数之和,求10的阶乘等等。这些都需要用到循环结构。几乎所有实用的程序都包含循环,因此熟练掌握循环结构的概念及其使用是程序设计的最基本的要求。 循环结构是结构化程序设计的三种基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。在C语言中,用来实现循环结构的语句有while、do-while和for语句。,第5章 循环结构程序设计,5.1 while语句 while 语句的一般形式为:while (表达式)语句 while语句的执行过程:首先计算条件表达式的值,如果表达式的值为非0(真),则执行循环体语句;重复上述操作,直到表达式的值为0(假)时才结束循环。,第5章 循环结构程序设计,例5.1求 main() int n,sum=0; n=1; while (n=50) sum=sum+n; n+; printf(“sum=%d“,sum); 运行结果为; sum=1275 P66【实例演示】,第5章 循环结构程序设计,提醒: 循环体如果包含一个以上的语句,应该用花括弧括起来,即以复合语句的形式出现。如果不加花括弧,则while语句的范围只到while后面第一个分号处。例如,本例中while语句中如无花括弧,则while语句范围只到“sum=sum+n;”。 while后圆括号内的表达式,可以是C语言中任意合法的表达式。表达式的值决定循环是否结束,因此,在设计while语句时,在循环体中应有使循环趋向于结束的语句,否则循环将无休止的进行下去,从而形成死循环。例如,在本例中循环结束的条件是“n50”,因此在循环体中应该有使n增值以最终导致n50的语句,在此,我们是用“n+;”语句来达到此目的。如果无此语句,则n的值始终不改变,循环永不结束。 循环体还可以是空语句(单独一个分号),此时表示什么也不执行,一般用作延时用。 【趣味例题】:guess.c,第5章 循环结构程序设计,5.2 do-while语句 do-while 语句的一般形式为: do 语句 while (表达式);,第5章 循环结构程序设计,提醒: do-while语句中的“语句”为循环体,它可以是一个简单语句也可以一个复合语句。在设计do-while语句时,在循环体中也应有使循环趋向于结束的语句,否则循环将无休止的进行下去,从而形成死循环。 do-while语句的执行过程:首先执行do后面的循环体语句(无条件执行一次),然后判别while后圆括号内表达式,当表达式的值为非0(“真”) 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时才循环结束。,第5章 循环结构程序设计,例5.2用do-while语句求 main() int n, sum=0; n=1; do sum=sum+n; n+; while (n=50); printf(“sum=%d“,sum); 运行结果为; sum=1275,第5章 循环结构程序设计,do-while与while语句的区别是:while循环的特点是先判断,后执行;只有当表达式的值为非0时,才执行循环体;如果表达式的值一开始就为0,则循环体一次也不执行;而do-while循环的特点是先执行,后判断,无论表达式一开始的值是0还是非0,循环体至少都要被执行一次。 因此,一个循环问题,如果循环体重复执行的次数有可能为0的话,则只能用while语句,如果循环体重复执行的次数1,则既可以用while语句又可以用do-while语句。换句话说来说就是,凡是可以用do-while循环实现的,一定可以用while循环实现;反过来,则不一定,即凡是可以用while循环实现的未必能用do-while循环实现。 【举例】,第5章 循环结构程序设计,5.3 for语句 C语言中for语句的使用最为灵活,它完全可以代替while、do-while语句 for语句的一般形式为: for (表达式1 ; 表达式2 ; 表达式3) 语句,第5章 循环结构程序设计,for语句的执行过程如图所示,可以用文字描述如下: (1)先求解表达式1。 (2)求解表达式2,若其值 为非0(真),则执行循环体语句,然后执行下面第(3)步。若为0(假),则结束循环,转到第(5)步。 (3)求解表达式3。 (4)转回上面第(2)步继续执行。 (5)循环结束,执行for语句下面的一个语句。,for (表达式1 ; 表达式2 ; 表达式3) 语句,第5章 循环结构程序设计,for语句中的三个表达式起着不同的作用 表达式1一般用于给循环控制变量赋初值(循环控制变量即控制循环次数的变量,简称循环变量) 表达式2一般作为循环结束的判断条件 表达式3一般用来修改循环控制变量的值,使循环能正常的结束。 例:计算 #include main() int n,sum=0; for(n=1;n=50;n+) sum=sum+n; printf(“%dn“,sum); P7071提示,第5章 循环结构程序设计,P71例5.3 提示: 由于程序中调用了字符输入、输出函数,所以应将stdio.h头文件应包含在程序中。 从终端键盘向计算机输入数据时,是在按Enter键以后才送到内存缓冲区中去的。即不是从终端敲入一个字符马上接收一个字符,而是按Enter键后数据才送入内存缓冲区,然后每次从缓冲区读一个字符。 从上面介绍可以知道c语言中的for语句比其他语言中的for语句使用更加灵活,功能更加强大。可以把循环体和一些与循环控制无关的操作放在for语句的表达式1或表达式3中,这样可以使程序简洁、短小精炼。但过分地利用这一特点往往又会降低程序可读性,使程序晦涩难懂。建议不要把与循环控制无关的内容放到for语句中。,第5章 循环结构程序设计,重点:三种循环的比较 for、while和do-while三种循环结构语句各有特点,归纳起来主要有以下几方面: 三种不同的循环语句都能实现循环控制,但不同的循环语句,在进行循环控制时灵活性不一样。其中使用最多的是for语句,for语句使用最为灵活,功能更强。凡是用do-while能完成的,都可以用while实现。凡是用while、do-while循环能完成的,都可以用for循环实现。反之则不一定。任何循环都可以用for语句实现。 用while和do-while循环时,循环变量初始化的操作一般应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。 while循环和for循环都是先判断循环条件,然后决定是否执行循环体,当一开始就不满足循环条件时,循环体1次也不执行;而do-while语句是先执行一次循环体后,再判断循环条件,因此,循环体执行的次数最少都为1次。,第5章 循环结构程序设计,5.4 多重循环 5.4.1 多重循环的概念 在循环体结构中,如果一个循环体内又包含另一个或另几个完整的循环结构,就构成了多重循环,也称为循环的嵌套。嵌在循环体内的循环被称为内循环,嵌有内循环的循环被称为外循环。显然,在多重循环中,内循环和外循环的概念具有相对性,一个内循环的循环体中还可以嵌入其他的循环结构。 设计多重循环程序的关键,是首先要明确每一重循环完成的任务,通常外循环用来对内循环进行控制,内循环用来实现具体的操作。当循环嵌套层数较多时,循环控制就会变得比较复杂。,第5章 循环结构程序设计,例5.4 设计一个乘法表程序,输出如下所示的九九乘法表。 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*9=9 2*9=18 3*9=27 4*9=36 9*9=81,第5章 循环结构程序设计,分析 乘法表的特点是: 共有9行; 每行的式子数很有规律,即:第几行,就有几个式子; 对于每一个式子,既与所在的行有关,又与所在的行上的位置(列)有关。 我们先看输出其中一行的情况: 假设要输出的是第i行,我们知道i行共有i个式子,可用如下程序段实现。 for (j=1;j=i;j+) printf(“%d*%d=%-3d“,j,i,j*i); printf(“n“); 如果给上述程序段加一个外循环,使i从1取到9,每执行一次内循环,就输出了乘法表中的,第5章 循环结构程序设计,例5.4 main() int i,j; for (i=1;i=9;i+) for (j=1;j=i;j+) printf(“%d*%d=%-3d“,j,i,j*i); printf(“n“); ,第5章 循环结构程序设计,5.4.2 多重循环的结构 C语言的三种循环语句(while语句、do-while语句和for语句)可以互相嵌套,任何一种循环语句都可以出现在其他循环语句的循环体中。例如,下面几种都是合法的形式: (1) while( ) (4) for(; ;) while( ) while( ) (2) do (5) do do for (; ;) while( ); while( ); while( ); (6) while( ) (3) for(;) do for(; ;) while( ); ,第5章 循环结构程序设计,提醒: 在使用多重循环时,要注意内、外循环结构不能出现交叉。在同一个循环体中,允许出现多个并列的内循环。,第5章 循环结构程序设计,5.5 break、continue和goto语句 5.5.1 break语句 break语句只能用在循环语句和多分支选择结构switch语句中。当break语句用于switch语句中时,可使程序跳出switch语句而继续执行switch语句下面的一个语句;当break语句用于while、do-while和for循环语句中时,可用来从循环体内跳出循环体,即使程序提前结束当前循环,转而执行该循环语句的下一个语句。 break语句的一般形式为: break;,第5章 循环结构程序设计,例5.5判断m是否为素数。 分析 素数是除1和它本身之外不能被任何一个整数所整除的除1以外的自然数。如2,3,5,7是素数,而1,4,6,8,9,10不是素数。 最简单的方法就是用从2一直到m-1的数逐个去除m,只要m能被其中的某一个数除尽,则m不是素数;而m不能被其中的任何一个数除尽,则m是素数。这种方法虽然能解决问题,但循环次数较多。实际上,我们只需要让m被2到 之间的数除即可,因为如果小于等于 的数都不能除尽m,那么大于 的数也不可能除尽m。即如果m不能被2到 之间的任何一个整数整除,则m是素数,否则不是素数。采用后者显然能有效的减少循环次数,提高程序运行的效率。 我们采用的算法是这样的:设置一个循环变量i,让它取2到 之间的所有整数,如果找到第一个能整除m的i,则m不是素数,提前结束循环(没有必要找第二个能整除m的i),由于是提前结束的循环,此时i必然小于或等于k(即 );如果m不能被2 之间的任何一个整数整除,则循环将正常结束,在完成最后一次循环后,i还要加1,因此结束循环后i等于k+1。最后,在循环之后判别i的值是否等于k+1即可,若是,则表明未曾被2 之间任一整数整除过(if语句条件一次也未满足过,没有执行过break,循环正常结束),因此输出“是素数“,否则输出“不是素数”。,第5章 循环结构程序设计,例5.5 #include main() int m,i,k; scanf(“%d“, ,第5章 循环结构程序设计,5.5.2 continue语句 continue语句的作用是提前结束本次循环,即跳过循环体中剩余的语句而直接执行下一次循环。 continue语句的一般形式为:continue; 提醒: continue语句和break语句的区别是: continue语句只能用于while、do-while和for循环语句中,而break语句既可以用于while、do-while和for循环语句中,又可以用于多分支选择结构switch语句中。 continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程。,第5章 循环结构程序设计,有以下两个循环结构: (1) while(表达式1) (2) while(表达式1) if(表达式2) break; if(表达式2) continue; ,第5章 循环结构程序设计,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教学材料礼仪-第四章
- 养鹅技术试题及答案
- 2026年江苏省中小学编制教师招聘考试备考题库及答案详解
- 中国电波钟行业发展状况与前景态势研究研究报告
- 中国防干扰屏蔽材料市场销营销模式与竞争格局分析研究报告
- 2026重庆垫江县杠家镇人民政府招聘政法社工1人考试备考试题及答案详解
- 2026重庆市铜梁区平滩镇人民政府招聘敬老院院长1人考试备考试题及答案详解
- 中国铝制玻璃吸盘行业经营优势及前景趋势洞察研究报告
- 能源节约行业市场深度调研及发展趋势与投资战略研究报告
- 2026年福建厦门技师学院招聘事业单位人员7人笔试参考试题及答案详解
- 苏州城市学院招聘真题
- 2图幅分析及病害原因20210812课件讲解
- NB-T25013-2013核电厂发电机组首次并网试验要求
- 造口的护理个案
- 发泡基础知识与生产工艺课件
- 院感知识的培训课件
- 博物馆监控设计方案
- AS9100D-2016手册程序推荐
- 缺血缺氧性脑病课件
- 钢结构大棚施工组织设计方案
- GB/T 24140-2009内燃机空气和真空系统用橡胶软管和纯胶管规范
评论
0/150
提交评论