高级C语言循环结构程序设计.ppt

上传人:laozhun 文档编号:2236051 上传时间:2023-02-04 格式:PPT 页数:35 大小:490.50KB
返回 下载 相关 举报
高级C语言循环结构程序设计.ppt_第1页
第1页 / 共35页
高级C语言循环结构程序设计.ppt_第2页
第2页 / 共35页
高级C语言循环结构程序设计.ppt_第3页
第3页 / 共35页
高级C语言循环结构程序设计.ppt_第4页
第4页 / 共35页
高级C语言循环结构程序设计.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《高级C语言循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《高级C语言循环结构程序设计.ppt(35页珍藏版)》请在三一办公上搜索。

1、1,高级语言程序设计,孟宇龙计算机科学与技术学院,2,第5章 循环结构程序设计,本章需要掌握的内容掌握3种基本循环。掌握多重循环。掌握continue 和break 的使用。编写循环结构程序。,3,5.1 引言,什么是循环?为什么要使用循环?,问题1:,问题2:求学生平均成绩 分数相加后除以课数,在许多问题中需要用到循环控制。循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。,4,goto语句以及用goto语句构成循环,goto语句为无条件转向语句,它的一般形式为goto 语句标号;语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和

2、下划线组成,其第一个字符必须为字母或下划线。例如:goto label_1;合法;goto 123;不合法。,5,一般来说,goto语句可以有两种用途:(1)与if语句一起构成循环结构;(2)从循环体中跳转到循环体外。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。,6,goto 语句举例,用if语句和goto语句构成循环,求1到100的和。,void main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(%dn,sum);,结构化程序设计方法主张限制使用goto语句,因为滥用

3、goto语句将使程序流程无规律、可读性差。,7,8,5.2 循环的实现方法,三种:while、dowhile、for每种循环都需要下面的元素:循环变量循环体循环的判断条件,9,5.2.1 while循环,while语句用来实现“当型”循环结构。一般形式:while(表达式)循环体语句;,10,求1到100的和(while循环),#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%dn,sum);,11,例5.1从键盘输入一组学生成绩,若输入的成绩大于或等于0,将其累加到总成绩上,若成绩小于0,停止输入,然后计

4、算并输出平均成绩。,12,5.2.2 for循环,一般形式,for(expr1;expr2;expr3)循环体语句;,13,for(循环变量赋初值;循环条件;循环变量增值)循环体语句;,for语句等价于下列语句:表达式1;while(表达式2)语句;表达式3;,14,例5.2 求1到100的和(for循环),#include void main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(%dn,sum);,15,例5.3 从键盘输入10个整型数据,找出其中最大数和最小数。,16,for 语句的说明,(1)for语句的一般形式中的“表达式1”可

5、以省略。for(;i=100;i+)sum=sum+i;(2)表达式2省略,即不判断循环条件。for(i=1;i+)sum=sum+i;(3)表达式3也可以省略。for(i=1;i=100;)sum=sum+i;i+;,17,for 语句的说明,(4)可以只有表达式2,即只给循环条件。for(;i=100;)while(i=100)sum=sum+i;相当于 sum=sum+i;i+;i+;(5)3个表达式都可省略。for(;)语句;相当于 while(1)语句;,18,for 语句的说明,(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。for(sum=0

6、;i=100;i+)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;,19,for语句的说明,(7)表达式一般是关系表达式(如i=100)或逻辑表达式(如ab,20,5.2.3 dowhile循环,dowhile语句的特点先执行循环体,然后判断循环条件是否成立。一般形式:do 循环体语句;while(表达式);执行流程,21,求1到100的和(dowhile),#include void main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);prin

7、tf(%dn,sum);,22,while 和 dowhile 的比较,#include void main()int i,sum=0;scanf(%d,#include void main()int i,sum=0;scanf(%d,比较:i=1和i=11时的输出结果,23,5.2.4 循环的嵌套,while()while(),dodo while();while();,for()for(),while()do while();,for()while(),do()for()while();,24,5.3 break语句和continue语句,break语句可以用来从循环体内跳出循环体,即提前

8、结束循环,接着执行循环下面的语句。一般形式:break;break语句不能用于循环语句和switch语句之外的任何其他语句中。,float pi=3.14159;for(r=1;r100)break;printf(r=%f,area=%fn,r,area);,25,continue语句,continue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。一般形式:continue;continue语句和break语句的区别continue语句只结束本次循环,而不是终止整个循环的执行。,while(表达式1)if(表达式2)break;,while(表达

9、式1)if(表达式2)continue;,26,例:把100-200之间的不能被3整除的数输出。,#include void main()int n;for().printf(n);,27,例:把100-200之间的不能被3整除的数输出。,#include void main()int n;for(n=100;n=200;n+)if(n%3=0)continue;printf(%d,n);printf(n);,28,5.3 循环的比较,(1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。(2)在while循环和do-while循环中,只在while后

10、面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i+,或i=i+1等)。,29,5.3 循环的讨论比较,(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。(4)while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环(break语句和continue语句见下节)。而对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。,5.4 程序举例,例5.10 求

11、两数的最大公约数。问题分析 通常用欧几里德方法(又称“辗转相除”法)求解两个数的最大公约数。欧几里德方法的基本思想如下。设两个数分别为a和b。计算a和b的余数r;若r=0,执行;否则执行;b=a,r=b,再计算a和b的余数,执行;b是最大公约数。求解最大公约数是一个循环过程,循环条件是余数r不为0;循环体包含三个操作:b=a,r=b,计算a和b的余数。数据结构 定义三个变量。变量a、b分别存储两个原始数据,变量r存储余数。,5.4 程序举例,#include stdio.hvoid main()int a,b,r;scanf(%d%d,图5.20例5.10运行结果,5.4 程序举例,例5.11

12、打印输出Fibonacci数列的前20项,每行输出5个数据。Fibonacci数列的通项如下:,问题分析:循环体可分为三部分:计算、输出、为下一次循环做准备。计算主要是根据前两项计算当前项。输出部分首先输出当前项,然后控制换行操作。如果当前计算、输出的是第i项,其前两项分别是第i-1项和i-2项;当进入一下次循环时,计算、输出的是第i+1项,它的前两项分别是第i项和第i-1项,在计算第i+1项前,应先将第i项和第i-1项的值存入表示前两项的变量中,这是计算、输出第i+1项前的准备工作。,5.4 程序举例,#include void main()double x1,x0,f,f1;x1=1.5;

13、do x0=x1;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;while(fabs(x1-x0)=1e-5);printf(The root of equation is 5.2fn,x1);,图5.25例5.12运行结果,5.4 程序举例,例5.13打印输出下面的图形,行数由键盘输入(行数=9)。,1 121 12321 1234321123454321,先分析图形的特点:图形的行数(n),每的字符数,每字符的起始位置。本例图形有n行,第i行有2*i-1个字符,第i行字符的起始位置是n-i+1(即每行前有n-i个空格)。每行字符的变化有规律:12i21。,因此:本例的外层循环体可由4部分构成:输出空格,输出字符1、2、i,输出字符i-1、i-2、1,输出换行符。其中前3部分使用循环控制完成。,5.4 程序举例,图5.26例5.13框图,图5.27例5.13运行结果,#include void main()int i,j,n;scanf(%d,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号