循环嵌套.ppt

上传人:wj 文档编号:9558879 上传时间:2023-05-20 格式:PPT 页数:18 大小:243.50KB
下载 相关 举报
循环嵌套.ppt_第1页
第1页 / 共18页
循环嵌套.ppt_第2页
第2页 / 共18页
循环嵌套.ppt_第3页
第3页 / 共18页
循环嵌套.ppt_第4页
第4页 / 共18页
循环嵌套.ppt_第5页
第5页 / 共18页
循环嵌套.ppt_第6页
第6页 / 共18页
循环嵌套.ppt_第7页
第7页 / 共18页
循环嵌套.ppt_第8页
第8页 / 共18页
循环嵌套.ppt_第9页
第9页 / 共18页
循环嵌套.ppt_第10页
第10页 / 共18页
循环嵌套.ppt_第11页
第11页 / 共18页
循环嵌套.ppt_第12页
第12页 / 共18页
循环嵌套.ppt_第13页
第13页 / 共18页
循环嵌套.ppt_第14页
第14页 / 共18页
循环嵌套.ppt_第15页
第15页 / 共18页
循环嵌套.ppt_第16页
第16页 / 共18页
循环嵌套.ppt_第17页
第17页 / 共18页
循环嵌套.ppt_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

循环嵌套.ppt

《循环嵌套.ppt》由会员分享,可在线阅读,更多相关《循环嵌套.ppt(18页珍藏版)》请在冰点文库上搜索。

循环嵌套.ppt

一个循环体内又包含另外一个循环结构,称循环嵌套。

三种循环可互相嵌套,

(1)while()while().,

(2)dodowhile();.while();,(3)while()dowhile();.,(4)for(;)dowhile();while().,内循环不能相互交叉禁止:

1.从外层跳入内层2.跳入同层的另一循环3.向上跳转,5.4循环的嵌套,按以下格式打印九九表:

1*1=1,1*2=2,1*3=3,1*9=92*1=2,2*2=4,2*3=6,2*9=189*1=9,9*2=18,9*3=27,9*9=81,程序分析:

输出第一行:

输出第二行:

inti;for(i=1;i=9;i+)printf(“1*%d=%d,”,i,1*i);,for(j=1;j=9;j+)printf(“2*%d=%d,”,j,1*i);,观察一行,每式的第一项为常数,第二项为变量,观察九行,每式的第一项也是变量,但是,只在换行时改变一次。

设:

i=1,2,39;为第一项变量,设:

j=1,2,39;为第二项变量,修改程序:

main()inti,j;For(i=1;i10;i+)For(j=1;j10;j+)If(j%9=0)Printf(“n”);elseprintf(“%d*%d=%d”,i,j,i*j);,i,j,例1:

例2:

36块砖,36人搬,男搬4,女搬3,两个小孩抬一块,要求一次搬完,问:

需要男、女、小孩各多少人?

分析:

男人(m)可能是18人,女人(w)可能是111人,小孩(c)可能是254人,,用循环语句全部列举所有的可能,再用下列方程进行筛选,符合条件的即为一组解,m+w+c=36

(1)4*m+3*w+c*0.5=36

(2),Main()intm,w,c;for(m=1;m=8;m+)for(w=1;w=11;w+)for(c=2;c=54;c+)if(m+w+c)=(4*m+3*w+c*0.5)printf(“m=%d,w=%d,c=%d);,辅助控制语句break语句功能:

在循环语句和switch语句中,终止并跳出循环体或开关体说明:

break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中,例break举例:

输出圆面积,面积大于100时停止,#definePI3.14159main()intr;floatarea;for(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);,例break举例:

小写字母转换成大写字母,直至输入非字母字符,#includemain()inti,j;charc;while

(1)c=getchar();if(c=a,continue语句功能:

结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中,例求输入的十个整数中正数的个数及其平均值,/*ch5_12.c*/#includemain()inti,num=0,a;floatsum=0;for(i=0;i10;i+)scanf(%d,程序举例,分子:

1,-1,1,-1分母:

1,3,5,7,.,例求Fibonacci数列:

1,1,2,3,5,8,的前40个数,例判断m是否素数,例译密码,例如Hello,world!

译成密码:

Lipps,asvph!

3.4循环型程序设计划,3.4.1穷举和迭代,

(一)穷举意义:

列出问题的全部可能解,每列出一组解,测试一组,将符合测试条件的解保存下来或打印出来。

例3.1036块砖,36人搬,男搬4,女搬3,两个小孩抬一块,要求一次搬完,问:

需要男、女、小孩各多少人?

分析:

男人数men可能是09人,女人数women可能是012人,小孩人数chilen可能是052人,将所有的解用循环语句全部列举出来的同时,再一个一个进行筛选,将符合筛选条件(men+women+children=36&4*men+3*men+children/2.0=36.0)的结果打印出来,程序源代码如(310.c)所示:

注意:

程序中没有列出10*13*19这么多种可能的解法,而只列出了10*13可能的解法,因为men和women的个数确定之后,childen的个数也确定了。

一般的:

采用穷举法时循环语句体中常常用if结构从全部可能的解中筛选出正确的解来。

返回,穷举应用程序举例,main()intmen=0,women,children;while(men8)women=0;while(women=11)children=36-women-men;if(4.0*men+3.0*women+children/2=36,本次计算的结果是以上一次或上几次计算的结果为条件,而每次进行计算的步骤和公式都是一样的。

例:

3.11若今年的人口总数为n亿,今后每年按2%的增长率增加,问十年后总人口数应是多少?

分析:

人口的基数是:

n=12亿。

过一年后的人口总数是:

nn*(1+0.2)。

过二年后的人口总数是:

n=n*(1+0.2)。

过十年后的人口总数还是按n=n*(1+0.2)这个公式来计算。

综上:

计算这个问题就是把n*(1+0.2)反复计算十次,即总是把上一次计算出来的人口总数n的1.02倍作为本次计算的人口总数n。

这与初等数学中计数数列问题的递推方法是基本相同的,只是书写方式不同而已。

源代码见(311.c)例3.12有一个数列为:

,这个数列是有名的Fibnacci数列,问这个数列的第n-项是多少。

分析:

这个数列的特点是:

从第三项始,总是等于前两项之和。

迭代:

从第三项开始:

设前两项为fib1,fib2,本项为fib,则有通式:

fib=fib1+fib2;按循环的特点(每次计算fibr的公式应一样)故对于本题来说,应用c代码写出计算下次的fib时与本次计算fib时的fib1和fib2的变化规律。

fib=fib1+fib2;/*计算本次的fib*/fib1=fib2;/*这两行是在为计算下一项fib作必要的准备*/fib2=fib;,返回,

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2