C语言05循环结构.ppt
《C语言05循环结构.ppt》由会员分享,可在线阅读,更多相关《C语言05循环结构.ppt(70页珍藏版)》请在三一办公上搜索。
1、循环结构程序设计,C 语言程序设计 Lecture 5,2,循环结构,循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。在C语言中可以用以下语句来实现循环:1、用while语句;2、用do-while语句;3、用for语句;4、用goto语句和if语句构成循环。,3,5.1 while语句,1、while 语句 常称为“当型”循环语句。,4,2、while 语句的形式:while(表达式)循环体;特点:先判断表达式,后执行语句。说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,
2、goto无限循环:while(1)循环体;,5,例(ch5_01.c)求1+2+3+4+5+100。,#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);,循环初值,循环终值,循环变量增值,求10!,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*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100,7,5
3、.2 do-while语句,1、do-while语句 常称为“直到型”循环语句。,8,2、do-while的形式:do 循环体;while(表达式);特点:先执行,后判断。说明:至少执行一次循环体dowhile可转化成while结构例(ch5_03.c)用dowhile求1+2+3+4+5+100。,9,main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(“%dn”,sum);,main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(“%dn”,sum);,10,5.3 for语
4、句,1、C语言中最灵活、最复杂的循环语句;,可以用于循环次数确定的情况;可以用于循环次数不确定的情况;可实现while和do-while语句的所有功能。,非零,零,11,2、for的形式:for(表达式1;表达式2;表达式3)循环体 说明:for语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省无限循环:for(;)for语句可以转换成while结构,12,sum=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;,13,3
5、、for语句中表达式的省略,(1)for语句一般形式中的“表达式1”可以省略;如:sum=0;i=1;for(;i=100;i+)sum=sum+i;(2)表达式2省略,即不判断循环条件,循环无终止地进行下去;如:for(sum=0,i=1;i+)sum=sum+i;,if(i100)break;,14,(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(i=100)sum=sum+i;sum=s
6、um+i;i+;i+;,15,(5)三个表达式都可省略,如:for(;)循环体;相当于 while(1)循环体;即不设初值,不判断条件,循环变量不增值。无终止地执行循环体。如:sum=0,i=1;for(;)if(i100)break;sum=sum+i;i+;,16,(6)循环体为空语句 对for语句,循环体为空语句的一般形式为:for(表达式1;表达式2;表达式3);如:for(sum=0,i=1;i=100;sum+=i,i+);又如:要在显示器上复制输入的字符,输入的字符为.时,结束循环。while(putchar(getchar()!=.);,输入abcdefg.输出abcdefg.
7、,17,循环终止条件的种类:1.关系表达式:如前几例2.逻辑表达式:for(;ab,18,例 输入30个09的字符数字,计算数字串中有多少个奇数,偶数和零.思路:输入30个字符数字char num,而不是整数30个字符的输入和30个数字的输入的区别 字符可以连续输入30个 009764146589.数字输入必须是用空格,Tab键或回车隔开 0 0 9 7 6 4 1 4 6 5 8 9 将字符变成数字后判断奇偶 i=num-0;字符数字的ASCII码:48 49 50 51 52 53 54 55 56 57,19,步骤:计数变量n1,n2,n3初始值设为零;输入1个字符num;循环变量初值为
8、1;若i=30,重复字符变成数字,num=num-0判断num是否为0判断num2的值循环变量i+再输入1个字符num输出n1,n2,n3的值。,输入num,n1=0,n2=0,n3=0,i=1,i=30,num=num-0,num%2,n1+,n2+,n3+,输出n1,n2,n3 的值,num=0,Y,N,i+,输入num,Y,N,20,main()int i,n1=0,n2=0,n3=0;char num;scanf(“%c”,21,解题思路每当我们读入一张选票,只有6种情况,将它们加到相应的人选上。-1结束循环case语句作为开关。,例 统计选票。现有选票如下3,1,2,1,1,3,3,
9、2,1,2,3,3,2,1,1,3,2,0,1,4,-1.-1是结束标志。设1选李,2选张,3选王,0和4为废票,谁会当选?,22,main()int vote,l_vote,z_vote,w_vote,invalidvote;l_vote=0;z_vote=0;w_vote=0;invalidvote=0;scanf(“%d”,23,例 输入一个整数,计算它的位数.并反向输出.分析:设一个数13579,一位一位地切下末位循环结束条件:num=0;同时计数 count=count+1;,135,1357,13579,7,9,5,13,bit,bit=num%10,num=num/10,1357
10、,9,135,7,13,5,3,1,3,24,main()long num;int count=0;printf(“Please enter an integer:n”);scanf(“%ld”,25,例 请说明程序功能。,main()int i;for(i=32;i256;i+)if(i%8=0)printf(“n”);printf(“%4d%c”,i,i);,26,例 求fibonacci数列1,1,2,3,5,8,的前20项。fibonacci数列满足下面递归关系:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n3),分析:1 1 2 3 5 8 13 a+ba b+a
11、b a+b a b+a b,27,main()int i,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);,28,5.4 goto语句,1、无条件转移语句;形式:goto 标号;2、有标号的语句称为标号语句;形式:标号:语句;3、goto语句在使用时只能转移到goto所在的函数内的标号处,不能转移到该函数外;4、可以从多重循环的内层转移到最外层,而break只能跳出一层循环。,满足标识符的规定,29,main()int i=1,sum=0;loop:if(i101)su
12、m=sum+i;i+;goto loop;printf(“SUM=%fn”,sum);,30,5.5 break语句和continue语句,break语句一般形式:break;功能:跳出所在的多分支switch语句跳出所在的while、do-while、for循环语句(提前结束循环)。continue语句一般形式:continue;功能:提前结束本次循环体的执行,接着进行下一次循环条件的判别。,31,break语句,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
13、(n%5d,i);if(i=3)break;printf(%d,i);,1 1 2 2 3 3 4 4 5 5,1 1 2 2 3,当i=3时,结束循环,32,continue语句,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)continue;printf(%d,i);,1 1 2 2 3 3 4 4 5 5,1 1 2 2 3 4 4 5 5,当i=3时,结束本次循环体的执行,33,break与continue的区别,for(
14、e1;e2;e3)if(e)break;,for(e1;e2;e3)if(e)continue;,34,例(ch5_05.c)输出110中不是3的倍数的数。main()int n;for(n=1;n=10;n+)if(n%3=0)break;printf(“%d,”,n);,输出:1,2,,输出:1,2,4,5,7,8,10,35,main()int i,num=0,a;float sum=0;for(i=1;i=10;i+)scanf(%d,例 求输入的十个整数中正数个数及其平均值。,36,5.6 循环的嵌套,三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环嵌套循环的执行流程嵌套循环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 05 循环 结构
链接地址:https://www.31ppt.com/p-6503717.html