您好,欢迎访问三七文档
攸县职业中专谭五爱第4部分循环结构4.1循环概述4.2用goto语句和if语句构成循环4.3while语句4.4do-while语句4.5for语句4.6循环的嵌套4.7几种循环的比较4.8break和continue语句4.9程序举例攸县职业中专谭五爱第4部分循环结构4.1循环概述所谓循环即反复的意思,在C语言中指反复执行某些相同的操作。循环分为当型循环和直到型循环。其传统的流程图如图4-1(a)和(b)所示。攸县职业中专谭五爱第4部分循环结构其相应的N-S流程图如图4-2(a)和(b)所示.攸县职业中专谭五爱第4部分循环结构当型循环指当条件成立时反复执行语句,即先判断后执行;而直到型循环指先执行语句然后判断条件是否成立,当成立时再执行语句,即先执行后判断。在C语言中可以用以下四种方法来实现循环:1.用goto语句和if语句构成循环;(当型或直到型循环)2.用while语句;(当型循环)3.用do-while语句;(直到型循环)4.用for语句。(当型循环)攸县职业中专谭五爱第4部分循环结构4.2while语句While语句可以实现当型循环结构。其一般形式如下:while(表达式){……}省略号代表的是循环体语句。当循环体是一条语句时,可以不用大括号,但当循环体是两条或两条以上语句时,一定要用大括号。攸县职业中专谭五爱第4部分循环结构while语句执行流程1、首先计算表达式2、如果表达式的值为非零,执行语句3、重新计算表达式4、如果表达式的值为0,则跳出循环5、如果表达式的值一开始就为0,则语句一次也会被不执行。语句假真表达式攸县职业中专谭五爱第4部分循环结构while语句举例问题:求n个学生的平均成绩算法:1输入n;i=1,average=0;2判断i=n。3输入第i个学生的score;4average+=score;i++;5重复步骤2;6average/=n;攸县职业中专谭五爱第4部分循环结构#includestdio.hvoidmain(){intn,score,i=1;floataverage=0;printf(“\nEntern:”);scanf(“%d”,&n);while(i=n){printf(“\nEnterscore:”);scanf(“%d”,&score);average+=score;i++;}average/=n;printf(“\naverage=%f”,average);}攸县职业中专谭五爱第4部分循环结构4.3do—while语句do—while语句的一般形式是:do{语句;}while(表达式);特点:首先执行语句,再通过判断循环控制条件是否满足来决定是否继续循环。攸县职业中专谭五爱第4部分循环结构do—while语句执行流程1、首先计算语句,再计算表达式。2、如果表达式的值为非零,继续下一次循环3、如果表达式的值为0,则跳出循环4、如果表达式的值一开始就为0,也会执行一次语句。语句表达式攸县职业中专谭五爱第4部分循环结构#includestdio.hvoidmain(){intn,score,i=0;floataverage=0;do{printf(“\nEnterscore:”);scanf(“%d”,&score);average+=score;i++;}while(score=0);average=;printf(“\naverage=%f”,average);}例:求n个学生的平均成绩,改用do-while循环处理攸县职业中专谭五爱第4部分循环结构注意:循环控制变量值在循环体内必须有所改变。例如:i=1;while(i=100)putchar(‘*’);i++;i++应该在循环体内改变:应改为:i=1;while(i=100){putchar(‘*’);i++;}攸县职业中专谭五爱第4部分循环结构4.4for循环语句for(表达式1;表达式2;表达式3)循环体语句;这是C语言最有特点的循环语句,使用最为灵活方便。一般形式:攸县职业中专谭五爱第4部分循环结构先计算初值表达式,用于循环开始前设置变量初值。接着计算循环控制逻辑表达式,控制循环条件,决定循环次数。执行循环体语句,这个语句也可以是其它循环。循环控制变量,修改表达式。执行流程表达式1表达式2循环体表达式3真假for(表达式1;表达式2;表达式3)循环体语句;攸县职业中专谭五爱第4部分循环结构4.4.1for语句的一般形式for语句的一般形式如下:for(表达式1;表达式2;表达式3){……}(1)表达式1通常是用来给循环变量赋初值,一般是赋值表达式。也允许在for语句之外给循环变量赋初值,此时可省略该表达式;(2)表达式2通常是循环条件,一般为关系表达式或逻辑表达式,也可以是其它表达式;(3)表达式3通常可用来修改循环变量的值,一般是赋值表达式。三个表达式都是可选项,都可以省略。但特别提请注意的是,表达式1和表达式2后的分号“;”不能省略。攸县职业中专谭五爱第4部分循环结构有一点需要指出:for循环的条件检验总是在循环的开始进行的。这也就是说,当开始时条件为不成立(0)时,不执行循环体,例如程序段:x=10;for(y=10;y!=x;++y)printf(%d,y);printf(%d,y);攸县职业中专谭五爱第4部分循环结构for语句最主要的特点是:特别适合已知循环次数的循环语句,根据for循环的循环变量的变化情况。循环次数的计算可以用公式进行计算:n=(int)((终值-初值+步长)/步长)例如:循环语句for(n=1;n=100;n++)(设n为整型变量)控制循环体反复执行的次数为n=(int)((100-1+1)/1)=100又如:循环语句for(n=100;n0;n=n-2)(设n为整形变量)控制循环体反复执行的次数为n=(int)((1-100-2)/(-2))=50攸县职业中专谭五爱第4部分循环结构4.4.2for循环的变量(循环变量)在循环中通过改变循环变量的值,实现对循环条件的改变来控制循环。可以使用一个或两个及以上的变量共同实现对循环的控制。例,下面例子使用变量x和y共同来控制循环,这两个变量都是在for语句的内部被初始化。intx,y;for(x=0,y=0;x+y10;++x){y=getchar();y=y-’0’;/*将数字字符转化为整数值*/printf(“%d”,y);}欲键盘输入456789回车,输出结果是:攸县职业中专谭五爱第4部分循环结构4.4.3无限循环for循环最有价值的一种用法是建立无限循环。由于构成for循环的三个表达式都是没有被要求,因此可以运用空的条件表达式而使得循环无休止地进行下去,例如:for(;;)printf(”thisloopwillrunforever.\n”);有一点必须强调:for循环中的可以表达式可以为空,但不能省略分号,即for语句必须有两个分号。攸县职业中专谭五爱第4部分循环结构4.4.4无循环体for循环正像C语言句法所定义的那样,一条语句可以是空语句。这就是说,for循环体(或其他循环形式)都可以是空语句。这个事实可用来改善某些算法的效率以及产生时间延迟循环。for(i=0;i100;i++);攸县职业中专谭五爱第4部分循环结构在使用for语句中要注意以下几点:(1)for语句中的各表达式都可省略,但分号间隔符不能少;如:for(;表达式;表达式)省去了表达式1;for(表达式;;表达式)省去了表达式2,相当于表达式2的值为1,循环条件总成立;for(表达式;表达式)省去了表达式3;for(;;)省去了全部表达式。攸县职业中专谭五爱第4部分循环结构(2)在循环变量已赋初值时,可省去表达式1。如省去表达式2或表达式3则将造成无限循环,这时应在循环体内设法结束循环。for(i=0;;){if(i==10)break;i++;}(3)循环体可以是空语句。例如:从键盘输入一行字符然后逐个输出每一个字符。for(;(ch=getchar())!=‘\n’;putchar(ch));(4)for语句也可与while,do-while语句相互嵌,构成多重循环。攸县职业中专谭五爱第4部分循环结构4.5循环的嵌套一个循环体内的语句又包含另一个完整的循环结构,称为循环嵌套。如果内嵌的循环体中还包含完整的循环,这就构成了多层循环。三种循环语句(while,for,do-while)可以相互嵌套。例如,以下几种均为合法的循环嵌套。攸县职业中专谭五爱第4部分循环结构循环嵌套的形式do{…for(){…}…}while();for(){…while(){…}…}while(){…do(){…}while();…}for(){…for(){…}}攸县职业中专谭五爱第4部分循环结构4.6几种循环的比较(1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡使用goto型循环语句;(2)while和do-while循环,只在while后面指定循环条件,在循环体中包括应反复执行的操作语句,包括使循环趋于结束的语句(如i++,或i=i+1等)。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。攸县职业中专谭五爱第4部分循环结构(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。(4)while和for循环是先判断表达式,后执行语句;而do-while循环相反,是先执行语句,后判断表达式,而goto循环则两者兼有。(5)对while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环。而对使用goto语句和if语句构成的循环,不能使用break语句和continue语句进行控制。攸县职业中专谭五爱第4部分循环结构4.7break和continue语句break语句有两种用法。第一种用法是在switch语句中,跳出switch结构,转去执行后面的程序;第二种用法是,跳过一般的循环条件检验,立即强制地中止一个循环。下面介绍第二种用法:攸县职业中专谭五爱第4部分循环结构break语句的一般形式如下:break;当一个循环体内的break语句被执行时,循环立即中断,并转向循环体外的下一条语句.continue语句有点像break语句。continue语句只能用在循环体内,不能用在其他位置。其一般形式如下:continue;攸县职业中专谭五爱第4部分循环结构例1:计算半径从1到20时圆的面积,直到面积大于200为止。#includestdio.h#definePI3.1415voidmain(){intr;floats;for(r=1;r=20;r++){s=PI*r*r;if(s200);printf(r=%d,s=%.2f\n,r,s);}}break攸县职业中专谭五爱第4部分循环结构例2:输出50到150之间不能被5整除的整数。#includestdio.hvoidmain(){inti;for(i=50;i=150;i++)if()printf(%5d,i);printf(\n);}#includestdio.hvoidmain(){inti;for(i=50;i=150;i++){if(i%5==0);printf(%5d,i);}printf(\n);}i%5!=0continue攸县职业中专谭五爱第4部分循环结构1、写出程序的执行结果#includestdio.hvoidmain(){inti=0,j=0;while(i10)i++;while(j++10);printf(“i=%d,j=%d\n”,i,j);}4.8程序举例攸县职业中专谭五爱第4部分循环结构2、写出程序的执行结果#includestdio
本文标题:4循环结构
链接地址:https://www.777doc.com/doc-3156614 .html