C语言05循环结构.ppt
《C语言05循环结构.ppt》由会员分享,可在线阅读,更多相关《C语言05循环结构.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C Programming Language循环结构程序设计循环结构程序设计C C 语言程序设计语言程序设计 Lecture 5Lecture 5C Programming Language2 2循环结构循环结构 循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。在C语言中可以用以下语句来实现循环:1、用while语句;2、用do-while语句;3、用for语句;4、用goto语句和if语句构成循环。C Programming Language3 35.1 while语句语句 1、while 语句 常称为“当型”循环语句。循环体循环体循环体循环体非零非零非零非零零
2、零零零表达式表达式表达式表达式C Programming Language4 42、while 语句的形式:while(表达式)循环体;特点:先判断表达式,后执行语句。说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;C Programming Language5 5例例(ch5_01.c)求)求1+2+3+4+5+100。#include#include main()main()int i,sum=0;int i,sum=0;i=1;i=1;while(i=10
3、0)while(i=100)sum=sum+i;sum=sum+i;i+;i+;printf(%d,sum);printf(%d,sum);循环初值循环初值循环初值循环初值循环终值循环终值循环终值循环终值循环变量增值循环变量增值循环变量增值循环变量增值 循环条件循环条件循环条件循环条件循环体循环体循环体循环体求求求求1010!C Programming Language6 6例例(ch5_02.c)显示)显示110的平方的平方#include main()int i=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;运行结果:运行结果:1*1=12*2=43*
4、3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100C Programming Language7 75.2 do-while语句语句1、do-while语句 常称为“直到型”循环语句。循环体循环体循环体循环体非零非零非零非零零零零零表达式表达式表达式表达式C Programming Language8 82、do-while的形式:do 循环体;while(表达式);特点:先执行,后判断。说明:至少执行一次循环体dowhile可转化成while结构例(ch5_03.c)用dowhile求1+2+3+4+5+100。C Programming Lan
5、guage9 9main()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);C Programming Language10105.3 for语句语句1、C语言中最灵活、最语言中最灵活、最复杂的循环语句;复杂的循环语句;表达式表达式表达式表达式1 1表达式表达式表达式表达式2 2循环体语句循环体语句循环体语句循环体语句表达式表达式表达式表达式3 34 可以用于循环次数可以用于循环次数确定的情况
6、;确定的情况;4 可以用于循环次数可以用于循环次数不确定的情况;不确定的情况;4 可实现可实现while和和do-while语句的所有语句的所有功能。功能。非零非零非零非零零零零零C Programming Language11112、for的形式:for(表达式1;表达式2;表达式3)循环体 说明:forfor语句中语句中expr1,expr2,expr3expr1,expr2,expr3类型任意,都可类型任意,都可省略,但分号;不可省省略,但分号;不可省无限循环无限循环:for(;):for(;)forfor语句可以转换成语句可以转换成whilewhile结构结构 循环变量循环变量赋初值赋
7、初值循环终止循环终止条件条件循环变量循环变量控制控制C Programming Language1212sum=0;for(i=1;i=100;i+)sum=sum+i;它相当于以下语句:sum=0;i=1;while(i=100)sum=sum+i;i+;表达式表达式1;while(表达式(表达式2)语句;语句;表达式表达式3;C Programming Language1313 3、for语句中表达式的省略语句中表达式的省略(1)for语句一般形式中的“表达式1”可以省略;如:如:sum=0;i=1;sum=0;i=1;for(;i=100;i+)for(;i100)break;C Pro
8、gramming Language1414(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和表达式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+;C Programming Langua
9、ge1616(6)循环体为空语句对for语句,循环体为空语句的一般形式为:for(表达式1;表达式2;表达式3);如:如:for(sum=0,i=1for(sum=0,i=1;i=100ib&xy;)3.字符表达式字符表达式:for(;(c=getchar()!=n;)printf(“%c”,c);C Programming Language1818例例 输入输入30个个09的字符数字,计算数字的字符数字,计算数字串中有多少个奇数,偶数和零串中有多少个奇数,偶数和零.思路:1.输入30个字符数字charnum,而不是整数2.30个字符的输入和30个数字的输入的区别字符可以连续输入30个0097
10、64146589.数字输入必须是用空格,Tab键或回车隔开0097641465893.将字符变成数字后判断奇偶i=num-0;字符数字的ASCII码:48495051525354555657C Programming Language1919步骤:步骤:1.1.计数变量计数变量n1,n2,n3n1,n2,n3初始值初始值设为零;设为零;2.2.输入输入1 1个字符个字符numnum;3.3.循环变量初值为循环变量初值为1 1;4.4.若若i=30,i=30,重复重复字符变成数字,字符变成数字,num=num-0num=num-0判断判断numnum是否为是否为0 0判断判断numnum2 2的
11、值的值循环变量循环变量i+i+再再输入输入1 1个字符个字符numnum5.5.输出输出n1,n2,n3n1,n2,n3的值。的值。输入输入输入输入num n1=0,n2=0,n3=0i=1i=30num=num-0num%2n1+n2+n3+输出输出输出输出n1,n2,n3 的值的值的值的值num=0YNi+输入输入输入输入num YNC Programming Language2020259718528637908300264710031993 there are 9 evens,5 zeros,16 odds.main()int i,n1=0,n2=0,n3=0;char num;sca
12、nf(“%c”,&num);for(i=1;i=30;i+)num=num-0;if(num=0)n1+;else if(num%2)n2+;else n3+;scanf(“%c”,&num);printf(There are%2d evens,%2d odds,%2d zeros”,n3,n2,n1);C Programming Language2121解题思路解题思路1.每当我们读入一张选票,只有每当我们读入一张选票,只有6种种情况,将它们加到相应的人选上。情况,将它们加到相应的人选上。2.-1结束循环结束循环3.case语句作为开关。语句作为开关。例例 统计选票。现有选票如下统计选票。现
13、有选票如下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为废票,谁会当选?为废票,谁会当选?C Programming Language2222main()int vote,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)case 1:l_vote+;break;case 2:z_vote
14、+;break;case 3:w_vote+;break;case 0:case 4:invalidvote+;break;scanf(“%d”,&vote);printf(Li%2d,zhang%d2d,wang%2d,invalid%2d”,l_vote,z_vote,w_vote,invalidvote);C Programming Language2323 例 输入一个整数,计算它的位数.并反向输出.分析:设一个数13579,一位一位地切下末位循环结束条件:num=0;同时计数count=count+1;135 135 1357 1357 1357913579 7 7bitbitbit
15、bit 9 9 5 5bitbit1313bitbit1 1 bitbitbit=num%10 num=num/101357 1357 9 9135 135 7 713 13 5 5count=0;输入输入numnum!=0输出输出num%10count+num=num/10输出输出count 3 31 1 3 3C Programming Language2424main()main()long num;long num;int count=0;int count=0;printf(“Please enter an integer:n”);printf(“Please enter an in
16、teger:n”);scanf(“%ld”,&num);scanf(“%ld”,&num);do do printf(“%d”,num%10);printf(“%d”,num%10);num=num/10;num=num/10;count +;count +;while(num!=0);while(num!=0);printf(“%d digits.”,count);printf(“%d digits.”,count);Please enter an integer:Please enter an integer:3829 3829 9283 4 digits.9283 4 digits.C
17、Programming Language2525例例 请说明程序功能。请说明程序功能。main()inti;for(i=32;i256;i+)if(i%8=0)printf(“n”);printf(“%4d%c”,i,i);C Programming Language2626例例 求求fibonacci数列数列1,1,2,3,5,8,的前的前20项。项。fibonacci数列满足下面数列满足下面递归关系递归关系:F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n3)a=1,b=1for i=1 to 10输出输出a,ba=a+bb=b+a分析:分析:1 1 2 3 5 8
18、131 1 2 3 5 8 13 a+ba+ba a b+a b+a b b a+ba+b a a b+a b+a b b C Programming Language2727main()inti,a,b,k=0;a=b=1;for(i=1;i=10;i+)printf(%10d%10d,a,b);a=a+b;b=a+b;k+=2;if(k%4=0)printf(n);1 11 12 23 35 58 813132121343455558989144144233233377377610610987987C Programming Language28285.4 goto语句语句1、无条件转移语
19、句;形式:goto标号;2、有标号的语句称为标号语句;形式:标号:语句;3、goto语句在使用时只能转移到goto所在的函数内的标号处,不能转移到该函数外;4、可以从多重循环的内层转移到最外层,而break只能跳出一层循环。满足标识符的规定满足标识符的规定满足标识符的规定满足标识符的规定C Programming Language2929main()main()inti=1,sum=0;inti=1,sum=0;loop:if(i101)loop:if(i101)sum=sum+i;sum=sum+i;i+;i+;gotoloop;gotoloop;printf(“SUM=%fn”,sum);
20、printf(“SUM=%fn”,sum);loop:sum=sum+i;i+;if(i101)goto loop;C Programming Language30305.5 break语句和语句和continue语句语句break语句一般形式一般形式:break;break;功能功能:跳出所在的多分支跳出所在的多分支switchswitch语句语句跳出所在的跳出所在的whilewhile、do-whiledo-while、forfor循环语句(提循环语句(提前结束循环)。前结束循环)。continue语句一般形式一般形式:continue;continue;功能功能:提前结束本次循环体的执行
21、,接着进行下一次提前结束本次循环体的执行,接着进行下一次循环条件的判别。循环条件的判别。C Programming Language3131break语句语句main()main()inti;inti;for(i=1;i=5;i+)for(i=1;i=5;i+)printf(n%5d,i);printf(n%5d,i);printf(%5d,i);printf(%5d,i);main()main()inti;inti;for(i=1;i=5;i+)for(i=1;i=5;i+)printf(n%5d,i);printf(n%5d,i);if(i=3)break;if(i=3)break;pri
22、ntf(%d,i);printf(%d,i);1 11 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 1 11 1 2 2 2 2 3 3当当当当i=3i=3时时时时,结束循环结束循环结束循环结束循环C Programming Language3232continue语句语句main()main()inti;inti;for(i=1;i=5;i+)for(i=1;i=5;i+)printf(n%5d,i);printf(n%5d,i);printf(%5d,i);printf(%5d,i);main()main()inti;inti;for(i=1;i=5;i+)for(
23、i=1;i=5;i+)printf(n%5d,i);printf(n%5d,i);if(i=3)if(i=3)continue;continue;printf(%d,i);printf(%d,i);1 11 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 1 11 1 2 2 2 2 3 3 4 4 4 4 5 5 5 5当当当当i=3i=3时时时时,结束本次结束本次结束本次结束本次循环体循环体循环体循环体的执行的执行的执行的执行C Programming Language3333break与与continue的区别的区别for(e1;e2;e3)for(e1;e2;e3)
24、if(e)break;if(e)break;for(e1;e2;e3)for(e1;e2;e3)if(e)continue;if(e)continue;计算计算计算计算e1e1e2e2语句语句语句语句非00e e非0语句语句语句语句计算计算计算计算e3e30breakbreak语句语句语句语句0计算计算计算计算e1e1e2e2语句语句语句语句非00e e非0语句语句计算计算e3e3continuecontinue语句语句循循环环体体C Programming Language3434例(ch5_05.c)输出110中不是3的倍数的数。main()main()intn;intn;for(n=1;
25、n=10;n+)for(n=1;n=10;n+)if(n%3=0)if(n%3=0)breakbreak;printf(“%d,”,n);printf(“%d,”,n);输出:输出:1,2,continue;输出:输出:1,2,4,5,7,8,10,C Programming Language3535main()inti,num=0,a;floatsum=0;for(i=1;i=10;i+)scanf(%d,&a);if(a=0)continue;num+;sum+=a;printf(“num=%d,aver=%6.2fn,num,sum/num);例例 求输入的十个整数中正数个数及其平均值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 05 循环 结构
限制150内