(精品)c5第五章循环结构 (2).ppt
《(精品)c5第五章循环结构 (2).ppt》由会员分享,可在线阅读,更多相关《(精品)c5第五章循环结构 (2).ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C Programming Language循环结构程序设计循环结构程序设计C 语言程序设计语言程序设计 Lecture5C Programming Language循环结构循环结构 循环循环:就是在给定的条件成立时反复就是在给定的条件成立时反复执行某一程序段,被反复执行的程序执行某一程序段,被反复执行的程序段称为段称为循环体循环体。在在C语言中可以用以下语句来实现循语言中可以用以下语句来实现循环:环:1、用、用while语句;语句;2、用、用do-while语句;语句;3、用、用for语句;语句;4、用、用goto语句和语句和if语句构成循环语句构成循环。2 2C Programming L
2、anguage5.1 while语句语句 1、while 语句语句 常称为常称为“当型当型”循环语句。循环语句。循环体循环体循环体循环体非零非零非零非零零零零零表达式表达式表达式表达式3 3C Programming Language2、while 语句的形式:语句的形式:while(表达式)表达式)循环体;循环体;特点:先判断表达式,后执行语句。特点:先判断表达式,后执行语句。说明:说明:循环体有可能一次也不执行循环体有可能一次也不执行循环体可为任意类型语句循环体可为任意类型语句下列情况,退出下列情况,退出while循环循环条件表达式不成立(为零)条件表达式不成立(为零)循环体内遇循环体内遇
3、break,return,goto无限循环无限循环:while(1)循环体循环体;4 4C Programming Language例例(ch5_01.c)求)求1+2+3+4+5+100。#include#include main()main()intinti,sum=0;i,sum=0;i=1;i=1;while(i=100)while(i=100)sum=sum+i;sum=sum+i;i+;i+;printf(%d,sumprintf(%d,sum););循环初值循环初值循环初值循环初值循环终值循环终值循环终值循环终值循环变量增值循环变量增值循环变量增值循环变量增值 循环条件循环条件循
4、环条件循环条件循环体循环体循环体循环体求求求求1010!5 5C Programming Language例例(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=8110*10=1006 6C Programming Language5.2 do-while语句语句1、do-while语句语句 常称为常称为“直到型直到型”循环语句。循环语句。循环体循环体循环体循
5、环体非零非零非零非零零零零零表达式表达式表达式表达式7 7C Programming Language2、do-while的形式:的形式:do 循环体;循环体;while(表达式);表达式);特点:先执行,后判断。特点:先执行,后判断。说明:说明:至少执行一次循环体至少执行一次循环体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);8 8C Programming Language 1
6、.循环体如果包含一个以上的语句,应该用循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现。花括号括起来,以复合语句形式出现。2.循环体中应有使循环趋于结束的语句。循环体中应有使循环趋于结束的语句。例:分析下列三个程序段例:分析下列三个程序段 注注:i=1;i=1;while(iwhile(i=100)=100)putcharputchar(*);(*);i+;i+;i=1;i=1;putcharputchar(*);(*);i+;i+;i=1;i=1;while(iwhile(i=100);=100);putcharputchar(*);i+;(*);i+;9 9C Prog
7、ramming Languagemain()inti,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(“%dn”,sum);main()inti,sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(“%dn”,sum);1010C Programming Language5.3 for语句语句1、C语言中最灵活、最语言中最灵活、最复杂的循环语句;复杂的循环语句;表达式表达式表达式表达式1 1表达式表达式表达式表达式2 2循环体语句循环体语句循环体语句循环体语句表达式表达式表达式表达式3 34 可以用于循环次数可以用于循
8、环次数确定的情况;确定的情况;4 可以用于循环次数可以用于循环次数不确定的情况;不确定的情况;4 可实现可实现while和和do-while语句的所有语句的所有功能。功能。非零非零非零非零零零零零1111C Programming Language2、for的形式:的形式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体循环体 说明:说明:forfor语句中语句中语句中语句中expr1,expr2,expr3expr1,expr2,expr3类型任意,都类型任意,都类型任意,都类型任意,都可省略,但分号;不可省可省略,但分号;不可省可省略,但分号;不可省可省略,但分号;不可省
9、无限循环无限循环无限循环无限循环:for(;):for(;)forfor语句可以转换成语句可以转换成语句可以转换成语句可以转换成whilewhile结构结构结构结构 循环变量循环变量赋初值赋初值循环终止循环终止条件条件循环变量循环变量控制控制1212C Programming Languagesum=0;for(i=1;i=100;i+)sum=sum+i;它相当于以下语句:它相当于以下语句:i=1;while(i=100)sum=sum+i;i+;表达式表达式1;while(表达式(表达式2)语句;语句;表达式表达式3;1313C Programming Language 3、for语句中表
10、达式的省略语句中表达式的省略(1)for语语句句一一般般形形式式中中的的“表表达达式式1”可可以以省略;省略;如:如:如:如:sum=0;i=1;sum=0;i=1;for(;i=100;i+)for(;i100)break;100)break;1414C Programming Language(3)表达式)表达式3也可以省略,但此时保证循环能也可以省略,但此时保证循环能正常结束。正常结束。如:如:如:如:for(sum=0,i=1;i=100;)for(sum=0,i=1;i=100;)sum=sum+i;sum=sum+i;i+;i+;(4)可以省略表达式可以省略表达式1和表达式和表达式
11、3,只有表达,只有表达式式2。如:如:如:如:i=1;sum=0;i=1;sum=0;i=1;sum=0;i=1;sum=0;for(;i=100;)for(;i=100;)while(i=100)while(i100)break;if(i100)break;sum=sum+i;i+;sum=sum+i;i+;1616C Programming Language(6)循环体为空语句)循环体为空语句对对for语句,循环体为空语句的一般形式为语句,循环体为空语句的一般形式为:for(表达式表达式1;表达式;表达式2;表达式;表达式3);如:如:如:如:for(sum=0,i=1for(sum=0,
12、i=1;i=100i=100;sum+=i,i+)sum+=i,i+);又如:又如:又如:又如:要在显示器上复制输入的字符要在显示器上复制输入的字符要在显示器上复制输入的字符要在显示器上复制输入的字符,输入的字符为输入的字符为输入的字符为输入的字符为.时时时时,结束循环。结束循环。结束循环。结束循环。while(putchar(getcharwhile(putchar(getchar()!=.);()!=.);输入输入abcdefg.输出输出abcdefg.1717C Programming Language例:例:例:例:#include#include main()main()intint
13、i;i;for(i=0;i10;i+)for(i=0;i10;i+)putchar(a+iputchar(a+i););运行结果:运行结果:abcdefghij例:例:例:例:#include#include main()main()intinti=0;i=0;for(;i10;)for(;i10;)putchar(a+(iputchar(a+(i+);+);例:例:例:例:#include#include main()main()intinti=0;i=0;for(;i10;putchar(a+i),i+)for(;i10;putchar(a+i),i+);例:例:例:例:#include#
14、include main()main()intinti=0;i=0;for(;i10;i+)for(;i10;i+)putchar(a+iputchar(a+i););1818C Programming Languagemain()main()intinti,j,k;i,j,k;for(ifor(i=1,j=100;i=j;i+,j-)=1,j=100;i=j;i+,j-)k=i+j;k=i+j;printf(%d+%dprintf(%d+%d=%dn,i,j,k);=%dn,i,j,k);#include#include main()main()charc;charc;for(;(c=for
15、(;(c=getchargetchar()!=n;)()!=n;)printf(%cprintf(%c,c);,c);#include#include main()main()intinti,c;i,c;for(i=0;(c=for(i=0;(c=getchargetchar()!=n;i+=3)()!=n;i+=3)printf(%cprintf(%c,i+c);,i+c);1919C Programming Language循环终止条件的种类:循环终止条件的种类:1.关系表达式关系表达式:如前几例如前几例2.逻辑表达式逻辑表达式:for(;ab&xy;)3.字符表达式字符表达式:for(;
16、(c=getchar()!=n;)printf(“%c”,c);2020C Programming Language例例输入输入30个个09的字符数字,计算数的字符数字,计算数字串中有多少个奇数,偶数和零字串中有多少个奇数,偶数和零.思路思路:1.输入输入30个字符数字个字符数字charnum,而不是整数而不是整数2.30个字符的输入和个字符的输入和30个数字的输入的区别个数字的输入的区别字符可以连续输入字符可以连续输入30个个009764146589.数字输入必须是用空格数字输入必须是用空格,Tab键或回车隔开键或回车隔开0097641465893.将字符变成数字后判断奇偶将字符变成数字后判
17、断奇偶i=num-0;字符数字的字符数字的ASCII码:码:484950515253545556572121C Programming Language步骤:步骤: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-0nu
18、m%2n1+n2+n3+输出输出输出输出n1,n2,n3的值的值的值的值num=0YNi+输入输入输入输入numYN2222C Programming Language259718528637908300264710031993thereare9evens,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,%2dod
19、ds,%2dzeros”,n1,n2,n3,);2323C Programming Language解题思路解题思路1.每当我们读入一张选票,只有每当我们读入一张选票,只有6种种情况,将它们加到相应的人选上。情况,将它们加到相应的人选上。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为废票,谁会当选?为废票,谁会当选?2424C Programming Langua
20、gemain()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_vote+;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
21、,w_vote,invalidvote);2525C Programming Language 例例 输入一个整数,计算它的位数输入一个整数,计算它的位数.并反向输出并反向输出.分析分析:设一个数设一个数13579,一位一位地切下末位一位一位地切下末位循环结束条件循环结束条件:num=0;同时计数同时计数count=count+1;13513513571357135791357977bitbitbitbit9955bitbit1313bitbit11bitbitbit=num%10 num=num/1013571357 9 91351357 713135 5count=0;输入输入numnum
22、!=0输出输出num%10count+num=num/10输出输出count3311332626C Programming Languagemain()main()longintnum;longintnum;intintcount=0;count=0;printf(“Pleaseenteraninteger:n”);printf(“Pleaseenteraninteger:n”);scanf(“%ld”,&num);scanf(“%ld”,&num);dodoprintf(“%d”,num%10);printf(“%d”,num%10);num=num/10;num=num/10;count+
23、;count+;while(num!=0);while(num!=0);printf(“%ddigits.”,count);printf(“%ddigits.”,count);Pleaseenteraninteger:Pleaseenteraninteger:38293829 92834digits.92834digits.2727C Programming Language5.4 goto语句语句1、无条件转移语句;无条件转移语句;形式:形式:goto标号;标号;2、有标号的语句称为标号语句;、有标号的语句称为标号语句;形式:形式:标号:语句;标号:语句;3、goto语句语句在使用时只能转移
24、到在使用时只能转移到goto所在所在的函数内的标号处,不能转移到该函数外;的函数内的标号处,不能转移到该函数外;4、可以从多重循环的内层转移到最外层,而可以从多重循环的内层转移到最外层,而break只能跳出一层循环。只能跳出一层循环。满足标识符的规定满足标识符的规定满足标识符的规定满足标识符的规定2828C Programming Languagemain()main()intinti=1,sum=0;i=1,sum=0;loop:if(i101)loop:if(i101)sum=sum+i;sum=sum+i;i+;i+;gotogotoloop;loop;printf(“SUMprintf
25、(“SUM=%fn”,sum);=%fn”,sum);loop:sum=sum+i;i+;if(i101)gotoloop;2929C Programming Language5.5 break语句和语句和continue语句语句break语句语句一般形式一般形式一般形式一般形式:break;break;功能功能功能功能:跳出所在的多分支跳出所在的多分支跳出所在的多分支跳出所在的多分支switchswitch语句语句语句语句跳出所在的跳出所在的跳出所在的跳出所在的whilewhile、do-whiledo-while、forfor循环语句循环语句循环语句循环语句(提前结束循环)。(提前结束循环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品c5第五章循环结构 2 精品 c5 第五 循环 结构
限制150内