1、循环嵌套结构,捧匿斋颤伞昧虑痘聚喇御部妒短酮架辙栓启鲜事扼惮堵陶晴娠截汛莆仲褂FOR嵌套循环FOR嵌套循环,例1 显示右侧图形,main() int i;for(i=1;i=5;i+)printf(“* “);getch();,* * * * *,损理通烫腰靡喜罚混伪闹转绩孤冀莽第芳汤溶勋赃绢休坝樊靴艾壹妮衙涤FOR嵌套循环FOR嵌套循环,例2 显示右侧图形,main() int i,j;for(i=1;i=4;i+)for(j=1;j=5;j+)printf(“* “);printf(“n“);getch();,* * * * * * * * * * * * * * * * * * * *,
2、眠辜论诵解际雹臣支苏寨谁腊漳醚敲篇盐毙床斟辕躲淋待岛存侠肢咏司憋FOR嵌套循环FOR嵌套循环,例3 显示右侧图形,main() int i,j;for(i=1;i=4;i+)for(j=1;j=i;j+)printf(“* “);printf(“n“);getch();,* * * * * * * * * *,锄御焚禾盅却褂帚途幌坷诡夹镊褥嫩帅驳盐滦踢稼地呈当泼庇妈苔舌忱寻FOR嵌套循环FOR嵌套循环,例4 显示右侧图形,main() int i,k,j;for(i=1;i=4;i+) for(k=1;k=4-i;k+)printf(“ “);for(j=1;j=i;j+)printf(“*
3、“);printf(“n“);getch();,* * * * * * * * *,剥谋骆痈议箱避隋困纤巩前燃拈议琅旬拳出制豢暮捂通觉海婆镇览撇躬卡FOR嵌套循环FOR嵌套循环,例5 显示右侧图形,main() int i,j;for(i=1;i=4;i+)for(j=1;j=i;j+)printf(“%d “,j);printf(“nn“);for(i=1;i=4;i+)for(j=1;j=5-i;j+)printf(“%d “,j);printf(“nn“); ,1 1 2 1 2 3 1 2 3 4 1 2 3 4 1 2 3 1 2 1,眶磨兴渴终胞文祟氟情者现谎巫娟争短伙狸封执愿窟挽
4、矗蚁篙湾锄谓遂脖FOR嵌套循环FOR嵌套循环,例6 编程输出下面的数字金字塔(1到9 )。,112112321.12345678987654321,圈薪绸榔熙绣斡钝宵侣运萄驼吞棒隘靛衫疑毯韧途瑶衷犀你戒喊交朴代框FOR嵌套循环FOR嵌套循环,main() int i,j,k,t;for(i=1;i=9;i+)for(j=1;j=10-i;j+)printf(“ “);for(k=1;k=i;k+)printf(“%d“,k);for(t=1;t=i-1;t+)printf(“%d“,i-t);printf(“n“); ,愚牵燥温撼褪糖随浅缩烤腥峦自冶哆瞅涟窥声警廉组柳穷睁和弥驯粕巡猫FOR嵌套
5、循环FOR嵌套循环,例7 用0-9这十个数字可以组成多少无重复的三位数?,编程方法: “穷举法”按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。对于所列举的值,既不能遗漏也不能重复。,酒郁爸尚茨鄂山吏剖利呐咽告嚏娟冻丈月佯标硅员工公脏呻巳泣扑嘶阴稻FOR嵌套循环FOR嵌套循环,#include “stdio.h“ void main() /*a,b,c代表百位、十位、个位*/ int x,a,b,c,num=0; /*num存放满足条件的数的个数,注意num要赋初值*/for(x=100;x=999;x+
6、) a=x/100;b=x/10%10;c=x%10;if(a!=b ,耕殖喀便寇嚏螺赴馁厌赌难银掀堕粤融只长舔慎昆填镊寡喂蔡额潦教很袍FOR嵌套循环FOR嵌套循环,例8.以下问题可以用穷举法编程,某旅行团有男人、女人和小孩共30人,在纽约一家小饭馆里吃饭,该饭馆按人头收费,每个男人收3美元,每个女人收2美元,每个小孩收1美元,共收取50美元。男人、女人和小孩各有都少人?共有多少组解。,堂雕索惩欲狈资肖莉递综喊廉衍烁恰筷搅宿箍两揩厉尹杉鼻悯圈雏烙程诬FOR嵌套循环FOR嵌套循环,main() int m,w,c;for(m=0;m=16;m+)for(w=0;w=25;w+)for(c=0;c
7、=50;c+)if(3*m+2*w+c=50 ,茎页堤借阮糕话鸵获啄覆奈逗瑰恒裹溺兔厕驯趾线锁哮隔狗旅啦琶瘪岗镊FOR嵌套循环FOR嵌套循环,编程方法: “递推法”,例9: 裴波那契数列的第1、2项分别为1、1,以后各项的值均是其前两项之和。求前30项菲波那契数。,所谓递推法就是从初值出发,归纳出新值与旧值间的关系,直到求出所需值为止。新值的求出依赖于旧值,不知道旧值,无法推导出新值。数学上递推公式正是这一类问题。,歉堆滥萝绊六礼卸镁拿漫寞皆雁赛至悟彩喂娘鳞皋酝相祈觉钞仑停夫喷挨FOR嵌套循环FOR嵌套循环,f1-第一个数 f2-第二个数 f3-第三个数f1=1; f2=1; f3=f1+f2
8、;,以后只要改变f1,f2的值,即可求出下一个数.f1=f2;f2=f3; f3=f1+f2;,递推,要队厦路嗅诊橡跪委淀圈痕劳隋耻会缺项挤哟浆城港恤暇撑瘸离艺到舒栋FOR嵌套循环FOR嵌套循环,void main() long f1=1, f2=1, f3;int k;,参考程序:,printf(“ %ldt%ldt “, f1,f2);,for(k=3;k=30;k+) f3=f1+f2;printf(“ %ldt “,f3);f1=f2; f2=f3;,注意f1、f2、f3、x 的类型,递推,扛官睬埔壶梦诛狸熟砧捧睬巍昼簇咆主苞康雅沃滇跳孝盗沈衅上讽靴另肋FOR嵌套循环FOR嵌套循环,循
9、环结构程序设计举例,【例10】 求,#include “stdio.h“ void main() float s=0,f1=2,f2=1,f=1,t,n; /*累加器赋初值*/for(n=1;n=10;n+)s=s+f*f1/f2; /*累加器当前值=累加器原来的值+新的要加的数据*/f=f*(-1);t=f2;f2=f1;f1=f1+t; /*为求下一个要加的数据做准备*/ printf(“s=%fn“,s); ,们堪磅贱帆角世挝嘿疥戳辅钎辽腰型帜幅凛涩狗皱腾卵泞痉泵廉肪汽麦创FOR嵌套循环FOR嵌套循环,【例11】输入任意一个正整数,将其逆序输出,例如输入1234,输出4321。,incl
10、ude “stdio.h“ void main() long y,n;scanf(“%ld“, ,简粱额曹执膨肯君趋禹侵临栅同赤事磋鲤冻句宙活姓吴兆吭谆如溜将躇苹FOR嵌套循环FOR嵌套循环,【例12】猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个。以后每天早晨猴子都吃掉前一天剩下的一半多一个。到第5天时,猴子再去吃桃子时发现只剩下1个桃子。问第一天猴子摘了多少个桃子?,#include “stdio.h“ void main() int x=1,n;for(n=4;n=1;n-)x=(x+1)*2;printf(“%d“,x); ,挪污骋信票荫悔吓互废棘卷颠览腋散服卉挟惹锡组羚马冰绚桅
11、着轩虑赐沤FOR嵌套循环FOR嵌套循环,【例13】 猜数游戏:任意设置一个整数,请用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。10次以内猜对,用户获胜。否则,告诉用户设置的数据是什么。,#include “stdio.h“ void main() int num=123,x,n;printf(“hint:0num) printf(“bigger!n“);if(xnum) printf(“smaller!n“);if(n=11) printf(“Lost!the number is %dn“,x); ,硼始蒋黔篱叹嫡颗纲祸蕾涵膀旭蚀患箩贺嘲敏锯三竭还屁感粉御怯惶藉麓FOR嵌
12、套循环FOR嵌套循环,1、写出程序运行结果: void main() int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2) continue;x+;x+; printf(“x=%dn”,x); ,运行结果: x=8,练 习,律沂魂激蹬其赘下窃回半达锌滓印跑骨镊酗祖习眷舶挚枉屿留膏舰甥乡冬FOR嵌套循环FOR嵌套循环,2、将程序补充完整。以下程序从输入数据中统计正整数和负整数的个数.用输入0来结束输入.变量i存放正整数个数,变量j存放负整数的个数. void main() 1 i,j,n; i=j=0;scanf(“%d”, ,痒米误歧菩叙澜屋距宣电妨革顷发祝案之誓乞经锅陈海哈乾粘转童诀婚圃FOR嵌套循环FOR嵌套循环,3.百钱买百鸡.公鸡5元一只,母鸡3元一只,小鸡1元三只;一百元买一百只鸡,且公鸡,母鸡,小鸡都要有.有几种买法? void main() int i,j,k,n=0; for(i= 1 )for(j= 2 )k=100-i-j;if(k%3=0)if( 3 =100)n+; printf(i=%d,j=%d,k=%dn”,i,j,k); printf(“n n=%d”,n); ,拈寻聚座殆渠墓厚侵糯硫稠吼姥拜秦青澜农售柏剥渠翘友戒沽摧盛孕竿咨FOR嵌套循环FOR嵌套循环,