《二级C语言程序设计》第5章循环结构程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章循环结构程序设计当型循环:直到型循环:假真PA假真PA两个要素:(1)决定是否执行语句组的条件称为“循环控制条件”。(2)重复执行的语句组称为“循环体”。第5章循环结构程序设计5.1循环语句5.1.1用if…goto语句实现循环1.goto语句goto语句为无条件转向语句。其一般形式为:goto语句标号;功能:在程序执行过程中,如果遇到goto语句,则程序流程无条件地转向语句标号后的语句继续执行。例:…gotolabel;…label:x=a+b;…第5章循环结构程序设计5.1循环语句5.1.1用if…goto语句实现循环1.goto语句说明:(1)语句标号是一个用户标识符,在程序中一个语句的前面,表示转向的地址。(2)语句标号仅仅对goto语句有效,对其他语句不影响。同一个程序中,不允许有同名的语句标号。(3)由于滥用goto语句将导致程序流程无规律、可读性差,不符合结构化程序设计原则,因此结构化程序设计方法限制使用goto语句。(4)goto语句的主要作用是:与条件语句if配合使用,用来实现条件转移、构成循环、跳出循环体等功能。第5章循环结构程序设计5.1循环语句5.1.1用if…goto语句实现循环1.goto语句2.if…goto语句构成循环#includestdio.hmain(){charc;loop:c=getchar();if(c=='\n')gotoend;putchar(c);gotoloop;end:printf(Theend\n);}例:例5.1求s=1+2+3+…+100的值。流程图:s=0i=1s=s+ii=i+1i≤100真假程序:#includestdio.hmain(){inti,s;s=0;i=1;loop:if(i=100){s=s+i;i=i+1;gotoloop;}printf(s=%d,s);}第5章循环结构程序设计5.1循环语句5.1.2while语句while语句用来实现“当型”循环结构。while语句的一般形式如下:while(表达式)语句/*循环体*/功能:当表达式的值为真时,执行while语句中的循环体。假真表达式语句第5章循环结构程序设计5.1循环语句5.1.2while语句while语句用来实现“当型”循环结构。while语句的一般形式如下:while(表达式)语句/*循环体*/功能:当表达式的值为真时,执行while语句中的循环体。假真表达式语句例5.2求s=1+2+3+…+100的值。流程图:s=0i=1s=s+ii=i+1i≤100真假程序:#includestdio.hmain(){inti,s;s=0;i=1;loop:if(i=100){s=s+i;i=i+1;gotoloop;}printf(s=%d,s);}#includestdio.hmain(){inti,s;s=0;i=1;while(i=100){s=s+i;i=i+1;}printf(s=%d,s);}第5章循环结构程序设计5.1循环语句5.1.2while语句说明:(1)循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句的形式出现,否则while语句的范围只到while后面第一个分号处,即循环体是一个语句。(2)在循环体中应有使循环趋向于结束的语句,即设置修改循环条件的语句,否则,循环体要么一次也不执行,要么是死循环。(3)while语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(值为0),则循环体一次也不执行,转入while语句的下一语句去执行。第5章循环结构程序设计5.1循环语句5.1.3do…while语句do…while语句用来实现“直到型”循环结构。do…while语句的一般形式如下:do语句/*循环体*/while(表达式);功能:先执行一次循环体,然后判断表达式的值,当表达式的值为真时,返回重新执行循环体,如此反复,直到表达式的值等于假为止,此时循环结束。假真语句表达式例5.3求s=1+2+3+…+100的值。#includestdio.hmain(){inti,s;s=0;i=1;loop:if(i=100){s=s+i;i=i+1;gotoloop;}printf(s=%d,s);}#includestdio.hmain(){inti,s;s=0;i=1;while(i=100){s=s+i;i=i+1;}printf(s=%d,s);}#includestdio.hmain(){inti,s;s=0;i=1;do{s=s+i;i=i+1;}while(i=100);printf(s=%d,s);}第5章循环结构程序设计5.1循环语句5.1.3do…while语句说明:(1)在do…while语句的循环体中也应有使循环趋向于结束的语句,即设置修改循环条件的语句,否则,循环体要么只执行一次,要么是死循环。(2)如果do…while语句的循环体部分是多个语句组成的,也必须用左右花括号括起来,使其形成复合语句。(3)用while语句和用do…while语句处理同一问题时,若二者的循环体部分一样,其结果也一样。但在while后面的表达式一开始就为假时,两种循环的结果是不同的,do…while语句中循环体至少要执行一次。第5章循环结构程序设计5.1循环语句5.1.4for语句for语句主要用在循环次数确定的情况下。for语句的一般形式如下:for(表达式1;表达式2;表达式3)语句/*循环体*/功能:(1)先计算表达式1的值。(2)计算表达式2的值,若结果为真,则执行后面的循环体;若结果为假,则结束循环。(3)若结果为真,则执行后面的循环体后,进行表达式3的计算,完成一次循环。(4)再次计算表达式2的值,开始再次循环,直到计算表达式2的值为假,结束循环。表达式1假真表达式2语句表达式3例5.3求s=1+2+3+…+100的值。#includestdio.hmain(){inti,s;s=0;i=1;while(i=100){s=s+i;i=i+1;}printf(s=%d,s);}#includestdio.hmain(){inti,s;s=0;i=1;do{s=s+i;i=i+1;}while(i=100);printf(s=%d,s);}#includestdio.hmain(){inti,s;s=0;for(i=1;i=100;i=i+1)s=s+i;printf(s=%d,s);}第5章循环结构程序设计5.1循环语句5.1.4for语句(1)for语句的条件测试在前,所以循环体可能一次也不执行。(2)在for语句中,使循环趋向于结束的语句,即设置修改循环条件的语句,一般是表达式3语句,也可以放在循环体中。(3)如果for语句的循环体部分是多个语句组成的,也必须用左右花括号括起来,使其形成复合语句。说明:第5章循环结构程序设计5.1循环语句5.1.4for语句说明:(4)for语句中的表达式1和表达式3都可以是一个简单的表达式,也可以是逗号连接的多个表达式,此时的逗号作为运算符使用。例:for(s=0,i=1;i=100;i++)s=s+i;for(i=1,j=100;i=j;i++,j--)k=i+j;第5章循环结构程序设计5.1循环语句5.1.4for语句说明:(5)for语句中的表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,如果其值为非0,即为真,就执行循环体。(6)for语句中的三个表达式都可以省略,但用于三个表达式之间的分隔符“;”不能省略。第5章循环结构程序设计5.1循环语句5.1.4for语句说明:1)省略表达式1时,应在for语句之前给循环变量赋初值,例如:i=1;for(;i=100;i++)s=s+i;执行时,跳过“计算表达式1”这一步,其他不变。2)省略表达式2时,认为表达式2始终为真,循环无终止地进行下去。例如:for(i=1;;i++)s=s+i;3)省略表达式3时,无修改循环条件的语句,此时应在循环体中增加修改循环条件的语句,保证循环正常结束。例如:for(i=1;i=100;){s=s+i;i++;}4)三个表达式都省略时,其形式如下:for(;;)此时,for语句不设初值,不判断条件(认为表达式2的值为真),不修改循环条件,循环无终止地进行下去。第5章循环结构程序设计5.2多重循环在循环体语句中又包含有另一个完整的循环结构的形式,称为循环的嵌套(又称双重循环)。如果内循环体中又有嵌套的循环语句,则构成多重循环。嵌套在循环体内的循环体称为内循环,外面的循环称为外循环。while、do…while、for三种循环都可以互相嵌套。第5章循环结构程序设计5.2多重循环双重循环的执行过程用流程图表示为:外循环表达式1循环结束真真内循环表达式1内循环体外循环表达式2假内循环表达式2假内循环表达式3外循环表达式3例5.5编写一程序,输出如下九九乘法表。1×1=11×2=2…1×9=92×1=22×2=4…2×9=18…9×1=99×2=18…9×9=81开始结束输出a×b=ca=1假真a=9b=b+1b=1真b=9a=a+1假#includestdio.hmain(){inta,b,c;for(a=1;a=9;a++){for(b=1;b=9;b++){c=a*b;printf(%d×%d=%d,a,b,c);}printf(\n);}}第5章循环结构程序设计5.3break和continue语句5.3.1break语句格式:break;功能:该语句可以使程序运行时中途退出一个循环体。假真表达式1假表达式2真break第5章循环结构程序设计5.3break和continue语句5.3.1break语句说明:(1)break语句不能用于循环语句和开关语句之外的任何其他语句。(2)在多重循环的情况下,使用break语句时,仅仅退出包含break语句的那层循环体,即break语句不能使程序控制退出一层以上的循环。(3)在几种循环中,主要是在循环次数不能预先确定的情况下使用break语句,在循环体中增加一个分支结构。当某个条件成立时,由break语句退出循环体,从而结束循环过程。例5.6判断一个数m是否是素数。开始输出“不是素数”真i=m-1i=i+1i=2m%i==0假输入mi=m-1真假真假结束输出“是素数”#includestdio.hmain(){intm,i;scanf(%d,&m);for(i=2;i=m-1;i++)if(m%i==0)break;if(i=m-1)printf(%d不是素数,m);elseprintf(%d是素数,m);}第5章循环结构程序设计5.3break和continue语句5.3.2continue语句格式:continue;功能:结束本次循环,即跳过循环体中下面尚未执行的语句,继续进行下一次循环。说明:continue语句只结束本次循环,而不是终止整个循环的执行。假真表达式1真表达式2假continue例5.7输出100~200之间的不能被3整除的数。开始真m=200m=100m%3==0假假结束真m=m+1输出m#includestdio.hmain(){intm;for(m=100;m=200;m++){if(m%3==0)continue;printf(%d,m);}}第5章循环结构程序设计5.4应用举例例5.8求Fibonacci数列的前40个数。已知:f1=1,f2=1。开始真i=20f1=1;f2=1;假结束i=i+1输出f1,f2f1=f1+f2;f2=f1+f2#includestdio.hmain(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i=20;i++){printf(%8ld%8ld,f1,f2);if(i%4==0)printf(\n);f1=f1+f2;f2=f2+f1;

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功