第05章循环结构程序设计.ppt
《第05章循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第05章循环结构程序设计.ppt(38页珍藏版)》请在课桌文档上搜索。
1、C程序设计循环程序设计,While、do-while、for语句 循环嵌套 Break、continue、goto语句 exit()函数 循环结构类型的选择及转换 循环结构程序设计举例 本章小结,学习目标,理解循环结构的含义;掌握C语言三种循环结构的特点;掌握while、do-while、for、goto、break、continue语句的使用方法;掌握不同循环结构的选择及其转换方法;掌握混合控制结构程序设计的方法。,学习内容,循环结构的程序设计,1.while语句,一般形式:,while(表达式)循环体语句;,执行流程:,expr,循环体,语句,其中:while后面的括号()不能省。whil
2、e后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。表达式的值是是循环的控制条件。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,特点:先判断表达式,再执行循环体,【例】用while语句求1100的累计和。,#include void main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(sum=%dn,sum);,循环初值,循环终值,循环条件,循环体,循环变量增值,运行结果:sum=5050,【例】显示110的平方,#include void main()int i=1;while(i=10)printf(%d*%d=
3、%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,(1)如果while后的表达式的值一开始就为假,循环体将一次也不执行。(2)循环体中的语句可为任意类型的C语句。(3)遇到下列情况,退出while循环:表达式为假(为0)。循环体内遇到break、return或goto语句(break和goto语句将在随后介绍)。,while语句注意事项,int a=0,b=0;while(a 0)/a 0为假,b+不可能执行 b+;,int num=0;/字符计数while(1)if(getch
4、e()=n)/如果输入的字符是回车符,则返回 return;num+;,(4)在执行while语句之前,循环控制变量必须初始化,否则执行的结果将是不可预知的。(5)要在while语句的某处(表达式或循环体内)改变循环控制变量,否则极易构成死循环。(6)允许while语句的循环体又是while语句,从而形成双重循环。,例:计算10!#include void main()int i;/i应赋初始值10 long s=1;while(i=1)s*=i-;printf(10!=%ldn,s);,i=1;while(i 100)/死循环,因为i的值没变化,永远小于100 sum+=i;printf(s
5、um=%dn,sum);,i=1;while(i=9)j=1;while(j=9)printf(%d*%d=%dn,i,j,i*j);j+;i+;,while语句注意事项,do_while语句,一般形式:,do 循环体语句;while(表达式);,执行流程:,其中:while后面的括号()不能省。while最后面的分号;不能省。while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。表达式的值是是循环的控制条件。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,expr,循环体,语句,特点:先执行循环体,再判断表达式,用do_while语句求1100的累计和。,
6、#include void main()int i=1,sum=0;do sum+=i;i+;while(i=100);printf(sum=%dn,sum);,运行结果:sum=5050,do_while语句注意事项,int a=0,b=0;do b+;while(a 0);,(1)如果do-while后的表达式的值一开始就为假,循环体还是要执行一次。(2)在if语句、while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面则必须加分号,否则将产生语法错误。(3)循环体中的语句可为任意类型的C语句。(4)和while语句一样,在使用do-while语句时,不要忘记初始化
7、循环控制变量,否则执行的结果将是不可预知的。(5)要在do-while语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。(6)do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。,main()int k,n;float sum;sum=0;k=1;scanf(“%d”,【例】计算数列,的前 n 项和。,解:用do语句描述该问题,for语句,一般形式:,for(表达式1;表达式2;表达式3)循环体语句;,执行流程:,其中:for后面的括号()不能省。表达式1:一般为赋值表达式,给控制变量赋初值。表达式2:关系表达式或逻辑表达式,循环控制条件。表达式3
8、:一般为赋值表达式,给控制变量增量或减量。表达式之间用分号分隔。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,expr2,循环体,语句,expr1,expr3,for语句很好地体现了正确表达循环结构应注意的三个问题:控制变量的初始化。循环的条件。循环控制变量的更新。,【例】用for语句求1100的累计和。,#include void main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(sum=%dn,sum);,运行结果:sum=5050,for语句注意事项,例:计算1*2+3*4+5*6+99*100。int i,j;long su
9、m=0;for(i=1,j=2;i=99;i=i+2,j=j+2)sum+=i*j;printf(sum=%ldn,sum);,(1)表达式1、表达式2、和表达式3可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。,逗号表达式,逗号表达式,#include void main()int i,sum=0;i=1;for(;i=100;i+)sum+=i;printf(sum=%dn,sum);,#include void main()int i,sum=0;i=1;for(;i=100;)sum+=i+;printf(sum=%dn,sum);,f
10、or语句注意事项,省掉表达式1,3,省掉表达式1,(2)表达式1、表达式2、和表达式3都是任选项,可以省掉其中的一个、两个或全部,但其用于间隔的分号是一个也不能省的。,#include void main()int i,sum=0;i=1;for(;)if(i 100)break;sum+=i+;printf(sum=%dn,sum);,省掉表达式1,2,3,for(a=1;a+)printf(,(3)表达式2如果为空则相当于表达式2的值是真。,死循环!,(4)循环体中的语句可为任意类型的C语句。(5)for语句也可以组成多重循环,而且也可以和while语句和do-while语句相互嵌套。(6
11、)循环体可以是空语句。,例:计算用户输入的字符数(当输入是回车符时统计结束)。#include void main()int n=0;printf(input a string:n);for(;getchar()!=n;n+);printf(%d,n);,表示循环体为空语句,并非表示for语句结束,for语句注意事项,三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程,(1)while()while().,(2)do do while();.while();,(3)while()do while();.,嵌套循环的跳转禁止:从外层跳入内层 跳入同层的
12、另一循环 向上跳转,循环嵌套,【例】循环嵌套,输出九九表,#include void main()int i,j;for(i=1;i 10;i+)printf(%4d,i);printf(n-n);for(i=1;i 10;i+)for(j=1;j 10;j+)printf(j=9)?%4dn:%4d,i*j);,for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);,break与continue语句,break语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:(1)break不能用于循环语句和switch语句之外
13、的任何其它语句之中。(2)break只能终止并跳出最近一层的结构。,while(表达式1)if(表达式2)break;语句,do if(表达式2)break;while(表达式1);语句,for(;表达式1;)if(表达式2)break;语句,【例】将用户输入的小写字母转换成大写字母,直到输入非小写字母字符。,#include void main()char c;while(1)c=getchar();/读取一个字符 if(c=a/循环退出,运行结果:howareyouHOWAREYOU,方法:通过设置一标志变量tag,然后在每层循环后加上一条语句:if(tag)break;其值为1表示跳出循
14、环体,为0则不跳出。,for()while()if()break;while循环后的第一条语句,int tag=0;for()while()if()tag=1;break;if(tag)break;for循环后的第一条语句,多重循环中,break的使用,问:在嵌套循环的情况下,如何让break语句跳出最外层的的循环体?,功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。说明:(1)仅用于循环语句中。(2)在嵌套循环的情况下,continue语句只对包含它的最内层的循环体语句起作用。,for()while()if()continue;while循环后的第一条语句,c
15、ontinue语句,【例】求输入的十个整数中正数的个数及其平均值。,#include void main()int i,a,num=0;float sum=0;for(i=0;i 10;i+)scanf(%d,运行结果:8 plus integers sum:45average value:5.63,假设输入的10个整数为:2 3 4 5 6 7 8 9 10,goto语句,一般形式:,goto 语句标号;语句标号:,语句标号:goto 语句标号;,或,说明:,语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。,作用
16、:,goto语句的作用是在不需要任何条件的情况下直接使程序跳转到该语句标号所标识的语句去执行。,goto语句的应用,例:求1100的累计和#include void main()int i=1,sum=0;loop:sum+=i+;if(i=100)/如果i小于或等于100 goto loop;/转到标号为loop的语句去执行 printf(sum=%dn,sum);,(1)goto语句可与条件语句配合使用来实现条件转移,构成循环。(2)在嵌套循环的情况下,利用goto语句可以直接从最内层的循环体跳出最外层的循环体。,int tag=0;for()while()if()goto stop;st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 05 循环 结构 程序设计
链接地址:https://www.desk33.com/p-675592.html