版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七讲,Begin:,第五章 循环结构程序设计,continue 语句和 break 语句 循环的嵌套 goto语句,1、continue语句,格式:continue ;,功能:结束本次循环,使程序回行到循环条件,判断是否提前进入下一次循环。,continue语句只用于循环结构的内部,常与if语句联合起来使用,以便在满足条件时提前结束本次循环。,5.4 continue语句和break语句,例 对除5的倍数以外的1100的数求和。,main( ) int i,s; s=0; for(i=1;i=100;i+) if (! (i%5) continue; s+=i; printf(“%d,%dn
2、”,i,s); ,如果if判断语句为真,则跳出本次循环,回到循环条件,判断是否进行下一次循环,此处,当i为5的倍数时,!(i%5)为真,跳出本次循环,不执行continue下面的语句,直接进入下一次循环,即执行for语句,运行序列如下: i if(!(i%5) si 1 假 s=0+1=1 2 假 s=1+2=3 3 假 s=3+3=6 4 假 s=6+4=10 5 真 不执行 6 假 s=10+6=16, ,5.4 continue语句和break语句,main() int n,s; for (n=1,s=0;n=20;n=n+1) if (n%3=0) continue; printf(%
3、dt,n); s=s+1; printf(ntotal:%dn,s); ,例 统计150之间不能被3整除的数的个数并输出这些数。,运行结果: 2 4 5 7 8 10 11 13 14 16 17 19 20 total: 14,5.4 continue语句和break语句,格式: break; 功能:循环体中遇见break语句,立即结束循环,跳到循环体外,执行循环结构后面的语句。,2、break语句,在循环体中break语句常与if语句搭配使用,并且break语句只能用在switch语句和循环语句中。,break只能跳出一层循环(或者一层switch语句结构),5.4 continue语句和
4、break语句,例 统计输入的字符个数,并输出它们,以“!”终止。,main( ) char chr; int s; for( s=0; ; s+) chr=getchar( ); if (chr=!) break; else printf(“%c”,chr); printf(“s=%dn”,s); ,如果if判断语句为真,则结束循环,执行循环结构后面的语句,此处,当输入字符为“!”时,chr=!为真,结束for循环,执行循环结构后面的语句,即执行printf (“s=%dn”,s)语句,运行序列如下: 输入 if(chr=!) 输出 a 假 a 5 假 5 $ 假 $ B 假 B ! 真 4
5、,5.4 continue语句和break语句,例 计算半径r=1到r=10时圆的面积,直到面积area大于100为止。,#define pi 3.14159 main( ) int r; float area; for( r=1;r100) break; printf(“ %fn”,area); ,5.4 continue语句和break语句,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套,内嵌的循环中还可以嵌套循环即为多层循环。,说明: 嵌套的原则: 不允许交叉 循环与分支可以相互嵌套但不允许交叉。,5.5 循环的嵌套,* * * * * * * * * * * * * * * *
6、 * * * * * * * * * * * * * * * *,输出图形:,for(i=1;i=4;i+) printf(“* * * * * * * *”); printf(“n”); ,5.5 循环的嵌套,其中语句:printf(“* * * * * * * *”); 等价于,for(j=1;j=8;j+) printf(“*”);,于是构成了二重循环语句:,for(i=1;i=4;i+) for(j=1;j=8;j+) printf(“*”); printf(“n”); ,5.5 循环的嵌套,上面的例子中: 外循环由外循环控制变量i控制,i由1递增到4。,for(i=1;i=4;i+)
7、 for(j=1;j=8;j+) printf(“*”); printf(“n”); ,每1次的外循环中,都要执行由内循环控制变量j控制的8次内循环操作和1次换行操作。,由此:每次内循环输出一个星号,外循环输出一行(8个)星号,4次外循环,输出了4行8列星号。,5.5 循环的嵌套,n = 1 ; while ( n = 3 ) printf( 输出外循环n=%dn, n ); i = 1 ; while ( i = 2 ) printf( 1) 输出内循环 i = %dn, i ); i + ; j = 1 ; while ( j = 3 ) printf( 2) 输出内循环 j = %dn,
8、 j ); j + ; n + ; ,例 读程序,写出运行结果:,5.5 循环的嵌套,输出外循环n=1,1) 输出内循环 i =1,1) 输出内循环 i =2,2) 输出内循环 j =1,2) 输出内循环 j =2,2) 输出内循环 j =3,输出外循环n=2,输出结果:,输出外循环n=3,5.5 循环的嵌套,例 输出九九乘法表,1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 9 = 9 2 * 9 =18 9 * 9 = 81,5.5 循环的嵌套,5.5 循环的嵌套,main( ) int i ,j ; for
9、( i = 1 ; i = 9 ; i + ) for ( j = 1 ; j = i ; j + ) printf(%d*%d=%2d , i, j, i*j ); printf ( n); ,程序 :,5.5 循环的嵌套,例 输出3100中的所有素数。,分析: 1)对于某个数n,如果从2到n1都不能被n整除,则该数n为素数。,此处,除数2到n可以用一个for语句来表示: for (i=2;i=n-1;i=i+1),2)对于3100之间的数,可以表示如下:,for (n=3;n=100;n=n+1),5.5 循环的嵌套,main( ) int n,i; for (n=3;n=n) print
10、f(%dt,n); ,程序 :,5.5 循环的嵌套,例 读程序段,写出输出结果:,for(i=1;i=2;i+) for(j=1;j=3;j+) for(k=1;k=4;k+) printf(“*”); printf(“n”); printf(“nn”); ,5.5 循环的嵌套,输出如下图形:,i从1到2,k从1到4,j从1到3,5.5 循环的嵌套,例 输出如下图形:,* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *,5.5 循环的嵌套,* * * * * * * * * * * * * * *
11、* * * * * * * * * * * * * * * * * * * * * *,分析:,共有5行,外循环 i:15,第一行输出4个空格,1个星号,第三行输出2个空格,5个星号,第二行输出3个空格,3个星号,第五行输出0个空格,9个星号,空格用循环变量j控制,j=5-i,星号用循环变量k控制,k=2*i-1,5.5 循环的嵌套,程序 :,main( ) int i,j,k; for(i=1;i=5;i+) for(j=1;j=5-i;j+) printf(“ ”); for(k=1;k=2*i-1;k+) printf(“*”); printf(“n”); ,5.5 循环的嵌套,练习 输
12、入一个整数n,输出如下回文塔。,1 1 2 1 1 2 3 2 1,n3时,n5时,1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1,5.5 循环的嵌套,程序 :,main( ) int n,i; printf(“input a numbern”); scanf(“%d”, ,5.5 循环的嵌套,格式: goto 语句标号 ; 标号:语句 ;,作用: 1)与 if 语句构成循环结构。 2)从循环体中强制退出。,5.6 goto语句和语句标号的使用,说明: 1)goto语句为无条件转向语句。 goto语句可以从循环体内跳出循环,尤其在多层循环中,
13、使用goto语句可以跳到任意一层循环体内。 2)标号的命名规则同变量名。 3)goto语句不符合结构化程序设计原则,一般不主张使用。,5.6 goto语句和语句标号的使用,循环在数值计算中的应用,例 牛顿法求根,算法简介: 对于方程f(x)=0,设已知它的近似根为xk,设f(x)有二阶连续导数,则函数f(x)在点xk附近可用一阶泰勒多项式p(x) = f(xk) + f(xk)(x - xk)来近似,因此方程f(x)=0可用方程p(x)=0近似代替。取p(x)=0的根作为f(x)=0的新的近似根,记为xk+1,则有:,牛顿迭代法的终止条件: 若相邻两次迭代的差|xk+1-xk|1且|f(x)|
14、2(只满足上述两条件之一也可),则终止计算,取xk+1为所求的近似根。 对于迭代次数也有限制,若迭代N次都不能满足以上条件,则认为迭代失败,其中N为迭代次数的最大值。,循环在数值计算中的应用,例:方程f(x)=x - ex + 20,求方程的近似根,取初值x0= -1。 分析:方程的牛顿迭代格式为:,(k为迭代次数) 当|f(xk)|2(eps2)且|xk+1-xk|1(eps1)时,停止迭代。,循环在数值计算中的应用,程序如下: #define N 10 #include #include void main() double x0, x1,x2,eps1,eps2, y ; /*x0为初值,x1和x2分别为第k次和第k+1次迭代的根*/ int i=0; x0= -1; eps1=0.0000001; eps2=0.0000001; x1=x0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农厂租赁合同范本
- 舞房转让协议书
- 延期交租协议书
- 转租民宿合同范本
- 装车私聊协议书
- 英国外贸协议书
- 诊所用药协议书
- 资产权属协议书
- 性侵赔偿协议书
- 药品招商协议书
- 语文试卷【黑吉辽蒙卷】高一辽宁省部分学校金太阳2025-2026学年高一上学期11月联考(26-108A)(11.24-11.25)
- 郑州工商学院《园林史》2025-2026学年第一学期期末试卷
- 【完整版】2026国考《行测》真题(行政执法)
- JG/T 387-2012环氧涂层预应力钢绞线
- 注塑模具备用件管理制度
- 分期支付工资协议书
- 2024年南昌大学第二附属医院招聘笔试真题
- 甲流儿童预防
- 工业机械之光
- 清华大学《工程伦理》网课习题及期末考试答案
- DB52T 784-2012 茶假眼小绿叶蝉监测与无害化治理技术规程
评论
0/150
提交评论