《C语言程序设计ppt 单元五循环结构程序设计课件.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计ppt 单元五循环结构程序设计课件.pptx(30页珍藏版)》请在三一办公上搜索。
1、循环结构程序设计,C语言程序设计,高等教育出版社 新形态一体化教材,单元五,导学,【问题1】某大赛中重复要做的事情是什么?,【问题2】满足什么条件大赛可继续执行?,目录,9,8,7,7,7,1号:总分31分,8,7,6,2号:总分28分,评委亮分,计算总分,在某一条件成立的情况下反复做重复性的事情,这就是循环。,某大赛重复的事情有:,如何用程序设计语言来描述大赛问题呢?,int i=1;,设 i 为评委编号,整型,初始值为1,设score存评委分数,sum存总分并设初值为0.0,均为浮点型,float score,sum=0.0;,在 i=4 的条件下反复执行如下操作:,scanf(%f,播报
2、(输入)当前评委亮出的分数score,sum+=score;,累加到总分sum,i+;,评委编号递增1,变量定义,算法描述,减少源代码的存储空间,提高程序质量。,可重复执行某些相同代码的程序段;,将程序员从大量重复编写相同代码的工作中解放出来,提高程序编写效率;,循环的本质,【循环结构的任务】,每次循环要做什么,即“反复执行的语句”,称为“循环体”。,循环从什么时候开始,即“循环变量初值”。,满足什么条件要循环,即“循环控制条件表达式”。,i=1;,i=4,scanf(%f,循环变量初值,循环控制条件表达式,循环体,循环结构三要素,【概括大赛问题】,目录,while(表达式)循环体;,【一般格
3、式】,循环控制条件表达式,由一条或多条语句组成,当“循环体”仅有一条语句时,可省略“”。,表达式真?,循环体,真(非0),假(0),【流程图】,利用while语句计算大赛选手总分。(有10位评委),#include void main()double score,sum=0;int i=1;while(i=10)printf(请第%d位评委亮分:,i);scanf(%lf,循环控制条件,循环体,利用while语句计算1n中的奇数之和及偶数之和。,【提示】,n的值在程序执行时通过键盘输入,各变量初值如何设计?,循环变量增量如何设计?,循环条件如何设计?,do 循环体;while(表达式);,【一
4、般格式】,表达式后必须有;,【流程图】,表达式真?,循环体,真(非0),假(0),利用while语句计算大赛选手总分。(有10位评委),#include void main()double score,sum=0;int i=1;do printf(请第%d位评委亮分:,i);scanf(%lf,利用dowhile语句计算1+1/2+1/3+1/n。,【提示】,n的值在程序执行时通过键盘输入,各变量的数据类型如何设计?,“1”与“1.0”有什么区别?,【一般格式】,【流程图】,for(表达式1;表达式2;表达式3)循环体;,表达式之间用;分隔,表达式2?,循环体,真(非0),表达式1,表达式3
5、,假(0),利用for语句计算大赛选手总分。(有10位评委),#include void main()double score,sum=0;int i;for(i=1;i=10;i+)printf(请第%d位评委亮分:,i);scanf(%lf,利用for语句计算1+1/2+1/3+1/n。,【提示】,n的值在程序执行时通过键盘输入,各变量的数据类型如何设计?,若“int n=2;”,“1/n”的值是多少?“1.0/n”又是多少?,目录,while(表达式1)if(表达式2)break;,在程序执行的过程中,如果“表达式2”为真,则执行break语句,此时也会终止循环。,正常情况下,该循环结构
6、的执行由循环控制条件“表达式1”控制,当“表达式1”为假时,循环结束。,【一般格式】,break;,结束循环,设计一个程序实现:输入若干字符,对输入的英文字母原样输出,其他字符不输出,直到输入回车键结束。,#include void main()char ch;while(1)ch=getchar();if(ch=n)break;else if(ch=a,结束循环,while(表达式1)if(表达式2)continue;,在执行循环体的过程中。如果“表达式2”为真,执行continue语句,即不再执行continue后面的循环体语句,转到“表达式1”进行下一次循环控制条件的判定。,在循环控制条
7、件“表达式1”成立的情况下,则执行循环体。,【一般格式】,continue;,结束本次循环,进行下一次是否执行循环的判定。,设计一个程序实现:输入若干字符,对输入的英文字母原样输出,其他字符不输出,直到输入回车键结束。,#include void main()char ch;while(ch=getchar()!=n)if(ch=a,结束本次循环,进行下一次是否执行循环的判定。,目录,【应用1】自幂数是指一个 n 位整数,它的每个位上的数字的 n 次幂之和等于它本身。当n为4时,自幂数称为玫瑰花数,试编程输出10009999范围内所有的玫瑰花数。(形如14+64+34+44=1634),【分析
8、】,设这个四位整数为n,它的各位数字从低到高分别为a、b、c和d。,a=n%10 b=n/10%10 c=n/100%10 d=n/1000,个位,十位,百位,千位,#include void main()int i,n,a,b,c,d;for(i=1000;i=9999;i+)n=i;a=n%10;b=n/10%10;c=n/100%10;d=n/1000;if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d=n)printf(%6d,n);,163482089474,输出结果,【应用2】百元百鸡问题。我国古代数学家张丘键在算经中出了一道题:鸡翁一,值钱五;鸡母一,值钱三;鸡
9、雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?,【分析】,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组。,5+3+3=100+100,(百钱),(百鸡),x、y、z的取值范围:x的取值范围为120;y的取值范围为133;z的取值范围为399,步长为3。,x、y、z为正整数,且z是3的倍数;由于鸡和钱的总数都是100。,用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。,#include void main()int gongji,muji,xiaoji;for(gongji=1;gongji=20;gongji+)/公鸡可能的数量范围 for(muji=1;muji=33;muji+)/母鸡可能的数量范围 for(xiaoji=3;xiaoji=100;xiaoji=xiaoji+3)/小鸡可能的数量范围 if(xiaoji/3+muji*3+gongji*5=100),输出结果:,公鸡 母鸡 小鸡,4 18 78 8 11 8112 4 84,目录,总结,循环可减少重复代码,提高程序质量,循环的本质,三种循环语句,循环结构控制语句,while语句是先判断、后执行的语句,dowhile是先执行、后判断的语句,for循环适用于循环次数确定的情况,continue;结束本次循环,进行下一次循环,break;结束循环,谢谢!,
链接地址:https://www.31ppt.com/p-2052454.html