版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计高级语言程序设计孟宇龙计算机科学与技术学院第第5章章 循环循环结构程序设计结构程序设计本章需要掌握的内容本章需要掌握的内容掌握掌握3种基本循环。种基本循环。掌握多重循环。掌握多重循环。掌握掌握continue 和和break 的使用。的使用。编写循环结构程序。编写循环结构程序。5.1 引言引言什么是循环?什么是循环?为什么要使用循环?为什么要使用循环?1001nyn问题问题1 1:问题问题2:2: 在许多问题中需要用到循环控制。循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。gotogoto语句以及用语句以及用gotogoto语
2、句构成循环语句构成循环ngoto语句为无条件转向语句,它的一般形式为goto 语句标号;n语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或下划线。例如:goto label_1; 合法; goto 123; 不合法。n一般来说,goto语句可以有两种用途:(1) 与if语句一起构成循环结构;(2) 从循环体中跳转到循环体外。n但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。goto 语句举例语句举例用if语句和goto语句构成循环,求1到100的和。void main( ) int i, sum=0;
3、i = 1;loop: if (i=100) sum = sum+i; i+; goto loop; printf(%dn ,sum);n结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。5.2 循环的实现方法循环的实现方法n三种:while 、dowhile 、forn每种循环都需要下面的元素: 循环变量 循环体 循环的判断条件5.2.1 while循环循环nwhile语句用来实现“当型当型”循环结构。n一般形式: while (表达式) 循环体语句;expr循环体假(0)真(非0)while求求1 1到到100100的和(的和(whilewhil
4、e循环)循环)#include void main()int i, sum=0;i=1; while (i=100) sum = sum+i; i+; printf(%dn,sum);n例例5.1从键盘输入一组学生成绩,若输入的成绩大于或等于0,将其累加到总成绩上,若成绩小于0,停止输入,然后计算并输出平均成绩。5.2.2 for循环循环n一般形式for (expr1 ; expr2 ; expr3) 循环体语句;循环体语句;expr2循环体假(0)真(非0)forexpr1expr3for ( (循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值) )循环体语句;循
5、环体语句;for语句等价于下列语句:表达式1;while (表达式2) 语句; 表达式3; 例例5.2 5.2 求求1 1到到100100的和(的和(forfor循环)循环)#include void main() int i, sum=0;for (i=1; i=100; i+) sum = sum+i; printf(%dn,sum);例例5.3 从键盘输入10个整型数据,找出其中最大数和最小数。for 语句的说明语句的说明(1) for语句的一般形式中的“表达式1”可以省略。for (;i=100; i+) sum = sum+i;(2) 表达式2省略,即不判断循环条件。for (i=1
6、 ; ; i+) sum = sum+i;(3) 表达式3也可以省略。for (i=1 ; i=100 ;) sum = sum+i; i+;for 语句的说明语句的说明(4)可以只有表达式2,即只给循环条件。 for( ; i=100 ;) while(i=100) sum=sum+i; 相当于相当于 sum=sum+i; i+; i+; (5) 3个表达式都可省略。 for(; ;) 语句; 相当于相当于 while(1) 语句;for 语句的说明语句的说明(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。 for (sum=0; i=100; i+)
7、sum = sum+i;for(sum=0, i=1 ; i=100 ; i+) sum=sum+i;for(i=0, j=100 ; i=j ; i+, j-) k=i+j;for语句的说明语句的说明(7) 表达式一般是关系表达式(如i=100)或逻辑表达式(如ab & xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。 for(i=0 ; (c=getchar()!=n ; i += c) ; for( ; (c=getchar()!=n ; ) printf(%c, c);5.2.3 dowhile循环循环ndowhile语句的特点先执行循环体,然后判断循环条件是否
8、成立。n一般形式: do 循环体语句;while (表达式); n执行流程do循环体expr假(0)真(非0)while求求1 1到到100100的和的和(do(dowhile)while)#include void main()int i, sum=0;i=1; do sum = sum+i; i+; while (i=100); printf(%dn,sum);while 和和 dowhile 的比较的比较#include void main() int i, sum=0; scanf(%d,&i); do sum += i; i+; while(i=10); printf(%d,sum)
9、;#include void main() int i, sum=0; scanf(%d,&i); while (i=10) sum += i; i+; printf(%d,sum);比较:比较:i=1i=1和和i=11i=11时的输出结果时的输出结果5.2.4 5.2.4 循环的嵌套循环的嵌套while()while() dodo while(); while();for()for () while()do while();for()while() do()for() while();5.3 5.3 break语句和语句和continue语句语句nbreak语句可以用来从循环体内跳出循环体,
10、即提前结束循环,接着执行循环下面的语句。n一般形式:break;nbreak语句不能用于循环语句和switch语句之外的任何其他语句中。float pi = 3.14159;for (r=1 ; r100) break; printf(r=%f,area=%fn, r , area);continue语句语句ncontinue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。n一般形式: continue;ncontinue语句和break语句的区别continue语句只结束本次循环,而不是终止整个循环的执行。while (表达式1) if (表达式
11、2) break; while (表达式1) if(表达式2) continue; 例:把例:把100-200100-200之间的不能被之间的不能被3 3整除的数输出。整除的数输出。#include void main()int n; for ( ) . printf(n);例:把例:把100-200100-200之间的不能被之间的不能被3 3整除的数输出。整除的数输出。#include void main()int n; for (n=100; na,r=b, b=a,r=b,再计算再计算a a和和b b的余数,执行;的余数,执行; b b是最大公约数。是最大公约数。 求解最大公约数是一个循
12、环过程,循环条件是余数求解最大公约数是一个循环过程,循环条件是余数r r不为不为0 0;循环体包含三个操作:;循环体包含三个操作:b=a,r=b,b=a,r=b,计算计算a a和和b b的余数。的余数。数据结构数据结构 定义三个变量。变量定义三个变量。变量a a、b b分别存储两个原始数据,变量分别存储两个原始数据,变量r r存储余数。存储余数。5.4 程序举例程序举例#include stdio.h#include stdio.hvoid main()void main()int a,b,r;int a,b,r; scanf(%d%d,&a,&b); scanf(%d%d,&a,&b); p
13、rintf(%d printf(%d和和%d%d的最大公约是:的最大公约是:,a,b);,a,b); r=a%b; r=a%b; while(r!=0) while(r!=0) a=b; a=b; b=r; b=r; r=a%b r=a%b; ; printf(%dn,b); printf(%dn,b); 输入a、ba%b=r当r0 b=ar=ba%b=r输出b图图5. 20例例5.10运行结果运行结果5.4 程序举例程序举例例例5.11打印输出打印输出Fibonacci数列的前数列的前20项项,每行输出每行输出5个数据。个数据。Fibonacci数列的通项如下数列的通项如下:fn=1 n=1
14、、2fn-1+fn-2 n=3问题分析:问题分析: 循环体可分为三部分:循环体可分为三部分:计算、输出、为下一次循环做准备计算、输出、为下一次循环做准备。计算主。计算主要是根据前两项计算当前项。输出部分首先输出当前项,然后控制换行操作要是根据前两项计算当前项。输出部分首先输出当前项,然后控制换行操作。如果当前计算、输出的是第。如果当前计算、输出的是第i i项,其前两项分别是第项,其前两项分别是第i-1i-1项和项和i-2i-2项;当进入项;当进入一下次循环时,计算、输出的是第一下次循环时,计算、输出的是第i+1i+1项,它的前两项分别是第项,它的前两项分别是第i i项和第项和第i-1i-1项项
15、,在计算第,在计算第i+1i+1项前,应先将第项前,应先将第i i项和第项和第i-1i-1项的值存入表示前两项的变量中,项的值存入表示前两项的变量中,这是计算、输出第这是计算、输出第i+1i+1项前的准备工作。项前的准备工作。5.4 程序举例程序举例#include #include void main()void main() double x1,x0,f,f1; double x1,x0,f,f1; x1=1.5; x1=1.5; do do x0=x1; x0=x1; f=(2 f=(2* *x0-4)x0-4)* *x0+3)x0+3)* *x0-6;x0-6; f1=(6 f1=(6
16、* *x0-8)x0-8)* *x0+3;x0+3; x1=x0-f/f1; x1=x0-f/f1; while(fabs(x1-x0)=1e-5); while(fabs(x1-x0)=1e-5); printf(The root of equation is printf(The root of equation is 5.2fn,x1);5.2fn,x1); 1.5=x1 X1=x0f(x0)=ff(x0)=f1x1=x0-f/f1当x1-x0|10-5输出x1图图5.25例例5.12运行结果运行结果5.4 程序举例程序举例例例5.135.13打印输出下面的图形,行数由键盘输入(行数打印输出下面的图形,行数由键盘输入(行数=9ni=1;i=n;i+ j=1;j=n-i;j+ 输出空格j=1;j=1;j- 输出j输出换行符图图5.26例例5.13框图框图图图5.27例例5.13运行结果运行结果#include #include void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 奥迪订购合同模板(3篇)
- 安排工作合同模板(3篇)
- 职责清单式履责承诺书5篇范文
- 公司合同签订承诺书7篇
- AI智能音箱研发技术要点及案例分析
- 2026年中国联合网络通信有限公司四川省分公司招聘备考题库附答案详解
- 2026年佛山市三水区西南街道金本中学现向社会诚聘物理临聘教师备考题库及完整答案详解1套
- 2026年广东海洋大学招聘教学岗合同制专任教师备考题库(第二批)附答案详解
- 2025年桂林市临桂区公开招聘区管国有企业领导人员备考题库及参考答案详解
- 2025年港口镇镇属企业集团公开招聘员工备考题库带答案详解
- 2025至2030中国细胞存储行业调研及市场前景预测评估报告
- 《中华人民共和国危险化学品安全法》解读
- 水暖施工员考试及答案
- 2025年省级行业企业职业技能竞赛(老人能力评估师)历年参考题库含答案
- 2025年北京高中合格考政治(第一次)试题和答案
- 培养员工的协议书
- 1.1《子路、曾皙、冉有、公西华侍坐》教学课件2025-2026学年统编版高中语文必修下册
- 2025天津中煤进出口有限公司面向中国中煤内部及社会招聘第五批电力人才52人(公共基础知识)测试题附答案解析
- QSB知识培训资料重点
- 刑法学(上册)马工程课件 第1章 刑法概说
- GB/T 1041-2008塑料压缩性能的测定
评论
0/150
提交评论