第四章循环结构_第1页
第四章循环结构_第2页
第四章循环结构_第3页
第四章循环结构_第4页
第四章循环结构_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. while循环语句结构2. do-while循环结构3. for循环语句结构4. break和continue语句的作用5. 循环结构的嵌套循环循环就是重复地执行某些语句。程序中的循环次数是有限的,循环次数是有限的,由循环条件决定可以确定循环次数。 C语言提供了3种循环结构语句: while语句 do_while语句 for语句while语句的一般形式为: while() 循环语句; 循环变量表达式; 和一起构成循环体语句。while语句的语法功能:1计算的值,若该值为“假”,则跳出循环,执行循环体后面的语句;若该值为“真”,则执行循环体语句。2重复步骤1的操作。while语句的流程图如

2、图所示 while() 循环语句; 循环变量表达式; 关于while语句的几点说明。1不可缺少,其作用是更新计算循环变量的值,使循环能正常结束。2若没有,则有可能会使程序出现无限循环而发生错误。3由于while循环是先判断的值,后决定是否执行,因此,有可能一次也没有执行。在在whilewhile结构中,对条件表达式的计算要比循环结构中,对条件表达式的计算要比循环体多执行一次体多执行一次。因为必有一次(最后一次)当条。因为必有一次(最后一次)当条件表达式为假时不执行循环体。件表达式为假时不执行循环体。在判断条件中使用计数器时要特别注意计数器处在判断条件中使用计数器时要特别注意计数器处于控制临界值

3、时的情形于控制临界值时的情形。这个问题看似很简单,。这个问题看似很简单,但若不注意,往往会导致循环体多执行一次,而但若不注意,往往会导致循环体多执行一次,而且这一错误还不易被发现。且这一错误还不易被发现。2021-7-8 void main() int k=1,sum=0; while(k=100) sum+=k; k+; printf(“nsum=%dn”,sum); 思考思考(1)若循环体中省略)若循环体中省略k+会出现什么结果会出现什么结果(2)若将)若将sum+=k与与k+顺序调换,结果有什么变化?顺序调换,结果有什么变化? 运行结果:运行结果: sum=5050 例例4-1 求前求前

4、100个自然数之和,即个自然数之和,即1+2+3+99+100分析:由题可知循环结束的条件是输入字符0,循环体是判断字符的大小写并进行相应处理。程序do_while语句的一般形式为: do while();do_while语句的语法功能:1执行,2计算; 若该表达式的值为“真”,则执行步骤1; 若该表达式的值为“假”,则退出循环语句结构。do_while语句的流程图如图所示注意:注意:要避免出现无限循环而发生错误。 表达式的值0 F T 例4-3:用do_while语句的形式实现1100的累加和。 分析:分析:循环变量i的值从1100递增,i的初值为1、终值为100, 累加器sum的初值为0

5、循环计算:sum=sum+i。算法流程图如图所示。 初始化循环变量 i=1 级数的和 sum=0 sum=sum+i; i+; i100 输出 sum T F 开始 结束 分析:底数规律从1开始,逐项加1;底数前面符号正负交叉,循环条件是底数小于等于11for语句是一种计数循环。循环次数由循环变量来控制。 for语句的一般形式为:for (;) for语句的3个重要的组成部分:1初始表达式初始化循环控制变量。2条件表达式测试循环条件。3循环表达式更新循环控制变量的值。for语句的语法功能:1计算的值。该表达式是对循环控制变量进行初始化。2判断的值。该表达式就是循环条件,若该表达式的值为“假”,

6、则退出循环,执行循环结构外的语句;若该表达式的值为“真”,则执行。3计算的值。该表达式更新循环控制变量的值。4转第2步。for (;) for语句的流程图:注意:若中有多条语句,则构成复合语句,被包含在一对花括号中。若只有一条,可以不使用花括号。 初始表达式 条件表达式 语句体 循环表达式 F T #includevoid main()int k,sum;for(k=1,sum=0;k=100;k+)sum+=k;printf(dsum=%dn,sum);k=1,sum=0开始K=100sum+=k输出sum分析:所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身。从100开始逐个判断每

7、个三位数是否符合水仙花规律,问题的另一个要点是分解出个位数、十位数和百位数#includevoid main() int k,ge,shi,bai; for(k=100;k1000;k+) ge=k%10; shi=k/10%10; bai=k/100; if(k=ge*ge*ge+shi*shi*shi+bai*bai*bai) printf(n%d,k); for语句所具有的特性。1可以省略,但须保留分号(;),同时在for之前必须给循环控制变量赋值,形式为: ; for for(; ) 2一般不可省略,否则为无限循环。例如: forfor(i=1; i+i=1; i+) sum =sum

8、+i;sum =sum+i;相当于条件总为真,程序会一直不停地执行直到“数据溢出”。3亦可省略,但在循环语句体中必须有语句来修改循环变量,以使条件表达式的值在某一时刻为假,使程序能正常结束循环。 例如:for(sum=0, i=1; i=100;)for(sum=0, i=1; i=100;) sum = sum +i; sum = sum +i; i+;i+; 43个表达式均省略,即for(;),为无限循环,程序中要避免避免这种情况的发生。5条件表达式可以是关系表达式、数值表达式。只要表达式的值不等于零,就执行循环体语句。 如: for( i=0; for( i=0; (c=getchar(

9、)!=n(c=getchar()!=n;i+=c);i+=c);6初始表达式、循环表达式可以是逗号表达式,用来完成逗号表达式中各表达式的功能。例如: for (sum=0, i=1; i=100; i+, i+)for (sum=0, i=1; i=100; i+, i+)相当于: sum=0;sum=0; for(i=1; i=100; i=i+2) for(i=1; i=100; i=i+2) 7for循环也可以嵌套,执行时是先执行最里层的循环,再执行其外一层的循环。几种循环的特点比较: do_while与while和for循环的区别: do_while循环中的至少会执行一次; 而whil

10、e和for循环中的有可能一次也不被执行。 for循环和while循环的算法流程图描述是一致的。 for循环适合于循环次数确定的情况。 对大多数问题,do_while、while和for循环是可以互换的。循环结构的嵌套,指的是在某一种循环结构的语句中包含有另一个循环结构。理论上,循环嵌套的深度不受限制,但实际中不提倡使用嵌套层次太多的循环结构。循环结构嵌套时,要注意: 嵌套的层次不能交叉; 嵌套的内外层循环不能使用同名的循环变量; 并列结构的内外层循环允许使用同名的循环变量。运行结果#includevoid main() int i,j; for(i=0;i3;i+) printf(n oute

11、r loop i=%d:,i); for(j=0;j3;j+)printf(j=%5d,j);例例4-94-9:编写程序,在屏幕上输出阶梯形式的乘法口诀表。分析;分析;乘法口诀表可以由9行9列来表示,其中第i行有i列。利用循环嵌套,算法流程图如图所示: i=1 i9 i+ 定义循环变量 i, j j=1 ji 输出 j*i 的值 j+ 换行 F F T 开始 结束 T #includevoid main()int i,j,k;for(i=1;i10;i+)for(j=1;j=i;j+)k=i*j; printf(%d*%d=%-5d,j,i,k);printf(n);运行结果1 1breakb

12、reak语句语句break语句可用于分支结构和循环语句结构。break语句的作用: 跳出当前的控制结构。 在循环语句中,要谨慎使用break语句。 常用于循环语句体内某一个if条件分支的语句中,用来表示在循环过程中满足某一条件时,结束循环。break语句流程图例4-11阅读程序并解释程序的功能分析:素数指的是大于1,且除了1和它本身外,不能被其他数整除的数。判断方法为:从2开始到本身数之间是否存在某个数可以被该数整除,只要存在一个,则证明它不是一个素数。#includevoid main() int m,k; printf(请输入一个整数); scanf(%d,&m); if(m=1) pri

13、ntf(输入有误); else for(k=2;k=m) printf(%d是一个素数,m); else printf(%d不是一个素数,m)2 2continuecontinue语句语句continue语句的一般形式为: continue;continue的语法规则: 结束本次循环,提前进入下一轮循环。注意:注意: continue语句不会跳出循环结构,而是提前进行下一个循环。while语句和do_while语句遇到continue时,程序会立刻转到条件表达式,开始下一轮循环;而在for语句中遇到continue时,程序会立刻转到循环表达式,更新循环变量,开始下一轮循环。continue语句流程图分析:完全平方数指的是能够表示成另一个整数的平方的整数。从1开始,每次递增1,逐项判断它的平方是否超过500. continue语句同break语句一样,也有可能会破坏程序的结构化,使程序成为非结构化的程序,因此,应当尽量避免使用continue语句。提示1.主要讨论了3种循环语句:for、while和do_while循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论