《循环控制ppt课件.ppt》由会员分享,可在线阅读,更多相关《循环控制ppt课件.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章 循环控制循环控制重点:重点:1)三种循环结构)三种循环结构当型循环与当型循环与while语句语句直到型循环与直到型循环与dowhile语句语句次数循环与次数循环与for语句语句2)break语句和语句和continue语句语句一、概述一、概述循环结构:在一定的条件下,重复执行一组语句。循环结构:在一定的条件下,重复执行一组语句。被重复执行的语句称为被重复执行的语句称为“循环体循环体”实现循环结构的语句有实现循环结构的语句有3种:种:1.while语句语句2.dowhile语句语句3.for语句语句当当(i小于小于20)练习:输出练习:输出20以内的所有整数以内的所有整数i=1i=
2、1i i小于小于小于小于2020输出输出输出输出i i真真真真假假假假程序结束程序结束程序结束程序结束i=i+1i=i+1重复操作重复操作(循环)(循环)输出输出ii=i+1循环体循环体whilei20printf(“%d”,i);i=i+1;#include#includevoidmain()voidmain()inti;inti;i=1;while(i=20)while(i=20)printf(“%d”,i);printf(“%d”,i);i=i+1;i=i+1;1、循环结构之、循环结构之while语句语句形式:形式:while(条件)(条件)循环体循环体功能:在程序遇到功能:在程序遇到功
3、能:在程序遇到功能:在程序遇到whilewhile时,首时,首时,首时,首先检查条件是否成立,若成立则先检查条件是否成立,若成立则先检查条件是否成立,若成立则先检查条件是否成立,若成立则执行循环体语句,然后再去检查执行循环体语句,然后再去检查执行循环体语句,然后再去检查执行循环体语句,然后再去检查条件,若条件仍然成立则继续执条件,若条件仍然成立则继续执条件,若条件仍然成立则继续执条件,若条件仍然成立则继续执行循环体,依次反复,直到某个行循环体,依次反复,直到某个行循环体,依次反复,直到某个行循环体,依次反复,直到某个时刻条件不再成立,则退出循环时刻条件不再成立,则退出循环时刻条件不再成立,则退
4、出循环时刻条件不再成立,则退出循环执行后续语句。执行后续语句。执行后续语句。执行后续语句。用来实现用来实现用来实现用来实现“当型当型当型当型”循环循环循环循环流程图:流程图:流程图:流程图:条件条件条件条件p p循环体循环体循环体循环体真真真真假假假假后续语句后续语句后续语句后续语句1、循环结构之、循环结构之while语句语句形式:形式:形式:形式:whilewhile(条件)(条件)(条件)(条件)循环体循环体循环体循环体练习:输出练习:输出练习:输出练习:输出100100以内所有整数。以内所有整数。以内所有整数。以内所有整数。#include#includevoidmain()voidma
5、in()inti=1;inti=1;while(i100)while(i100)printf(“%d”,i);printf(“%d”,i);i=i+1;i=i+1;if(i%3=0)if(i%3=0)能被能被3整除的数。整除的数。注:注:(1 1)循环体如果包含一个)循环体如果包含一个以上的语句,应该用花括号以上的语句,应该用花括号括起来,组成复合语句。括起来,组成复合语句。(2 2)循环体中必须有使循)循环体中必须有使循环趋向结束的语句,否则环趋向结束的语句,否则会出现死循环。会出现死循环。i=i+1;i=i+1;i=1i=1i i小于小于小于小于2020输出输出输出输出i i真真真真假假假
6、假程序结束程序结束程序结束程序结束i=i+1i=i+1例题:输出例题:输出20以内的所有整数以内的所有整数i=1i=1i i小于小于小于小于2020输出输出输出输出i i真真真真假假假假程序结束程序结束程序结束程序结束i=i+1i=i+1二者二者的区的区别?别?先判断先判断再执行操再执行操作作先执行操作先执行操作再进行条件再进行条件判断判断i=1i=1i i小于小于小于小于2020输出输出输出输出i i真真真真假假假假程序结束程序结束程序结束程序结束i=i+1i=i+1实现形式:实现形式:while(条件条件)循环体循环体i=1i=1i i小于小于小于小于2020输出输出输出输出i i真真真真
7、假假假假程序结束程序结束程序结束程序结束i=i+1i=i+1实现形式:实现形式:do循环体循环体while(条件条件);2、循环结构之、循环结构之dowhile语句语句注意不注意不要漏掉要漏掉分号分号#include#includevoidmain()voidmain()inti=1;inti=1;while(i20)while(i20)printf(“%d”,i);printf(“%d”,i);i=i+1;i=i+1;例题:输出例题:输出20以内的所有整数以内的所有整数改成改成dowhile结构结构dodo printf(“%d”,i);printf(“%d”,i);i=i+1;i=i+1;
8、while(i20)while(i20);do do 语句与语句与dowhiledowhile的区别的区别whilewhile()循环体循环体循环体循环体dodo循环体循环体循环体循环体whilewhile();循环体至少执行一次循环体至少执行一次循环体至少执行一次循环体至少执行一次有可能循环体一次也执有可能循环体一次也执有可能循环体一次也执有可能循环体一次也执行不到。行不到。行不到。行不到。#include#includevoidmain()voidmain()inti=inti=1 1;while(i20)while(i20)printf(“%d”,i);printf(“%d”,i);i=
9、i+1;i=i+1;#include#includevoidmain()voidmain()inti=inti=1 1;dodoprintf(“%d”,i);printf(“%d”,i);i=i+1;i=i+1;while(i20)while(i20);20;20;比较两个比较两个程序的异程序的异同同!作用作用:使变量的值增使变量的值增1 1或减或减1 1补充:补充:自增、自减运算符自增、自减运算符+-1 1)该运算符为单目运算符,其运算对象只能是变量,)该运算符为单目运算符,其运算对象只能是变量,不能为常量或者表达式。不能为常量或者表达式。例如:例如:i+x-i+x-都是正确的都是正确的 5
10、+(x+y)+5+(x+y)+都是错误的都是错误的2 2)该运算符作前缀、后缀都可以)该运算符作前缀、后缀都可以例如例如 i+i i-i i+i i-i 都是正确的都是正确的3 3)对变量而言对变量而言 i+i+或者或者+i+i都相当于都相当于i=i+1 i=i+1 i-i-或者或者-i-i 都相当于都相当于i=i-1i=i-1程序的输出结果为程序的输出结果为3 3)但如果作为表达式,但如果作为表达式,前缀和后缀则不同:前缀和后缀则不同:前缀:先运算再取值前缀:先运算再取值后缀:先取值再运算后缀:先取值再运算例如例如:void main():void main()int i=3;int i=3
11、;printf(“%dn”,i+);printf(“%dn”,i+);+i3 4下列程序的输出结果为下列程序的输出结果为void main()int i=5,j;j=i+;printf(“i=%d,j=%dn”,i,j);程序结果:i=6,j=5j=+i;i=6,j=64)多用于循环语句中,多用于循环语句中,使变量自增或者自减,也用于指针也用于指针变量变量,使指针指向下一个或者前一个地址。例如前例中:#include#includevoidmain()voidmain()inti=1;inti=1;while(i20)while(i20)printf(“%d”,i);printf(“%d”,i
12、);i=i+1;i=i+1;#include#includevoidmain()voidmain()inti=1;inti=1;dodoprintf(“%d”,i);printf(“%d”,i);i=i+1;i=i+1;while(i20)while(i20);i+;i+;例题:求例题:求例题:求例题:求s=1+2+3+4+100s=1+2+3+4+100s=0s=0s+1s+1s ss+2s+2s ss+3s+3s ss+99s+99s ss+100s+100s ss+is+ii+i+11+21+2+31+2+3+991+2+3+99+100S=0,i=1S=0,i=1i=100i=100s
13、=s+is=s+i真真真真假假假假输出输出输出输出s si=i+1i=i+1main()main()inti,s;inti,s;i=1;s=0;i=1;s=0;while(i=100)while(i=100)s=s+i;s=s+i;i+;i+;printf(“s=%dn”,s);printf(“s=%dn”,s);练习:求练习:求练习:求练习:求p=5p=5!main()main()inti,p;inti,p;i=1;p=1;i=1;p=1;while(i=5)while(i=5)p=p*i;p=p*i;i+;i+;printf(“p=%dn”,p);printf(“p=%dn”,p);S=0
14、,i=1S=0,i=1i=100i=100s=s+is=s+i真真真真假假假假输出输出输出输出s si=i+1i=i+1p=1p=15 5p=p*ip=p*ip p作业:1 1:编写一个猜数的小游戏。:编写一个猜数的小游戏。游戏规则:由计算机随机产生一个游戏规则:由计算机随机产生一个100100以内的整数,用户猜该数是以内的整数,用户猜该数是多少,如果没有猜对,则系统提示多少,如果没有猜对,则系统提示“太大太大”或者或者“太小太小”,然后继,然后继续猜。直到猜对为止。续猜。直到猜对为止。(guess.c)(guess.c)2 2:编程进行编程进行编程进行编程进行100100100100以内的四
15、则运算练习。并统计做题的总数、答以内的四则运算练习。并统计做题的总数、答以内的四则运算练习。并统计做题的总数、答以内的四则运算练习。并统计做题的总数、答对题的数目和答错题的数目。对题的数目和答错题的数目。对题的数目和答错题的数目。对题的数目和答错题的数目。(opration.c)(opration.c)(opration.c)(opration.c)3:3:输入一个任意位数的正整数,然后由低位到高位输出每一位上输入一个任意位数的正整数,然后由低位到高位输出每一位上的数字。如输入的数字。如输入456789456789,则输出,则输出9 9,8 8,7 7,6 6,5 5,4 4引申练习:可以玩多
16、次的猜数游戏,知道不想玩为止。引申练习:可以玩多次的猜数游戏,知道不想玩为止。引申练习:引申练习:输入一个任意位数的正整数,然后由高位到低位输出每一位上的数字。输入一个任意位数的正整数,然后由高位到低位输出每一位上的数字。如输入如输入446789,则输出,则输出4,5,6,7,8,9for()#include#includevoidmain()voidmain()inti;inti;i=1;i=1;while(i20)while(i20)printf(“%d”,i);printf(“%d”,i);i+;i+;i=1i=1i20i20i+i+;基本形式:基本形式:基本形式:基本形式:for(fo
17、r(表达式表达式表达式表达式1;1;表达式表达式表达式表达式2;2;表达式表达式表达式表达式3 3)循环体循环体循环体循环体printf(“%d”,i);printf(“%d”,i);3 3、循环结构之、循环结构之forfor语句语句(1 1)形式:)形式:)形式:)形式:多用于已经知道循环次数确定的情况下,也可以用于多用于已经知道循环次数确定的情况下,也可以用于多用于已经知道循环次数确定的情况下,也可以用于多用于已经知道循环次数确定的情况下,也可以用于已知循环条件的情况。使用最为灵活。已知循环条件的情况。使用最为灵活。已知循环条件的情况。使用最为灵活。已知循环条件的情况。使用最为灵活。for
18、(for(表达式表达式表达式表达式1;1;表达式表达式表达式表达式2;2;表达式表达式表达式表达式3 3)循环体循环体循环体循环体(2 2)执行过程:)执行过程:)执行过程:)执行过程:求解表达式求解表达式求解表达式求解表达式1 1判断表达式判断表达式判断表达式判断表达式2 2真真真真循环体循环体循环体循环体表达式表达式表达式表达式3 3假假假假循环体后的语句循环体后的语句循环体后的语句循环体后的语句for(for(表达式表达式表达式表达式1 1;表达式;表达式;表达式;表达式2 2;表达式;表达式;表达式;表达式3 3)循环体循环体循环体循环体注:一般情况下各部分表达式的作用注:一般情况下各
19、部分表达式的作用注:一般情况下各部分表达式的作用注:一般情况下各部分表达式的作用:表达式表达式表达式表达式1 1:循环变量赋初值:循环变量赋初值:循环变量赋初值:循环变量赋初值表达式表达式表达式表达式2 2:循环成立的条件:循环成立的条件:循环成立的条件:循环成立的条件表达式表达式表达式表达式3 3:循环变量的变化:循环变量的变化:循环变量的变化:循环变量的变化所以,所以,所以,所以,forfor语句最多的采用形式为:语句最多的采用形式为:语句最多的采用形式为:语句最多的采用形式为:forfor(循环变量赋初值;循环条件;循环变量变化)(循环变量赋初值;循环条件;循环变量变化)(循环变量赋初值
20、;循环条件;循环变量变化)(循环变量赋初值;循环条件;循环变量变化)循环体循环体循环体循环体例如:例如:for(i=0;i8;i+)例:例:例:例:main()main()inti,s=0;inti,s=0;i=1;i=1;while(i=100)while(i=100)s=s+i;s=s+i;i+;i+;printf(“s=%dn”,s);printf(“s=%dn”,s);/循环变量赋初值循环变量赋初值循环变量赋初值循环变量赋初值/循环条件循环条件循环条件循环条件/循环变量的变化循环变量的变化循环变量的变化循环变量的变化/循环语句循环语句循环语句循环语句用用用用forfor语句实现:语句实
21、现:语句实现:语句实现:for(;)for(;)i=1i=1i=100i=100i+i+s=s+i;s=s+i;forfor(循环变量赋初值;循环条件;循环变量变化)(循环变量赋初值;循环条件;循环变量变化)(循环变量赋初值;循环条件;循环变量变化)(循环变量赋初值;循环条件;循环变量变化)循环体循环体循环体循环体注:注:注:注:1 1)各个部分均可省略,但分号不能省。)各个部分均可省略,但分号不能省。)各个部分均可省略,但分号不能省。)各个部分均可省略,但分号不能省。省略表达式省略表达式省略表达式省略表达式1 1:应在:应在:应在:应在forfor语句之前给循环变量赋初值。语句之前给循环变量
22、赋初值。语句之前给循环变量赋初值。语句之前给循环变量赋初值。for(i=1;i=100;i+)for(i=1;i=100;i+)s=s+i;s=s+i;i=1i=1;省略表达式省略表达式省略表达式省略表达式2 2:不进行循环条件的判断,则循环将会无终:不进行循环条件的判断,则循环将会无终:不进行循环条件的判断,则循环将会无终:不进行循环条件的判断,则循环将会无终止的执行下去,即死循环。止的执行下去,即死循环。止的执行下去,即死循环。止的执行下去,即死循环。for(i=1;for(i=1;i=100;i+)i=100;i+)s=s+i;s=s+i;省略表达式省略表达式省略表达式省略表达式3 3:
23、可以在循环体内实现循环变量的变化:可以在循环体内实现循环变量的变化:可以在循环体内实现循环变量的变化:可以在循环体内实现循环变量的变化for(i=1;i=100;i+)for(i=1;i=100;i+)s=s+i;s=s+i;i+;i+;注:注:注:注:2 2)各个部分可以为各种形式的与循环无关的表达式)各个部分可以为各种形式的与循环无关的表达式)各个部分可以为各种形式的与循环无关的表达式)各个部分可以为各种形式的与循环无关的表达式,各表达式之间用逗号隔开。各表达式之间用逗号隔开。各表达式之间用逗号隔开。各表达式之间用逗号隔开。main()main()inti,s;inti,s;s=0;s=0
24、;for(i=0;i=100;i+)for(i=0;i=100;i+)s+=i;s+=i;printf(“sumis%dn”,s);printf(“sumis%dn”,s);s=0,s=0,s+=i,s+=i,;main()main()inti;inti;for(i=1;i=4;i+)for(i=1;i=4;i+)printf();printf();练习:输出练习:输出练习:输出练习:输出4 4的乘法表的乘法表的乘法表的乘法表1*4=42*4=83*4=124*4=161*4=42*4=83*4=124*4=16“”“”,*4=*4=%d%d%d%di i,i*4,i*4练习:输出九九乘法表练
25、习:输出九九乘法表练习:输出九九乘法表练习:输出九九乘法表(lt5_5.c)(lt5_5.c)1*1=11*1=11*2=22*2=41*2=22*2=41*3=32*3=63*3=91*3=32*3=63*3=91*9=92*9=183*9=279*9=811*9=92*9=183*9=279*9=81main()main()inti;inti;for(i=1;i=4;i+)for(i=1;i=4;i+)printf(“%d*4=%d”,i,i*4);printf(“%d*4=%d”,i,i*4);j j%d%dj,j,for(j=1;j=9;j+)for(j=1;jx)if(yx)#inc
26、lude#include#includevoidmain()intx,y;srand(time(0);/以系统时钟作为随机种子以系统时钟作为随机种子x=rand()%100;/产生随机数产生随机数printf(请输入你猜的数据:请输入你猜的数据:“);scanf(“%d”,&y);printf(“太大了!太大了!n“);elseprintf(“太小了!太小了!n“);if(yx)while(y!=x);doif(yx)while(y!=x);printf(请输入你猜的数据:请输入你猜的数据:);scanf(“%d”,&y);改成改成while结构结构while(y!=x);printf(请输入
27、你猜的数据:请输入你猜的数据:“);scanf(“%d”,&y);printf(“太大了!太大了!n“);elseprintf(“太小了!太小了!n“);if(yx)doif(yx)例题:编程判断一个数是否为素数例题:编程判断一个数是否为素数(质数质数)。素数是大于。素数是大于1的整数,除了的整数,除了1和本身之外不能被其他的任何数整除。和本身之外不能被其他的任何数整除。例如:例如:3,7,11,13,19,23,31等等5 5、breakbreak语句语句作用:跳出其所在的循环体。提前结束该层循环。作用:跳出其所在的循环体。提前结束该层循环。练习:输出练习:输出100以内的所有素数。以内的所
28、有素数。练习:将下面程序补充完整,使程序计算练习:将下面程序补充完整,使程序计算100以以内所有可被内所有可被7整除的自然数之和。整除的自然数之和。#includevoidmain()intx=1;intsum=0;while(1)if(x100)_;if()sum=sum+x;x+;printf(“%dn”,sum);breakx%7=0程序分析题程序分析题#includevoidmain()inti,j;for(i=l;i=4;i+=1)for(j=2;j=4;j+=j)if(i+j5)printf(+);elseprintf(*);6 6、continecontine语句语句作用:结束本
29、次循环。即跳过本次循环体中尚未执行的语作用:结束本次循环。即跳过本次循环体中尚未执行的语句。句。注:并没有中止整个循环。注:并没有中止整个循环。例:分析以下程序的运行结果例:分析以下程序的运行结果main()inti;for(i=1;i=5;i+)if(i%2)printf(“*”);elsecontinue;printf(“#”);printf($n”);*#*#*#$练习:以下程序的输出结果为:练习:以下程序的输出结果为:main()inta=1,b;for(b=1;b=8)break;if(a%2=1)a+=5);continue;a-=3;printf(%dn,b);4课程回顾课程回顾
30、一、一、+、-运算符运算符 注意:作为前缀和后缀的区别。注意:作为前缀和后缀的区别。二、二、3中循环语句:中循环语句:whiledowhilefor写出每一种语句的格式(通式):写出每一种语句的格式(通式):while(条件条件)循环体循环体 do 循环体循环体 while(条件条件);for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体 for(循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量变化循环变量变化)三、影响循环执行的三、影响循环执行的2种语句:种语句:终止本终止本层层循环:循环:终止本终止本次次循环:循环:breakcontinue作业作业1 1、现有、现
31、有2121根火柴,两人轮流取,每人每次可取走根火柴,两人轮流取,每人每次可取走1-41-4根,根,不可多取,也不能不取,谁取最后一根火柴则谁输。请编不可多取,也不能不取,谁取最后一根火柴则谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为算机一方为“常胜将军常胜将军”。要求程序运行效果如下图。要求程序运行效果如下图。(stick.cstick.c)2 2、可以玩多次的猜数小游戏。、可以玩多次的猜数小游戏。(guess1.cguess1.c)补充:补充:清屏:清屏:system(“cls”);system(“cls”);3 3、课本、课本113113页第页第6 6、7 7、1010题题补充:补充:double pow(double x,double y)头文件头文件 作业:课本作业:课本114页页 第第14、15题题