第04章循环结构程序设计.ppt
《第04章循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第04章循环结构程序设计.ppt(37页珍藏版)》请在课桌文档上搜索。
1、循环结构程序设计,学习的意义,许多实际问题中往往需要有规律地重复某些操作,如菜谱中可以有:“打鸡蛋直到泡沫状”这样的步骤,也就是说,在鸡蛋没有打成泡沫状时要反复地打。相应的操作在计算机程序中就体现为某些语句的重复执行,这就时所谓的循环。,下面来思考一个问题:如何编程来计算1+2+3+100?,程序如下:int s=0;s=s+1;s=s+2;s=s+3;s=s+100;printf(“s=%d”,s);,重复100次,?,有!就是用循环来编程。,有没有更好的方法来计算呢?,While、do-while、for语句 循环嵌套 Break、continue、goto语句 exit()函数 循环结构
2、类型的选择及转换 循环结构程序设计举例 小结,学习目标,理解循环结构的含义;掌握C语言三种循环结构的特点;掌握while、do-while、for、goto、break、continue语句的使用方法;掌握不同循环结构的选择及其转换方法;掌握混合控制结构程序设计的方法。,学习内容,循环结构的程序设计,1.while语句,一般形式:,while(表达式)循环体语句;,执行流程:,其中:while后面的括号()不能省。while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。表达式的值是是循环的控制条件。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,特点:先判断表
3、达式,再执行循环体,【例】用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=%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)如
4、果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(getche()=n)/如果输入的字符是回车符,则返回 return;num+;,(4)在执行while语句之前,循环控制变量必须初始化,否则执行的结果将是不可预知的。(5)要在wh
5、ile语句的某处(表达式或循环体内)改变循环控制变量,否则极易构成死循环。(6)允许while语句的循环体又是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(sum=%dn,sum);,i=1;while(i=9)j=1;while(j=9)printf(%d*%d=%dn,i,j,i*j);j+;i+;
6、,【例】求两个正整数的最大公因子。我们采用Euclid(欧几里德)算法来求最大公因子,其算法是:(1)输入两个正整数m和n。(2)用m除以n,余数为r,如果r等于0,则n是最大公因子,算法结束,否则(3)。(3)把n赋给m,把r赋给n,转(2)。,#include void main()int m,n,r;printf(Please input two positive integer:);scanf(%d%d,运行结果:Please input two positive integer:24 56Their greatest common divisor is 8,2.do_while语句,
7、一般形式:,do 循环体语句;while(表达式);,执行流程:,其中:while后面的括号()不能省。while最后面的分号;不能省。while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。表达式的值是是循环的控制条件。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,特点:先执行循环体,再判断表达式,【例】用do_while语句求1100的累计和。,#include void main()int i=1,sum=0;do sum+=i;i+;while(i=100);printf(sum=%dn,sum);,运行结果:sum=5050,do_while语句注
8、意事项:,int a=0,b=0;do b+;while(a 0);,(1)如果do-while后的表达式的值一开始就为假,循环体还是要执行一次。(2)在if语句、while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面则必须加分号,否则将产生语法错误。(3)循环体中的语句可为任意类型的C语句。(4)和while语句一样,在使用do-while语句时,不要忘记初始化循环控制变量,否则执行的结果将是不可预知的。(5)要在do-while语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。(6)do-while语句也可以组成多重循环,而且也可以和while
9、语句相互嵌套。,3.for语句,一般形式:,for(表达式1;表达式2;表达式3)循环体语句;,执行流程:,其中:for后面的括号()不能省。表达式1:一般为赋值表达式,给控制变量赋初值。表达式2:关系表达式或逻辑表达式,循环控制条件。表达式3:一般为赋值表达式,给控制变量增量或减量。表达式之间用分号分隔。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,for语句很好地体现了正确表达循环结构应注意的三个问题:控制变量的初始化。循环的条件。循环控制变量的更新。,【例】用for语句求1100的累计和。,#include void main()int i,sum=0;for(i=1;i=
10、100;i+)sum+=i;printf(sum=%dn,sum);,运行结果:sum=5050,for语句注意事项:,例:计算1*2+3*4+5*6+99*100。int i,j;long sum=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;p
11、rintf(sum=%dn,sum);,#include void main()int i,sum=0;i=1;for(;i=100;)sum+=i+;printf(sum=%dn,sum);,for语句注意事项:,省掉表达式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语句注意事项:,for(a=1;a
12、+)printf(,(3)表达式2如果为空则相当于表达式2的值是真。,死循环!,(4)循环体中的语句可为任意类型的C语句。(5)for语句也可以组成多重循环,而且也可以和while语句和do-while语句相互嵌套。(6)循环体可以是空语句。,例:计算用户输入的字符数(当输入是回车符时统计结束)。#include void main()int n=0;printf(input a string:n);for(;getchar()!=n;n+);printf(%d,n);,表示循环体为空语句,并非表示for语句结束,三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套
13、循环的执行流程,(1)while()while().,(2)do do while();.while();,(3)while()do while();.,嵌套循环的跳转禁止:从外层跳入内层 跳入同层的另一循环 向上跳转,4.循环嵌套,【例】循环嵌套,输出九九表,#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
14、)?%4dn:%4d,i*j);,5.break与continue语句,break语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:(1)break不能用于循环语句和switch语句之外的任何其它语句之中。(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=get
15、char();/读取一个字符 if(c=a/循环退出,运行结果:howareyouHOWAREYOU,方法:通过设置一标志变量tag,然后在每层循环后加上一条语句:if(tag)break;其值为1表示跳出循环体,为0则不跳出。,for()while()if()break;while循环后的第一条语句,int tag=0;for()while()if()tag=1;break;if(tag)break;for循环后的第一条语句,多重循环中,break的使用,问:在嵌套循环的情况下,如何让break语句跳出最外层的的循环体?,continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进
16、行下一次是否执行循环体的判断。说明:(1)仅用于循环语句中。(2)在嵌套循环的情况下,continue语句只对包含它的最内层的循环体语句起作用。,for()while()if()continue;while循环后的第一条语句,【例】求输入的十个整数中正数的个数及其平均值。,#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,5.goto语句,一般形式:,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 循环 结构 程序设计
链接地址:https://www.desk33.com/p-675554.html