循环结构学习.pptx
《循环结构学习.pptx》由会员分享,可在线阅读,更多相关《循环结构学习.pptx(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、15.1 while语句 1、while 语句 常称为“当型当型”循环语句。循环体循环体循环体循环体非零非零非零非零零零零零表达式表达式表达式表达式第1页/共90页2 2、while 语句的形式:while(while(表达式)表达式)循环体;循环体;特点:先判断表达式,后执行语句。说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;第2页/共90页3例(ch5_01.c)求1+2+3+4+5+100。#include#includemain()main()inti
2、,sum=0;inti,sum=0;i=1;i=1;while(i=100)while(i=100)sum=sum+i;sum=sum+i;i+;i+;printf(%d,sum);printf(%d,sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值 循环条件循环条件循环体循环体求求1010!第3页/共90页4例(ch5_02.c)显示110的平方#includemain()inti=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8
3、110*10=100第4页/共90页55.2 do-while语句1、do-while语句 常称为“直到型”循环语句。循环体循环体循环体循环体非零非零非零非零零零零零表达式表达式表达式表达式第5页/共90页62、do-while的形式:do do 循环体;循环体;whilewhile(表达式);表达式);特点:先执行,后判断。说明:至少执行一次循环体dowhile可转化成while结构例(ch5_03.c)用dowhile求1+2+3+4+5+100。#includemain()inti,sum=0;i=1;dosum+=i;i+;while(i=100);printf(%d,sum);第6页
4、/共90页7 1.循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现。2.循环体中应有使循环趋于结束的语句。例:分析下列三个程序段 注:i=1;i=1;while(i=100)while(i=100)putchar(*);putchar(*);i+;i+;i=1;i=1;putchar(*);putchar(*);i+;i+;i=1;i=1;while(i=100);while(i=100);putchar(*);i+;putchar(*);i+;第7页/共90页8main()inti,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(“%d
5、n”,sum);main()int i,sum=0;i=1i=1;do sum=sum+i;sum=sum+i;i+;i+;while(i=100i=100);printf(“%dn”,sum);第8页/共90页95.3for语句1、C语言中最灵活、最复杂的循环语句;表达式表达式表达式表达式1 1表达式表达式表达式表达式2 2循环体语句循环体语句循环体语句循环体语句表达式表达式表达式表达式3 34 可以用于循环次数确定的情况;可以用于循环次数确定的情况;44 可以用于循环次数不确定的情况;可以用于循环次数不确定的情况;44 可实现可实现whilewhile和和do-whiledo-while语
6、句的语句的所有功能。所有功能。非零非零非零非零零零零零第9页/共90页102、for的形式:for(for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3)循环体循环体 说明:for语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省无限循环:for(;)for语句可以转换成while结构 循环变量赋初值循环终止条件循环变量控制第10页/共90页11 sum=0;for(i=1;i=100;i+)sum=sum+i;它相当于以下语句:i=1;while(i=100)sum=sum+i;i+;表达式1;while(表达式2)语句;表达式3;第11页/共90
7、页12 3、for语句中表达式的省略(1)for语句一般形式中的“表达式1”可以省略;如:sum=0;i=1;for(;i100)break;if(i100)break;第12页/共90页13(3)表达式3也可以省略,但此时保证循环能正常结束。如:for(sum=0,i=1;i=100;)sum=sum+i;i+;(4)可以省略表达式1和表达式3,只有表达式2。如:i=1;sum=0;i=1;sum=0;for(;i=100;)while(i100)break;sum=sum+i;i+;第14页/共90页15(6)循环体为空语句 对for语句,循环体为空语句的一般形式为:for(表达式1;表达
8、式2;表达式3);如:for(sum=0,i=1;i=100;sum+=i,i+);又如:要在显示器上复制输入的字符,输入的字符为.时,结束循环。while(putchar(getchar()!=.);输入abcdefg.输出abcdefg.第15页/共90页16例:例:#include#includemain()main()inti;inti;for(i=0;i10;i+)for(i=0;i10;i+)putchar(a+i);putchar(a+i);运行结果:abcdefghij例:例:例:例:#include#includemain()main()inti=0;inti=0;for(;
9、i10;)for(;i10;)putchar(a+(i+);putchar(a+(i+);例:例:#include#includemain()main()inti=0;inti=0;for(;i10;putchar(a+i),i+)for(;i10;putchar(a+i),i+);例:例:#include#includemain()main()inti=0;inti=0;for(;i10;i+)for(;i10;i+)putchar(a+i);putchar(a+i);第16页/共90页17main()main()inti,j,k;inti,j,k;for(i=1,j=100;i=j;i+,
10、j-)for(i=1,j=100;i=j;i+,j-)k=i+j;k=i+j;printf(%d+%d=%dn,i,j,k);printf(%d+%d=%dn,i,j,k);#include#includemain()main()charc;charc;for(;(c=getchar()!=n;)for(;(c=getchar()!=n;)printf(%c,c);printf(%c,c);#include#includemain()main()inti,c;inti,c;for(i=0;(c=getchar()!=n;i+=3)for(i=0;(c=getchar()!=n;i+=3)pri
11、ntf(%c,i+c);printf(%c,i+c);第17页/共90页18循环终止条件的种类:循环终止条件的种类:1.1.关系表达式关系表达式:如前几例2.2.逻辑表达式逻辑表达式:for(;ab&xy;)3.3.字符表达式字符表达式:for(;(c=getchar()!=n(c=getchar()!=n;)printf(“%c”,c);第18页/共90页19例 输入30个09的字符数字,计算数字串中有多少个奇数,偶数和零.思路:1.输入30个字符数字char num,而不是整数2.30个字符的输入和30个数字的输入的区别 字符可以连续输入30个 009764146589.数字输入必须是用空
12、格,Tab键或回车隔开 0 0 9 7 6 4 1 4 6 5 8 9 3.将字符变成数字后判断奇偶 i=num-0;字符数字的ASCII码:48 49 50 51 52 53 54 55 56 57第19页/共90页20步骤:1.计数变量n1,n2,n3初始值设为零;2.输入1个字符num;3.循环变量初值为1;4.若i=30,重复字符变成数字,num=num-0判断num是否为0判断num2的值循环变量i+再输入1个字符num5.输出n1,n2,n3的值。输入输入numn1=0,n2=0,n3=0i=1i=30num=num-0num%2n1+n2+n3+输出输出n1,n2,n3的值的值n
13、um=0YNi+输入输入numYN第20页/共90页21259718528637908300264710031993thereare9evens,5zeros,16odds.main()inti,n1=0,n2=0,n3=0;charnum;scanf(“%c”,&num);for(i=1;i=30;i+)num=num-0;if(num=0)n1+;if(num%2)n2+;elsen3+;scanf(“%c”,&num);printf(Thereare%2devens,%2dodds,%2dzeros”,n1,n2,n3,);第21页/共90页22解题思路1.每当我们读入一张选票,只有6种
14、情况,将它们加到相应的人选上。2.-1结束循环3.case语句作为开关。例 统计选票。现有选票如下3,1,2,1,1,3,3,2,1,2,3,3,2,1,1,3,2,0,1,4,-1.-1是结束标志。设1选李,2选张,3选王,0和4为废票,谁会当选?第22页/共90页23main()intvote,l_vote,z_vote,w_vote,invalidvote;l_vote=0;z_vote=0;w_vote=0;invalidvote=0;scanf(“%d”,&vote);while(vote!=-1)switch(vote)case1:l_vote+;break;case2:z_vot
15、e+;break;case3:w_vote+;break;case0:case4:invalidvote+;break;scanf(“%d”,&vote);printf(Li%2d,zhang%d2d,wang%2d,invalid%2d”,l_vote,z_vote,w_vote,invalidvote);第23页/共90页24例 输入一个整数,计算它的位数.并反向输出.分析:设一个数13579,一位一位地切下末位循环结束条件:num=0;同时计数 count=count+1;13513513571357135791357977bitbitbitbit9955bitbit1313bitbit
16、11bitbitbit=num%10 num=num/1013571357 9 91351357 713135 5count=0;输入输入numnum!=0输出输出num%10count+num=num/10输出输出count331133第24页/共90页25main()main()longintnum;longintnum;intcount=0;intcount=0;printf(“Pleaseenteraninteger:n”);printf(“Pleaseenteraninteger:n”);scanf(“%ld”,&num);scanf(“%ld”,&num);dodoprintf(“
17、%d”,num%10);printf(“%d”,num%10);num=num/10;num=num/10;count+;count+;while(num!=0);while(num!=0);printf(“%ddigits.”,count);printf(“%ddigits.”,count);Pleaseenteraninteger:Pleaseenteraninteger:38293829 92834digits.92834digits.第25页/共90页265.4goto语句1、无条件转移语句;形式:goto 标号;2、有标号的语句称为标号语句;形式:标号:语句;3、goto语句在使用时
18、只能转移到goto所在的函数内的标号处,不能转移到该函数外;4、可以从多重循环的内层转移到最外层,而break只能跳出一层循环。满足标识符的规定满足标识符的规定第26页/共90页27 main()int i=1,sum=0;loop:if(i101)sum=sum+i;i+;goto loop;printf(“SUM=%fn”,sum);loop:sum=sum+i;i+;if(i101)gotoloop;第27页/共90页285.5break语句和continue语句break语句一般形式:break;break;功能:跳出所在的多分支switch语句跳出所在的while、do-while、
19、for循环语句(提前结束循环)。continue语句一般形式:continue;continue;功能:提前结束本次循环体的执行,接着进行下一次循环条件的判别。第28页/共90页29break语句main()int i;for(i=1;i=5;i+)printf(n%5d,i);printf(%5d,i);main()int i;for(i=1;i=5;i+)printf(n%5d,i);if(i=3)break;if(i=3)break;printf(n%d,i);111122223333444455551111222233当当i=3i=3时时,结束循环结束循环第29页/共90页30cont
20、inue语句main()int i;for(i=1;i=5;i+)printf(n%5d,i);printf(%5d,i);main()int i;for(i=1;i=5;i+)printf(n%5d,i);if(i=3)if(i=3)continue;continue;printf(n%d,i);11112222333344445555 111122223344445555当当i=3i=3时时,结束本次结束本次循环体循环体的执行的执行第30页/共90页31break与continue的区别for(e1;e2;e3)if(e)break;if(e)break;for(e1;e2;e3)if(e
21、)continue;if(e)continue;计算计算e1e1e2e2语句语句非00e e非0语句语句计算计算e3e30breakbreak语句语句语句语句0计算计算e1e1e2e2语句语句非00e e非0语句语句计算计算e3e3continuecontinue语句语句循循环环体体第31页/共90页32例(ch5_05.c)输出110中不是3的倍数的数。main()int n;for(n=1;n=10;n+)if(n%3=0)breakbreak;printf(“%d,”,n);输出:1,2,continue;输出:1,2,4,5,7,8,10,第32页/共90页33main()main()
22、inti,num=0,a;inti,num=0,a;floatsum=0;floatsum=0;for(i=1;i=10;i+)for(i=1;i=10;i+)scanf(%d,&a);scanf(%d,&a);if(a=0)if(a=0)continue;continue;num+;num+;sum+=a;sum+=a;printf(“num=%dprintf(“num=%d,aver=%6.2fn,num,sum/num);aver=%6.2fn,num,sum/num);例求输入的十个整数中正数个数及其平均值。(ch5_06.cch5_06.c)num=0,sum=0num=0,sum=
23、0输入整数输入整数a ai=10i=10a=0a=0Y YN Nnum+num+sum+=asum+=ai+i+i=1i=1第33页/共90页345.6 循环的嵌套三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环嵌套循环的执行流程嵌套循环的跳转禁止:禁止:从外层跳入内层跳入同层的另一循环(1)while()while().(2)dodowhile();.while();(3)while()dowhile();.(4)for(;)dowhile();while().内内循循环环外循环外循环内内循循环环第34页/共90页35()当当外外层层循循环环结结构构每每执执行行一一次次循循环环时时,
24、内内层层循循环环结结构构在在一一般般情情况况下下要要从循环的开始到循环的正常结束从头到尾执行一遍从循环的开始到循环的正常结束从头到尾执行一遍。例例11()在在内内层层循循环环结结构构中中使使用用breakbreak语语句句可可以以提提前前结结束束本本次次内内层层循循环环结结构构的执行,而不影响外层循环结构的继续执行的执行,而不影响外层循环结构的继续执行。例例22()如如果果程程序序因因某某种种原原因因需需要要从从内内层层循循环环体体跳跳出出整整个个循循环环结结构构,此此时时才才可考虑使用可考虑使用 gotogoto语句。语句。例例33()()对于并列的循环结构,控制循环执行的变量名字可以相同。
25、对于并列的循环结构,控制循环执行的变量名字可以相同。在嵌套在嵌套循环结构中,循环结构中,内、外层控制循环执行的变量名字不能相同。内、外层控制循环执行的变量名字不能相同。例例4 4 对于嵌套循环结构的几点说明:对于嵌套循环结构的几点说明:第35页/共90页36例例1:main()inti,j;for(i=0;i3;i+)for(j=1;j=4;j+)printf(%d,j);printf(n);运行后,运行后,输出:输出:123412341234例例2:main()inti,j;for(i=0;i3;i+)for(j=1;j=4;j+)printf(%d,j);if(!(j%3)break;pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 学习
限制150内