您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作计划 > c语言教学ppt第9讲
第九讲循环嵌套教学目的与要求:了解三种循环语句的特点掌握循环的嵌套教学内容提要:1.三种循环语句2.循环语句的嵌套教学重点:循环语句的嵌套教学难点:循环语句的嵌套教学进度:P124~P133教学过程:1.三种循环语句的比较(2)do—while语句是后测试终止条件的循环语句,循环体至少执行一次。(3)while和dowhile循环,只在while后面指定循环条件,在循环体中应包含使循环趋于结束的语句(如i++,或i=i+1等)。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。⑴while语句和for语句是属于先测试终止条件的循环语句,故循环体有可能一次也不执行。(4)用while和dowhile循环时,循环变量初始化的操作应在while和dowhile语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。(5)如果循环次数可以在进入循环语句之前确定,使用for语句较好;在循环次数难以确定时使用while和do—while语句较好。例1用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一项的绝对值小于10-6为止。用N\S结构化流程图表示算法(见图1)。图1程序如下:#includemath.hmain(){ints;floatn,t,Pi;t=1;Pi=0;n=1.0;S=1;while((fabs(t))=1e-6){Pi=Pi+t;n=n+2;s=-s;t=s/n;}Pi=Pi*4;printf(Pi=%10.6f\n,Pi);}运行结果为:Pi=3.141594例2有一对兔子,出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假设所有兔子不死,前40个月每个月的兔子总数。图2即:f1=1(n=1)f2=1(n=2)fn=fn-1+fn-2(n≥3)解此题的算法如图2所示。main(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i=20;i++){printf(%12ld%12ld,f1,f2);if(i%2==0)printf(\n);f1=f1+f2;f2=f2+f1;}}运行结果为:1123581321345589144233377610987159725844181676510946177112865746368750251213931964183178115142298320401346269217830935245785702287922746514930352241578173908816963245986102334155在循环体语句中又包含有另一个完整的循环结构的形式,称为循环的嵌套。如果内循环体中又有嵌套的循环语句,则构成多重循环。2、循环语句的嵌套嵌套在循环体内的循环体称为内循环,外面的循环称为外循环。while、do-while、for三种循环都可以互相嵌套。循环语句之间的关系for(...){...for(...){...}...}内循环外循环for(....){...}for(...){...}并列循环嵌套循环交叉循环for(....){...for(...){...}}错误例如,下面几种都是合法的形式:(1)while(){…while(){…}…}(3)for(;;){…for(;;){…}…}(2)do{…do{…}while();…}while();(4)while(){…do{…}while();…}(9)for(;;){…while(){}…}(7)do{…for(;;){…}…}while();(8)for(;;){…do{…}while();…}(6)do{…while(){}…}while();(5)while(){…for(;;){…}…}真真外循环初始条件外循环循环体内循环体外循环条件假内循环条件假外循环循环体内后续语句循环结束二重循环嵌套结构执行流程例3:输出图形:****************编程分析:采用双重循环,一行一行输出。每一行输出步骤:一般3步。1)光标定位3)每输完一行光标换行(\n)2)输出图形。例如本题:共4行,若行号用k表示,则每一行有2*k-1个*号。#includestdio.hvoidmain(){intk1,k2;for(k1=1;k1=4;k1++){putchar(‘\t’);for(k2=1;k2=4-k1;k2++)putchar(‘’);for(k2=1;k2=k1*2-1;k2++)putchar(‘*’);putchar(‘\n’);}}定位(还可以用空格的方法)输出例4、输出下面的数字金字塔(1到9)。112112321.…..12345678987654321#includestdio.hmain(){intk1,k2;for(k1=1;k1=9;k1++){for(k2=1;k2=9-k1;k2++)printf(“%c”,’’);for(k2=1;k2=k1;k2++)printf(“%d”,k2);putchar(‘\n’);}}定位(还可以用空格的方法)输出左边数字for(k2=k1-1;k2=1;k2--)printf(“%d”,k2);输出右边数字例3打印九九表(如图所示)。12345678912436948121651015202561218243036714212835424981624324048566491827364554637281下面用逐步求精的方法分析本例的解法。首先,把上述九九表分为三部分,表头(即1~9九个数字)、隔线、表体。于是,这个程序也可以分为如下三部分:·打印表头;·打印隔线;for(i=1;i<=9;i++)printf(″%4d″,i);for(i=1;i<=36;i++)printf(″%c″,′-′);for(i=1;i<=9;i++){打印第i行}for(j=1,j<=i;j++)打印第j个数printf(″%4d″,i*j);如何“打印第i行”,每行都有i个数字“打印第j个数”即在第i行的第j列上打印一个数,大小为i*j·打印表体;/******打印九九乘法表******/#includestdio.hintmain(void){inti,j;for(i=1;i=9;i++)printf(%4d,i);printf(\n);for(i=1;i=36;i++)printf(%c,'-');printf(\n);for(i=1;i=9;i++){for(j=1;j=i;j++)printf(%4d,i*j);printf(\n);}return0;}•例4百钱买百鸡问题。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?cocks+hens+chicks=1005*cocks+3*hens+chicks/3=100cocks:鸡翁数hens:鸡母数chicks:鸡雏数cocks:0~19中的整数(因为每只鸡翁5钱,因此它不可能超过19只)hens:0~33中的整数chicks:0~100中的整数/******百钱买百鸡问题******/#includestdio.hintmain(void){intcocks,hens,chicks;printf(%8s%8s%8s\n,cocks,hens,chicks);for(cocks=0;cocks=19;cocks++){for(hens=0;hens=33;hens++){chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3.0==100)printf(%8d%8d%8d\n,cocks,hens,chicks);}}return0;}小结三种循环语句各自的特点(什么情况使用那种循环)循环语句的嵌套(格式、执行流程)作业:P1374,5,6
本文标题:c语言教学ppt第9讲
链接地址:https://www.777doc.com/doc-4813836 .html