《第五讲循环结构程序设计优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第五讲循环结构程序设计优秀PPT.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五讲循环结构程第五讲循环结构程序设计序设计第一页,本课件共有31页1、输出、输出1个个#。2、在一行中输出、在一行中输出30个个#。如下问题编程怎样解决?如下问题编程怎样解决?4、输出、输出30行行#,每行,每行30个。个。3、输出、输出30行行#,每行,每行1个。个。第二页,本课件共有31页什么是循环什么是循环l生活中的循环生活中的循环打印打印50份试卷份试卷10000米赛跑米赛跑旋转的车轮旋转的车轮循环结构的特点循环结构的特点循环结构循环结构循环条件循环条件循环操作循环操作锲而不舍地学习锲而不舍地学习第三页,本课件共有31页一、while语句while语句的一般形式为:语句的一般形式为:
2、while(表达式表达式)语句语句其中表达式是循环条件其中表达式是循环条件;语句为循环体语句为循环体,当需要当需要执行多条语句时用复合语句。执行多条语句时用复合语句。lwhile语句的语义是:语句的语义是:计算表达式的值,当值为真计算表达式的值,当值为真(非非0)时,时,执行循执行循环体语句。环体语句。在在C语语言中如何言中如何实现实现循循环环第四页,本课件共有31页 while(表达式表达式)语句流程图语句流程图第五页,本课件共有31页程序实战程序实战l输出输出1到到10十个整数,每个一行。十个整数,每个一行。i=1;while(i=10)printf(“%dn”,i);i+;第六页,本课件
3、共有31页#includevoidmain()inti=1,sum=0;while(i=100)sum=sum+i;i+;printf(%dn,sum);分析分析:基本操作基本操作:加法加法 变化变化:加数每次加数每次数值都增加数值都增加1例例1求求第七页,本课件共有31页第八页,本课件共有31页例1 求#includemain()inti,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%dn,sum);注意注意:(1)循环体如果包含一个以上)循环体如果包含一个以上的语句,应该用花括弧括起来,的语句,应该用花括弧括起来,以复合语句形式出现。以复合语句形式出
4、现。(2)在循环体中应有)在循环体中应有使循环趋使循环趋向于结束的语句向于结束的语句。如,。如,i+;请思考请思考:1、循环结束后、循环结束后,i的值是多少的值是多少?2、循环体中两条语句是否可以、循环体中两条语句是否可以交换次序交换次序第九页,本课件共有31页二、二、do-while语句语句do-while语句的一般形式为语句的一般形式为:do语句语句while(表达式表达式);l这个循环与这个循环与while循环的不同在于循环的不同在于:它它先先执执行行循循环环中中的的语语句句,然然后后再再判判断断表表达达式式是是否否为为真真,如如果果为为真真则则继继续续循循环环;如如果果为为假假,则则终
5、终止止循循环环。因因此此,do-while循循环环至至少少要要执行一次循环体执行一次循环体。第十页,本课件共有31页 do语句语句while(表达式表达式);第十一页,本课件共有31页#includemain()inti=1,sum=0;dosum=sum+i;i+;while(i=100);printf(%dn,sum);第十二页,本课件共有31页第十三页,本课件共有31页inti=1,sum=0;dosum+=i;i+;while(i=100);printf(%d,sum);inti=1,sum=0;while(i=100)sum+=i;i+;printf(%d,sum);do-while
6、与与while的对比的对比第十四页,本课件共有31页intsum=0,i;scanf(“%d”,&i);while(i=10)sum=sum+i;i+;intsum=0,i;scanf(“%d”,&i);dosum=sum+i;i+;while(i=10);输入一个自然数输入一个自然数,求从该自然数到求从该自然数到10的和的和。第十五页,本课件共有31页三、三、for语句语句#includemain()inti,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(%dn,sum);inti,sum=0;i=1;while(i=100)sum=sum+i;i+;for
7、(循环变量赋初值;循环条件;循环变量改变循环变量赋初值;循环条件;循环变量改变)循环体循环体第十六页,本课件共有31页for循环中语句的一般形式:循环中语句的一般形式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句;就是如下的while循环形式:表达式表达式1;while(表达式(表达式2)语句;语句;表达式表达式3;第十七页,本课件共有31页for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句它的执行过程如下:1.1.先求解表达式先求解表达式1 1。2.2.求求解解表表达达式式2 2,若若其其值值为为真真(非非0 0),则则执执行行forfor语语句句中
8、中指指定定的的语语句句,然然后后执执行行下下面面第第3 3步步;若若其其值值为为假假(0 0),则则结结束束循循环环,转转到到第第5 5步步。3.3.求解表达式求解表达式3 3。4.4.转回上面第转回上面第2 2步继续执行。步继续执行。5.5.循环结束,执行循环结束,执行forfor语句下面的一个语句。语句下面的一个语句。第十八页,本课件共有31页第十九页,本课件共有31页注意注意:1)for循循环环中中的的“表表达达式式1(循循环环变变量量赋赋初初值值)”、“表表达达式式2(循循环环条条件件)”和和“表表达达式式3(循循环环变变量量增增量量)”都是选择项都是选择项,即即可以缺省可以缺省,但但
9、;不能缺省;不能缺省。2)省省略略了了“表表达达式式1(循循环环变变量量赋赋初初值值)”,表表示示不不对循环控制变量赋初值。对循环控制变量赋初值。3)省省略略了了“表表达达式式2(循循环环条条件件)”,且且不不做做其其它它处处理理时便成为时便成为死循环死循环。第二十页,本课件共有31页4)省略了)省略了“表达式表达式3(循环变量增量循环变量增量)”,则不对则不对循环控制变量进行操作循环控制变量进行操作,这时可在语句体中这时可在语句体中加入修改循环控制变量的语句。加入修改循环控制变量的语句。例如:for(i=1;i=100;)sum=sum+i;i+;第二十一页,本课件共有31页程程序序举举例例
10、【例例5.1】设有一阶梯,每步跨设有一阶梯,每步跨2阶,最后余阶,最后余1阶;每步阶;每步跨跨3阶,最后余阶,最后余2阶;每步跨阶;每步跨5阶,最后余阶,最后余4阶;每步阶;每步跨跨6阶,最后余阶,最后余5阶;每步跨阶;每步跨7阶,正好到阶梯顶。问阶,正好到阶梯顶。问最少共有多少台阶?最少共有多少台阶?#includemain()intstep;for(step=7;step1000;step+)if(step%2=1&step%3=2&step%5=4&step%6=5&step%7=0)break;printf(%dn,step);第二十二页,本课件共有31页如果每对大兔子每月能生产一对小
11、兔子(一雌一雄),如果每对大兔子每月能生产一对小兔子(一雌一雄),而每对小兔子两个月就长大成为大兔子,即具备了繁而每对小兔子两个月就长大成为大兔子,即具备了繁殖能力那么由一对小兔子开始,一年后可繁殖多少殖能力那么由一对小兔子开始,一年后可繁殖多少对兔子对兔子一月,只有一对小兔子。一月,只有一对小兔子。二月,仍是这对兔子,但长成了大兔子二月,仍是这对兔子,但长成了大兔子三月,大兔子生出一对小兔子,此时共有两对兔子三月,大兔子生出一对小兔子,此时共有两对兔子四月,小兔子长成大兔子,大兔子又生出一对小兔子,四月,小兔子长成大兔子,大兔子又生出一对小兔子,此时共有三对兔子此时共有三对兔子。五月,两对大
12、兔子生出两对小兔子,小兔子长成大兔五月,两对大兔子生出两对小兔子,小兔子长成大兔子,此时共有五对兔子子,此时共有五对兔子第二十三页,本课件共有31页【例例5.2】求求Fibonacci数列:数列:1,1,2,3,5,8,的前的前40个数个数1534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155第二
13、十四页,本课件共有31页#includemain()intf1,f2,f3;inti;f1=1;f2=1;printf(%12d%12d,f1,f2);for(i=3;i=40;i+)f3=f1+f2;f1=f2;f2=f3;printf(%12d,f3);if(i%4=0)printf(n);第二十五页,本课件共有31页#includemain()intf1,f2;inti;f1=1;f2=1;for(i=1;i=20;i+)printf(%12d%12d,f1,f2);if(i%4=0)printf(n);f1=f1+f2;f2=f2+f1;f1=1,f2=1fori=1to20输出输出f
14、1,f2f1=f1+f2f2=f2+f1第二十六页,本课件共有31页【例例5.3】判断判断m是否素数是否素数#include#includemain()intm,i,k;scanf(%d,&m);k=sqrt(m);for(i=2;i=k+1)printf(%disaprimenumbern,m);elseprintf(%disnotaprimenumbern,m);读入读入mk=mi=2当当i km被被i整除整除真真假假结束循环结束循环i=i+1i k+1真真假假输出输出:m是素数是素数输出输出:m不不是素数是素数第二十七页,本课件共有31页break语句lbreak语句通常用在循环语句和开
15、关语句中。语句通常用在循环语句和开关语句中。l当当break用于开关语句用于开关语句switch中时中时,可使程序跳可使程序跳出出switch而执行而执行switch以后的语句;以后的语句;l当当break语语句句用用于于do-while、for、while循循环环语语句句中中时时,可可使使程程序序终终止止循循环环而而执执行行循循环环后后面面的的语语句句,通通常常break语语句句总总是是与与if语语句句联联在在一一起起。即满足条件时便跳出循环。即满足条件时便跳出循环。第二十八页,本课件共有31页上机题目上机题目l韩韩信信点点兵兵。相相传传韩韩信信才才智智过过人人,不不用用数数就就知知道道自自
16、己己有有多多少少兵兵:他他先先后后让让兵兵三三人人一一排排、五五人人一一排排、七七人人一一排排交交换换队队形形,他他掠掠一一眼眼队队伍伍的的排排尾尾就就 知知 道道 总总 人人 数数 了了。输输 入入 三三 个个 非非 负负 整整 数数a,b,c(a3,b5,c7),输输出出总总人人数数的的最最小小值值(或或报报告告无无解解)。已已知知总总人人数数不不小小于于10,不不超过超过100。样例输入样例输入216输出输出41样例输入样例输入213输出输出NoAnswer!第二十九页,本课件共有31页上机题目上机题目l打印所有的打印所有的“水仙花数水仙花数”,所谓,所谓“水仙花数水仙花数”是是指一个三
17、位数,其各位数字立方和等于该数本身。指一个三位数,其各位数字立方和等于该数本身。例如例如153是是“水仙花数水仙花数”,因为,因为153=13+33+53。提示:首先确定水仙花数提示:首先确定水仙花数n可能存在的范围,因为可能存在的范围,因为n是是一个三位数,所以范围确定为一个三位数,所以范围确定为n从从100变化到变化到999,分离出分离出n的个位的个位i、十位、十位j、百位、百位k后,只要判断后,只要判断n是是否等于否等于i*i*i+j*j*j+k*k*k即可知即可知n是否是水仙花是否是水仙花数。分离各位数字的方法可参考例数。分离各位数字的方法可参考例4.2。第三十页,本课件共有31页上机题目上机题目l由程序随机给出由程序随机给出1-100之间的整数,用户来猜,之间的整数,用户来猜,当用户输入的数字大于所猜数时,请提示当用户输入的数字大于所猜数时,请提示“您您猜大了!请继续猜猜大了!请继续猜”;当用户输入的数字小于;当用户输入的数字小于所猜数时,请提示所猜数时,请提示“您猜小了!请继续猜您猜小了!请继续猜”;当用户输入的数字等于所猜数时,请输出当用户输入的数字等于所猜数时,请输出“恭恭喜您猜对了!喜您猜对了!”。l#includel#includesrand(unsigned)time(NULL);data=rand()%5+1;第三十一页,本课件共有31页
限制150内