循环结构程序设计素材实用教案

上传人:壹****1 文档编号:567620907 上传时间:2024-07-21 格式:PPT 页数:45 大小:1.01MB
返回 下载 相关 举报
循环结构程序设计素材实用教案_第1页
第1页 / 共45页
循环结构程序设计素材实用教案_第2页
第2页 / 共45页
循环结构程序设计素材实用教案_第3页
第3页 / 共45页
循环结构程序设计素材实用教案_第4页
第4页 / 共45页
循环结构程序设计素材实用教案_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《循环结构程序设计素材实用教案》由会员分享,可在线阅读,更多相关《循环结构程序设计素材实用教案(45页珍藏版)》请在金锄头文库上搜索。

1、本章(bnzhn)内容4.1for语句4.2while语句4.3do-while语句4.4break语句和continue语句4.5循环语句的嵌套4.6C语言程序的调试(diosh)方法4.7案例分析与实现第1页/共44页第一页,共45页。【学习目标】掌握三种循环控制语句(yj):for语句(yj)、while语句(yj)和do-while语句(yj)掌握break语句(yj)和continue语句(yj)能够熟练应用for语句(yj)、while语句(yj)和do-while语句(yj)进行程序设计第2页/共44页第二页,共45页。4.1for4.1for语句语句(yj)(yj)一般格式(g

2、 shi)为:for(循环变量赋初值;条件表达式;循环变量增值) 循环体【格式(g shi)说明】(1) for语句的三个表达式之间必须以分号分隔,如果省略条件表达式,则默认条件为真。(2) 循环体是一条简单语句或复合语句。第3页/共44页第三页,共45页。(3)循环变量赋初值部分和循环变量增值部分可以放在for语句的括号之外,但分号不能省略(shngl),上述for语句等价于:循环变量赋初值for(;条件表达式;)循环体循环变量增值第4页/共44页第四页,共45页。【例4-14-1】编写程序求1+2+3+1001+2+3+100的和。#includevoidmain()intsum=0,i;

3、for(i=1;i=100;i+)sum=sum+i;printf(sum=%dn,sum);问题:1)如果求从1到100之间的所有奇数(j sh)之和,上面的程序应如何修改? 2)for循环执行完后,i的值为多少?第5页/共44页第五页,共45页。【例4-2】编程输出1200之间所有用3除余2、且用5除余3的数,并统计这样(zhyng)的数有多少个。编程思路:可以(ky)采用穷举法来编程实现。#includevoidmain() inti,k=0;/k用来计数for(i=1;i=200;i+)if(i%3=2)&(i%5=3)printf(%4d,i);k+;printf(n数的个数为:%d

4、n,k);第6页/共44页第六页,共45页。【例4-3】鸡兔同笼问题(wnt)。已知笼中鸡和兔共100只,共有274只脚,求鸡和兔各有多少只?编程思路:可以采用穷举法来编程实现。#includevoidmain() inta,b;/a和b分别表示(biosh)鸡和兔的数量for(a=1;a100;a+)b=100-a;if(a*2+b*4=274)printf(鸡有:%d只,兔有:%d只n,a,b);第7页/共44页第七页,共45页。#include#includevoidmain() doublesum=0,pi,c;/c为当前(dngqin)项intn;/n为循环控制变量for(n=1;n

5、=100;n+)c=pow(-1,n+1)/(2*n-1);/计算当前(dngqin)项sum=sum+c;/求和pi=4*sum;printf(pi=%lfn,pi);第8页/共44页第八页,共45页。程序(chngx)改进该程序100次调用数学函数pow(),会带来一定的开销,影响程序的执行速度,能否采用其他方式来控制每一项的符号位呢?方法如下:(1)定义一个表示符号位的变量s,语句为:doubles=1;。(2)由于(yuy)符号位正负交替,因此,每执行一次就将符号位取反,这样可将语句c=pow(-1,n+1)/(2*n-1);改为:c=s/(2*n-1);s=-s;。第9页/共44页第

6、九页,共45页。【例4-5】输出所有(suyu)水仙花数。所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。例:15313+53+33#includevoidmain()intm,bai,shi,ge; /bai、shi、ge分别(fnbi)对应百、十和个位for(m=100;m=999;m+)bai=m/100;shi=(m%100)/10;ge=m%10;if(m=bai*bai*bai+shi*shi*shi+ge*ge*ge)printf(%d,m);如何统计这样如何统计这样(zhyng)的数有的数有多少个?多少个?第10页/共44页第十页,共45页。【例4-6】有一数列2、

7、3、5、8、,从第3项开始,每一项为其前两项之和,输出这个(zhge)数列的前20项,且每行显示5个数。#includevoidmain()inti,a1=2,a2=3,a3;printf(%6d%6d,a1,a2);for(i=3;i=20;i+)a3=a1+a2;printf(%6d,a3);a1=a2;a2=a3;if(i%5=0)printf(n);编程思路:这是一个(y )典型的递推问题。 第11页/共44页第十一页,共45页。4.2while语句(yj)while语句(yj)又叫“当”语句(yj),其一般格式为:while(条件表达式)循环体 第12页/共44页第十二页,共45页。

8、【例4-74-7】编写程序求1+2+3+1001+2+3+100的和。#includevoidmain() intsum=0,i=1;while(i=100)sum=sum+i;i=i+1;printf(sum=%dn,sum);【程序(chngx)说明】(1) 一定要在while循环之前给变量sum和i赋初值,否则,变量的值为一个随机数,会导致程序(chngx)的执行结果不正确。(2) 由于循环体由两条语句构成,因此,必须用 将他们括起来。第13页/共44页第十三页,共45页。【例4-84-8】小红今年1212岁,她父亲比她大3030岁,编程计算:多少(dusho)(dusho)年后她父亲的

9、年龄是她的年龄的2 2倍 ,此时她的年龄是多少(dusho)(dusho)? #includevoidmain()intx=12,y=42,m;while(2*x!=y)x+;y+;m=x-12;printf(经过的年数(ninsh):%d,小红的年龄:%d,小红父亲的年龄:%dn,m,x,y);第14页/共44页第十四页,共45页。#include#includevoidmain() doublesum=0,pi,c=1,s=1;/c为当前(dngqin)项,s为符号位intn=1;while(fabs(c)=1e-6)sum=sum+c;s=-s;n+;c=s/(2*n-1);pi=4*s

10、um;printf(pi=%lfn,pi);第15页/共44页第十五页,共45页。用while语句编写的程序一般也可以采用for语句来实现,那么什么情况下更适合采用for语句?什么情况下更适合采用while语句呢?答案是:for语句最适合编写循环次数事先已经知道的循环。对于循环次数事先不能确定(qudng)的情况,采用while语句实现起来会更方便。第16页/共44页第十六页,共45页。4.3do-while4.3do-while语句语句(yj)(yj)do-while语句(yj)又叫“直到型”循环语句(yj),其一般格式为:do 循环体while(条件表达式); 第17页/共44页第十七页,

11、共45页。【例4-104-10】编写程序求1+2+3+1001+2+3+100的和。#includevoidmain()intsum=0,i=1;dosum=sum+i;i=i+1;while(i=100);printf(sum=%dn,sum);第18页/共44页第十八页,共45页。while语句(yj)和do-while语句(yj)的区别(1)do-while语句是先执行,再判断;而while语句是先判断,再执行。(2)do-while语句中循环体至少执行一次;而while语句中,如果第一次判断时条件就不成立,则循环体一次也不会执行。对于(duy)先执行,再判断的应用场合,采用do-whi

12、le语句实现起来更方便。第19页/共44页第十九页,共45页。【例4-114-11】编写一个口令输入程序,让用户输入口令,直至输对为止。假设(jish)(jish)口令为100100。要求分别采用do whiledo while和whilewhile两种循环语句来实现。#includevoidmain() intpwd;printf(请输入(shr)口令:);scanf(%d,&pwd);while(pwd!=100)printf(请输入(shr)口令:);scanf(%d,&pwd);printf(口令正确!);#include void main()int pwd;doprintf(请输入

13、口令(kulng):);scanf(%d,&pwd);while(pwd!=100);printf(口令(kulng)正确!);第20页/共44页第二十页,共45页。4.4break4.4break语句语句(yj)(yj)和和continuecontinue语句语句(yj)(yj)前面介绍的例子都是执行到循环条件不成立时才正常退出(tuch)循环,但在实际应用中有时需要提前结束循环,这时就可以用break语句或continue语句。4.5.1break语句第21页/共44页第二十一页,共45页。【例4-12】从键盘输入一个正整数,判断(pndun)该数是否为素数。#includevoidmai

14、n()inti,m;scanf(%d,&m);for(i=2;im-1)printf(%d是素数(ssh)n,m);elseprintf(%d不是素数(ssh)n,m);素数(s sh)定义:除了1和自身外不能被其它自然数整除的数。 问题:数学上已经证明:只要m不被2 之间的数整除,它就是素数。根据这一原理,上述程序应如何改进? 第22页/共44页第二十二页,共45页。【例4-13】从键盘输入两个(lin)正整数m和n,求他们的最大公约数。根据最大公约数的定义,最大公约数应该(ynggi)在1m(或n)之间,因为是求最大的公约数,所以从大往小求。#includevoid main()int i

15、,m,n;scanf(%d%d,&m,&n);for(i=m;i=1;i-)if(m%i=0 & n%i=0)break;printf(最大公约数:%dn,i);第23页/共44页第二十三页,共45页。4.5.2continue语句(yj)不终止整个(zhngg)循环操作,而只是提前结束本次循环,接着执行下次循环。第24页/共44页第二十四页,共45页。【例4-14】输出100以内(yni)不能被3整除的自然数。#includevoidmain()inti;for(i=1;i=100;i+)if(i%3=0)continue;printf(%d,i);第25页/共44页第二十五页,共45页。4

16、.54.5循环循环(xnhun)(xnhun)语句的嵌套语句的嵌套如果(rgu)一个循环语句的循环体中又包含有另一个完整的循环语句就叫做嵌套循环。 第26页/共44页第二十六页,共45页。【例4-15】输出(shch)100到200之间的所有素数。#includevoidmain()inti,m;for(m=100;m=200;m+)for(i=2;im-1)printf(%5d,m);第27页/共44页第二十七页,共45页。【例4-16】数学史上有一个著名的百钱买百鸡问题(wnt)。已知公鸡一只5元,母鸡一只3元,小鸡3只1元,用100元钱买100只鸡,问公鸡、母鸡和小鸡各买多少?#incl

17、udevoidmain() inta,b,c;/a、b、c分别表示(biosh)公鸡、母鸡和小鸡的数量for(a=0;a=19;a+)for(b=0;b=33;b+)c=100-a-b;if(5*a+3*b+c/3=100&c%3=0)printf(公鸡:%d,母鸡:%d,小鸡:%dn,a,b,c);第28页/共44页第二十八页,共45页。【例4-17】采用对个位、十位、百位进行(jnxng)穷举的方法输出所有水仙花数。#includevoidmain(void)inti,j,k;for(i=1;i10;i+)for(j=0;j10;j+)for(k=0;k10;k+)if(i*100+j*1

18、0+k)=(i*i*i)+(j*j*j)+(k*k*k)printf(%d%d%d,i,j,k);第29页/共44页第二十九页,共45页。【例4-18】从键盘输入一个(y)数n,求1!+2!+n!。#includevoidmain()inti,j,n;longp,sum=0;/p保存阶乘(jichn),sum保存累加和scanf(%d,&n);/输入nfor(i=1;i=n;i+)/各阶乘(jichn)累加p=1;for(j=1;j=i;j+)/求i!p=p*j;sum=sum+p;printf(计算结果为:%dn,sum);第30页/共44页第三十页,共45页。4.6C语言程序(chngx)

19、的调试方法程序错误总体上有两类:语法错误和逻辑错误。对于语法错误,编译时会产生错误提示信息,可以根据错误提示信息加以修改。如果程序编译、连接都没有错误,但运行结果与预期结果不一致,则需要通过调试来找出程序中存在的逻辑错误,并加以排除。调试是一个(y)程序员必须掌握的基本技巧,对于编写大型程序非常重要。第31页/共44页第三十一页,共45页。调试可以借助“调试工具条(Debug)”来进行,“调试工具条”中的主要命令如图4-7所示。如果VC6.0工具栏上没有显示“调试工具条”命令按钮,则可在菜单栏空白处右击,选中“调试(Debug)”。C语言的调试手段(shudun)主要有:单步执行、运行到光标处

20、和设置断点,这三种调试手段(shudun)在实践中常常结合使用。第32页/共44页第三十二页,共45页。1.单步(dnb)执行(StepOver)单击“单步(dnb)执行(StepOver)”按钮一次,程序执行一步第33页/共44页第三十三页,共45页。查看程序(chngx)中变量的值程序执行的每一步都可以通过以下几种方式来查看程序中变量的值,检查程序的执行情况。把光标移动到某个(mu)变量上,停留一会就可以看到该变量的值。在窗口的左下方,会自动显示变量的值。在窗口右下方的观察窗口中输入变量名,会显示该变量的值。第34页/共44页第三十四页,共45页。2.运行到光标处(RuntoCursor)

21、先在源程序中定位(dngwi)好光标的位置,再单击工具栏上的RuntoCursor按钮,程序将直接运行到光标所在的行,然后暂停,接下来可以通过单步执行等方式继续调试。第35页/共44页第三十五页,共45页。3.插入断点(dundin)(InsertBreakpoint)如果想要程序每次执行到某一行时都自动暂停,以便判断程序是否有错,则可以将该行设置为“断点(dundin)”。第36页/共44页第三十六页,共45页。设置断点(dundin)的方法是:先把光标移动到需要设置断点(dundin)的程序行,然后单击工具栏上的InsertBreakpoint按钮。设置断点(dundin)后,单击工具栏上

22、的Go按钮,运行至断点(dundin)。第37页/共44页第三十七页,共45页。表4-1常用的调试命令(mnglng)及其含义命令名称命令名称命令含义命令含义Step OverStep Over单单步步执执行行。如如果果当当前前语语句句中中有有函函数数调调用用,则则不进入被调用函数,直接将当前语句执行完。不进入被调用函数,直接将当前语句执行完。Stop DebuggingStop Debugging停止调试。停止调试。Run to CursorRun to Cursor运运行行到到光光标标处处,需需要要先先在在源源程程序序中中定定位位好好光光标的位置。标的位置。Insert/Remove In

23、sert/Remove BreakpointBreakpoint插入或删除断点。插入或删除断点。GoGo运运行行程程序序至至断断点点,需需要要先先设设置置好好断断点点。如如果果没有遇到断点,则运行程序至结束。没有遇到断点,则运行程序至结束。Step IntoStep Into单单步步执执行行。如如果果当当前前语语句句中中有有函函数数调调用用,则则单步进入被调用函数。单步进入被调用函数。Step OutStep Out跳出当前函数,返回到函数的调用处。跳出当前函数,返回到函数的调用处。第38页/共44页第三十八页,共45页。4.7案例(nl)分析与实现【例4-19】第3章例3-15介绍了“学生信

24、息管理系统”中菜单选择和系统功能调用的实现,但该程序还需在以下两个方面进行改进:(1)当用户输入的菜单号不正确时,能够重新输入,直到输入正确的菜单号为止(wizh);(2)当用户执行完一次系统功能调用后,不应退出系统,而是可以继续操作,直至选择12号菜单时才退出系统。第39页/共44页第三十九页,共45页。本章(bnzhn)小结本章主要介绍了循环语句的语法格式和设计实例,主要内容总结如下:(1)循环程序设计通常包括(boku)三部分:循环变量赋初值、循环控制条件和循环体。(2)循环语句有三种:for语句、while语句和do-while语句。他们的应用场合如下:循环次数事先明确的,一般使用fo

25、r语句;循环次数不明确的,一般使用while语句或do-while语句。第40页/共44页第四十页,共45页。(3)break语句用来提前结束整个循环,跳出循环体;而continue语句用来提前结束本次循环,进入( jnr)下一次循环。(4)三种循环语句可以互相嵌套,构成多重循环。第41页/共44页第四十一页,共45页。人有了知识,就会具备各种分析能力,明辨是非的能力。所以(suy)我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多

26、书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。第42页/共44页第四十二页,共45页。第43页/共44页第四十三页,共45页。感谢您的欣赏(xnshng)第44页/共44页第四十四页,共45页。内容(nirng)总结本章内容。第2页/共44页。(1) for语句的三个表达式之间必须以分号分隔,如果省略条件表达式,则默认条件为真。编程思路:可以采用穷举法来编程实现。p=p*j。程序错误总体上有两类:语法错误和逻辑错误。C语言的调试手段主要有:单步执行、运行到光标处和设置断点,这三种调试手段在实践中常常(chngchng)结合使用。把光标移动到某个变量上,停留一会就可以看到该变量的值。运行到光标处,需要先在源程序中定位好光标的位置。第43页/共44页第四十五页,共45页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号