第5章___循环结构.doc_第1页
第5章___循环结构.doc_第2页
第5章___循环结构.doc_第3页
第5章___循环结构.doc_第4页
第5章___循环结构.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章 循环结构本章要点:1for循环结构2while和do.while循环结构4continue和break语句5循环的嵌套重要考点提示:1对循环条件的理解2for循环嵌套3do.while的操作4排序问题5.1 概述循环的概念:重复执行、反复相同的操作5.2 while语句while语句的一般形式如下:while(表达式)循环体说明:while是C语言的关键字。紧跟其后的表达式可以是C语言中任意合法的表达式,该表达式是循环条件,由它来控制循环体是否执行。循环体可以是一条可执行语句,当多项操作需要多次重复做时,可以使用复合语句。执行过程:(1) 计算紧跟while后括号中的表达式的值,当表达式的值为非0时,则接着执行while语句中的内嵌语句;当整个表达式值为0时,则跳过该while语句,执行该while结构后的其他语句。(2) 执行循环体内嵌语句。(3) 返回去执行步骤(1),直到条件不满足,即表达式的值为0时,退出循环,while结构结束。特点:先对表达式进行条件判断,后执行语句。提示:while语句构成的循环结构不同于由if语句构成的选择结构。当if后面的条件表达式的值为非零时,其if子句只执行一次;而当while后面的条件表达式的值为非零时,其后的循环体中的语句将被重复执行。而且在设计循环时,通常应在循环体内改变与条件表达式中有关变量的值,使条件表达式的值最终变成零,以便能及时退出循环。5.3 do.while语句do.while循环的一般形式如下:do循环体语句while(表达式);说明:(1) do是C语言的关键字,必须和while联合使用,不能独立出现。(2) do.while循环由do开始,用while结束。在语法上,在do和while之间只能是一条语句,如需要执行多条语句时,可以用大括号括起来,构成复合语句。必须注意的是:while(表达式)后的分号不可丢,它用以表示do.while语句的结束。(3) while后面的圆括号中的表达式,可以是C语言中任意合法的表达式,由它控制循环是否执行,且圆括号不可丢。执行过程:先执行一次指定的循环体语句,执行完后,判别while后面的表达式的值,当表达式的值为非零时,程序流程返回,去重新执行循环体语句。如此反复,直到表达式的值等于零为止,此时循环结束。特点:先执行循环体一次,然后判断循环条件是否成立。提示:do.while构成的循环与while循环十分相似,它们之间的重要区别是:while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do.while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。5.4 for语句for语句的一般形式为:for(表达式样;表达式2;表达式3)语句说明:for是C语言中的关键字,其后的圆括号中通常是3个表达式,这3个表达式可以是C语言中任意合法表达式,它们通常用于for循环的控制。各个表达式之间用“;”隔开,且圆括号不可省略。按照语法规则,循环体只能是一条语句,如需要完成多项操作,可以用大括号括起来构成复合语句。执行过程:(1) 先求表达式1的值。(2) 求表达式2的值,若其值为真(非0),则执行for语句中指定的内嵌语句后执行下面步骤(3),若其值为假(0),则退出循环,执行for以下的其他语句。(3) 求解表达式3的值。(4) 重复执行步骤(2)。5.5循环的嵌套在某一个循环体内部又包含了另一个完整的循环结构,称为循环的嵌套。5.6 几种循环的比较while和do.while循环,只在while后面指定循环条件,循环体内应包含使循环趋于结束的语句,for中使循环趋于结束的操作可以包含在“表达式3”中。由while完成的循环,用for循环都能完成。在for语句(表达式1)中可以实现循环变量的初始化,而while和do.while的循环变量初始化应在while和do.while语句之前完成。5.7 break语句和continue语句在break后面加上分号就可以构成break语句。break语句还可以用于从循环体内跳出,即提前结束循环。说明:(1) break语句只能出现在循环体内及switch语句内,不能用于其他语句。(2) 当break出一在循环体中的switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环,当然也不再去进行条件判断。5.7continue语句一般形式为:continue;其作用是结束本次循环,即路过循环体中下面尚未执行的语句,而转去重新判定循环条件是否成立,从而确定下一次循环是否继续执行。提示:与break语句不同,执行continue语句并没有使整个循环终止。在while和do.while循环中,continue语句使得流程直接跳到循环控制的条件判断部分,然后决定循环是否继续执行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去求解for语句中的“表达式3”的值,然后再次对“表达式2”的条件进行判断,最后根据“表达式2”的值来决定for循环是否继续执行。continue不管是作为何种语句中的语句成分,都按上述功能执行。continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。一选择题:1设i和x都是int类型,则for循环语句( )。for(i=0,x=0;i=9&x!=876;i+)scanf(“%d”,x);A最多执行10次B最多执行9次C是无限循环D循环体一次也不执行2下述for循环语句( )。int i,k;for(i=0,k=-1;k=1;i+,k+) printf(“*”);A判断循环结束的条件非法B是无限循环C只循环一次D一次也不循环3下列是计算n!的值的程序,空格处应选( )。#include main()int i,s,n;s=1;printf(“Enter n:”);scanf(“%d”,&n);for(i=1;ij共执行了( )次。#inculde main()int i=0,j=10,k=2,s=0;for(;)i+=k;if(ij)printf(“%d”,s);break;s+=i;A4B7C5D65.以下程序的输出结果是( )。#inculde main()int i;for(i=1;i=5;i+)if(i%2)putchar();putchar(#);A#B#C#D#6.下述程序的输出结果是( )。#include main()int k=0,m=0;int i,j;for(i=0;i2;i+)for(j=0;j3;j+)k+;k-=j;m=i+j;printf(“k=%d,m=%d”,k,m);Ak=0,m=3Bk=0,m=5Ck=1,m=3Dk=1,m=57.以下程序段的输出结果是( )。int i,j,m=0;for(i=1;i=15;i+=4)for(j=3;j7)n-;printf(“%dn”,n);9879876109871098ABCD9以下程序段的输出结果是( )。int x=3;doprintf(“%d”,x-=2);while(!(-x);A1B3 0C1 -2D死循环10以下程序的输出结果是( )。#include main()int i,sum;for(i=1;i6;i+) sum+=sum;printf(“%dn”,sum);A15B14C不确定D011以下程序的输出结果是( )。#include main()int y=10;for(;y0;y-)if(y%3=0)printf(“%d”,-y);continue;A741B852C963D875432112.若x是int型变量,以下程序段的输出结果是( )。for(x=3;x6;x+)printf(x%2)?(“*%d”):(“#%dn”),x);A BCD13.以下传述正确的是( )。Ado.while语句构成的循环不能用其他语句构成的循环代替B只有do.while语句构成的循环能用break语句退出C用do.while语句构成循环时,在while后的表达式为零时不一定结束循环D用do.while语句构成循环时,在while后的表达式为零时结束循环14以下程序的输出结果是( )。#include main()int x,i;for(i=1;i=100;i+)x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf(“%d”,x);printf(“n”);A3981B4284C2668D287015以下循环体的执行次数是( )。#include main()int i,j;for (i=0,j=1;i=j+1;i+=2,j-)printf(“%dn”,i);A3B2C1D016有如下程序:#include main()int n=9;while(n6)n-;printf(“%d”,n);该程序段的输出结果是( )A987B876C8765D987617有以下程序段:int k=0;while (k=1)k+;while循环执行的次数是( )。A无限次B有语法错,不能执行C一次也不执行D执行一次18以下程序中,while循环的循环次数是( )。#include main()int i=0;while(i10)if(i1)continue;if(i=5)break;i+;.A1B10C6D死循环,不能确定次数19以下程序正确的输出结果是( )。#include main()int i=0,a=0;while(i20)for(;)if(i%10)=0)break;else i-; i+=11;a+=i;printf(“%dn”,a);A21B32C33D116有以下程序:#include int a=3;main()int s=0;int a=5;s+=a+;s+=a+;printf(“%dn”,s);程序运行后的输出结果是( )。A8B10C7D117语句while(!E);中的条件!E 等价于( )。AE=0BE!=1CE!=0DE8以下的for循环( )。for(x=0,y=0;(y!=123)&(x4);x+);A是无限循环B循环次数不定C循环执行4次D循环执行3次9执行下面程序片段的结果是( )。int x=23;doprintf(“%d”,x-);while(!x);A打印出321B打印出23C不打印任何东西D陷入死循环10请阅读以下程序:#include main()float x,y;scanf(“%f”,&x);if(x0.0)y=0.0;else if(x5.0)&(x!=2.0)y=1.0/(x+2.0);else if(x10.0)y=1.0/x;else y=10.0;printf(“%fn”,y);若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是( )。A0.000000B0.250000C0.500000D1.00000011下面的for语句的循环次数为( )。for(x=1,y=0;(y!=123)&(x4);x+);A是无限循环B循环次数不定C循环执行4次D循环执行3次12在while(x)语句中的x与下面条件表达式等价的是( )。Ax=0Bx=1Cx!=1Dx!=013下面程序的输出结果是( )。#include main()int k,j,m;for(k=5;k=1;k-)m=0;for(j=k;j=5;j+)m=m+k*j;printf(“%dn”,m);A124B25C36D1514下面程序的输出结果是( )。#include main()int x=10,y=10,i;for(i=0;x8;y=+i) printf(“%d%d”,x-,y);A10 1 9 2B9 8 7 6C10 9 9 0D10 10 9 115下面程序段的输出结果是( )。a=1;b=2;c=2;while(abc)t=a;a=b;b=t;c-;printf(“%d,%d,%d”,a,b,c);A1,2,0B2,1,0C1,2,1D2,1,116若有如下语句,则程序段( )。int x=6;doprintf(“%dn”,x-=2);while(-x);A输出的是1B输出的是4和1C输出的是3和0D是死循环17下面有关for循环的正确描述是( )。Afor循环只能用于循环次数已经确定的情况Bfor循环是先执行循环体语句,后判断表达式C在for循环中,不能用break语句跳出循环Dfor循环的循环体语句中,可以包含多条语句,但必须用花括号括起来二填空题1下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。#inculde main()int a,b,c,i;a=c=0;for(i=0;i=10;i+=2)a+=i; b=i+1 ;c+=b;printf(“偶数之和=%dn”,a);printf(“奇数之和=%dn”,c-11);2下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。#include main()int i,j;for(i=0; i10 ;i+)j=i*10+6;if( j%3!=0 )continue;printf(“%d”,j);3以下程序的输出结果是 52 。#include main()int i=10,j=0;doj=j+i;i-;while(i2);printf(“%dn”,j);4以下程序的输出结果是 17 。#inculde main()int x=15;while(x10&x50)x+;if(x/3)x+;break;else continue;printf(“%dn”,x);5有以下程序:#include main()char c;while(c=getchar()!=?)putchar(-c);程序运行时,如果从键盘输入:Y?N?,则输出结果为 X 。6下面程序的运行结果是 254 。#include main()int a,s,n,count;a=2;s=0;n=1;count=1;while(count=0);8下面程序段的运行结果是 * 。x=2;doprintf(“*”);x-;while(x);9下面程序的运行结果是 1,-2 。#include main()int y,a;y=2;a=1;while(y-!=-1)doa*=y;a+;while(y-);printf(“%d,%d”,a,y);10下面程序的运行结果是 8 。i=1;s=3;do s+=i+;if(s%7=0)continue;else +i;while(s15);printf(“%d”,i);11以下程序的输出结果是 程序段无限循环,没有输出结果 。int k,n,m;n=10;m=1;k=1;while(k=n)m*=2;printf(“%dn”,m);12以下程序的输出结果是 -1 。#include main()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论