C语言程序设计教程电子教案-第05章.ppt

上传人(卖家):三亚风情 文档编号:3377083 上传时间:2022-08-25 格式:PPT 页数:18 大小:284.87KB
下载 相关 举报
C语言程序设计教程电子教案-第05章.ppt_第1页
第1页 / 共18页
C语言程序设计教程电子教案-第05章.ppt_第2页
第2页 / 共18页
C语言程序设计教程电子教案-第05章.ppt_第3页
第3页 / 共18页
C语言程序设计教程电子教案-第05章.ppt_第4页
第4页 / 共18页
C语言程序设计教程电子教案-第05章.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、第第5章章 循环结构程序设计循环结构程序设计5.1 循环语句概述循环语句概述5.2 for语句和语句和while语句语句5.3 直到型循环直到型循环do-while语句语句5.4 break语句与语句与continue语句语句5.5 应用举例应用举例良好的源程序书写习惯良好的源程序书写习惯注释注释(续)(续)Return5.1 循环语句概述循环语句概述求1100的累计和。根据已有的知识,可以用“1+2+100”来求解,但显然很繁琐。现在换个思路来考虑:首先设置一个累计器sum,其初值为0,利用sum+=n来计算(n依次取1、2、100),只要解决以下3个问题即可:(1)将n的初值置为1;(2)

2、每执行1次“sum+=n”后,n增1;(3)当n增到101时,停止计算。此时,sum的值就是1100的累计和。根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用这种重复计算结构(称为循环结构),C语言提供了3条循环语句来实现,以简化、并规范循环结构程序设计。在语言中,可用以下语句实现循环:(1)用for语句。(2)用do-while语句。(3)用while语句。(4)用goto语句和if语句构成循环。使用goto语句实现求解1100累计和的程序可以如下:main()int n=1,sum=0;loop:sum+=n;n+;if(n=100)goto loop;printf(“sum=

3、%dn”,sum);其中“loop:”为语句标号(格式:标号:语句行),其命名遵循标识符命名规则。goto语句格式:goto 标号,功能为:使系统转向标号所在的语句行执行。注意注意:结构化程序设计方法,主张限制使用goto语句。因为滥用goto语句,将会导致程序结构无规律、可读性差。另外,从功能上说,for语句可完全代替当型循环语句while,所以该语句也不是必需的。Return5.1.1 while语句(1)一般格式 while(循环继续条件)循环体语句组;(2)执行过程 1.求解“循环继续条件”表达式。如果其值为非0,转 2;否则转3。2.执行循环体语句组,然后转1)。3.执行while语

4、句的下一条。显然,while循环是for循环的一种简化形式(缺省“变量赋初值”和“循环变量增值”表达式)。5.1 while语句和用while语句构成的循环结构案例案例5.3 用while语句求1100的累计和。/*案例代码文件名:AL5_3.C*/*程序功能:求1100的累计和*/main()int i=1,sum=0;/*初始化循环控制变量i和累计器sum*/while(i=100)sum+=i;/*实现累加*/i+;/*循环控制变量i增1*/printf(“sum=%dn”,sum);程序演示程序演示程序运行情况如下:sum=50505循环嵌套(1)循环语句的循环体内,又包含另一个完整的

5、循环结构,称为循环的嵌套。循环嵌套的概念,对所有高级语言都是一样的。(2)for语句和while语句允许嵌套,do-while语句也不例外。Return5.2 直到型循环直到型循环do-while语句语句1一般格式 do 循环体语句组;while(循环继续条件);/*本行的分号不能缺省*/当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。2执行过程执行过程如图5-3所示。(1)执行循环体语句组。(2)计算“循环继续条件”表达式。如果“循环继续条件”表达式的值为非 0(真),则转向(1)继续执行;否则,转向(3)。(3)执行do-while的下一条语句。do-while循环语句的特点是:

6、先执行循环体语句组,然后再判断循环条件。案例案例5.4 用do-while语句求解1100的累计和。/*案例代码文件名:AL5_4.C*/*程序功能:求1100的累计和*/main()int i=1,sum=0;/*定义并初始化循环控制变量,以及累计器*/do sum+=i;/*累加*/i+;while(i=100);/*循环继续条件:i=100*/printf(“sum=%dn”,sum);程序演示程序演示do-while语句比较适用于处理:不论条件是否成立,先执行1次循环体语句组的情况。除此之外,do-while语句能实现的,for语句也能实现,而且更简洁。Return1for语句的一般格

7、式 for(变量赋初值;循环继续条件;循环变量增值)循环体语句组;2for语句的执行过程执行过程如图5-1所示。(1)求解“变量赋初值”表达式。(2)求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。(3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。(4)执行for语句的下一条语句。3说明(1)“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,甚至全部缺省,但其间的分号不能省略。(2)当循环体语句组仅由一条语句构成时,可以不使用复合语句形式,如上例所示。(3)“循环变量赋初值”表达式,既可以是给循环变量赋初值的赋值表达式,也可以是与此无关

8、的其它表达式(如逗号表达式)。例如,for(sum=0;i=100;i+)sum+=i;for(sum=0,i=1;i=100;i+)sum+=i;(4)“循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达式外,也允许是数值(或字符)表达式。在3条循环语句中,for语句最为灵活,不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。案例案例5.1 求1100的累计和。/*案例代码文件名:AL5_1.C*/*程序功能:求1100的累计和*/main()int i,sum=0;/*将累加器sum初始化为0*/for(i=1;i=100;i+)sum+=i;

9、/*实现累加*/printf(sum=%dn,sum);程序演示程序演示程序运行情况如下:sum=5050案例案例5.2 求n的阶乘n!(n!=1*2*n)。/*案例代码文件名:AL5_2.C*/*程序功能:求n!*/main()int i,n;long fact=1;/*将累乘器fact初始化为1*/printf(“Input n:”);scanf(“%d”,&n);for(i=1;i=3),即从第3个数开始,每个数等于前2个数之和。算法设计,请参见第2章第1节(2.1)。参考源程序如下:/*案例代码文件名:AL5_5.C*/main()long int f1=1,f2=1;/*定义并初始化

10、数列的头2个数*/int i=1;/*定义并初始化循环控制变量i*/for(;i=20;i+)/*1组2个,20组40个数*/printf(“%15ld%15ld”,f1,f2);/*输出当前的2个数*/if(i%2=0)printf(“n”);/*输出2次(4个数),换行*/f1+=f2;f2+=f1;/*计算下2个数*/程序演示程序演示 例例5.6 输出10100之间的全部素数。所谓素数n是指,除1和n之外,不能被2(n-1)之间的任何整数整除。算法设计要点:算法设计要点:(1)显然,只要设计出判断某数n是否是素数的算法,外面再套一个for循环即可。(2)判断某数n是否是素数的算法:根据素

11、数的定义,用2(n-1)之间的每一个数去整除n,如果都不能被整除,则表示该数是一个素数。判断一个数是否能被另一个数整除,可通过判断它们整除的余数是否为0来实现。参考源程序如下:main()int i=11,j,counter=0;for(;i=100;i+=2)/*外循环:为内循环提供一个整数i*/for(j=2;j=i)/*整数i是素数:输出,计数器加1*/printf(“%6d”,i);counter+;程序演示程序演示 思考题思考题:外循环控制变量i的初值从11开始、增量为2的作法有什么好处?为提高运行速度,如何优化内循环?(提示:从减少计算次数角度来考虑)Return良好的源程序书写习惯良好的源程序书写习惯注释(续)注释(续)(3)循环结构在C语言中,循环结构由循环语句for、while和do.while来实现。作为注释,应在它们的前面说明其功能,在循环条件判断语句行的后面,说明循环继续条件的含义,如下所示。1)for语句/*功能*/for(变量初始化;循环条件;变量增值)/*循环继续条件的含义*/2)while语句/*功能说明*/while(循环条件)/*循环继续条件的含义*/3)do.while语句/*功能说明*/do while(循环条件);/*循环继续条件的含义*/如果循环嵌套,还应说明每层循环各控制什么。Return

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言程序设计教程电子教案-第05章.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|