




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 循环控制 goto语句 while语句 do-while语句 for语句 break语句 continue语句 1 5.1 概述 循环: 反复执行称为“循环体”的程序段 循环控制常用于数学迭代、对象遍历等问 题的求解,几乎所有实用程序都包含循环 C语言中用如下语句实现循环: 1、用goto语句和if语句构成循环。 2、用while语句。 3、用do-while语句。 4、用for语句。 2 5.2 goto语句 一般形式: goto 语句标号 作 用: 无条件转向“语句标号”处执行。 “语句标号”是一个标识符,它表示程序指令的 地址,它的定名规则和变量名一样,由字母数 字或下划线组成,第一个字母为字母或下划线 ,不能使用整数来做标号 3 结构化程序设计方法主张限制使用goto 语句,滥用goto语句将使程序流程无规 律,可读性比较差 goto语句有两种用途,一是与if语句一 起构成循环结构,另一是从循环体中跳 转到循环体外 4 例5.1 用if语句和goto语句构成循环, 求 main() int i,sum=0; i = 1; loop: if (i max) max = x; else if (x100,用i+语句来达到这个目 的,如果无此语句,则i的始终不变,循环就永 不结束 9 5.4 do-while语句 一般形式: do 语句 while (表达式) 特点:“直到型”循环结构,先执行循环体,然后判 断循环条件是否成立 先执行一次“语句”,后判“表达式”,当“表达 式”非0,再执行“语句”,直到“表达式”为0,循 环结束。 直到P为假 语 句 语句 条件P 非0 0 10 例5.5 用do-while语句求 。 main() int i,sum=0; i = 1; do sum = sum + i; i+; while (i100”,这两者是等同的。 2、一般情况下,同一个问题,既可以用while循环处理, 也可以用do-while循环处理 i=1,sum=0 直到i100 sum=sum+i i=i+1 sum=sum+i i=i+1 i0) ; printf (“%ld是%d位数n” , m, n); getch(); 12 求e的近似值。 直到某一项的值小于或等于10-7为止。 main() int n; float sum, t, m; n=1; sum=1; m=1; do t = 1/m; sum+=t; n+; m=m*n; while(t1e-7); printf(“e = %f n” , sum); getch(); 例5.7 13 5.5 for语句 for语句常用于循环次数已知的循环控制; 也可以用于循环次数不确定而只给出循环结束条件的情况, 它完全可以代替while语句。 一般形式: for(表达式1;表达式2;表达式3) 语句 执行过程: (1)求表达式1; (2)求表达式2,若为“真”,执行“语句”; 若为假,转第(5)步。 (3)求表达式3。 (4)转第(2)步。 (5)执行for语句下面的语句。 循环初始条件 判别循环条件 修改循环条件 14 也可以写成while的形式: 表达式1; while(表达式2) 语句;表达式3; for语句最简单的应用形式也就是最易于 理解的如下形式: for(循环变量赋初值;循环条件;循环变量增值) 例:for(i=1;i100) break; 23 6.三个表达式都可省略 如:for( ; ;) 语句; 相当于while(1) 语句; 即不设初值,不判断条件,循环变量不 增值,无终止的执行循环体 24 例5.8求s=1!+2!+3!+n! , 其中n小于30。 main() long s, t; int i, n; printf(“input n:“); scanf(“%d“, s=0; t=1; for(i=1; i0) n+; printf(“n=%dn“, n); getch(); 31 几种循环的比较 四种循环都可以用来处理同一问题,一般情况下 可以互相代替,但不提倡goto循环 while和dowhile循环,只在while后面指定循环 条件,在循环体中应包含使循环趋于结束的语句 ;for循环可以在表达式3中包含使循环趋于结束 的操作,也可以将循环体中的操作全部放到表达 式3中 凡是用while循环能完成,用for循环都可以实现 32 用while和dowhile循环时,循环变量的初始 化的操作应在while和dowhile语句之前完成 ,而for语句可以在表达式1中实现循环变量的 初始化 while,dowhile和for循环,可以用break语 句跳出循环,用continue语句结束本次循环 33 5.8 break语句和continue语句 一、break语句 作用:跳出所在的多分支switch语句,跳出所在的 while,do-while,for循环语句(提前结束循环)。 例 #define PI 3.14 main() int r; float area; for (r=1;r 100) break; printf(“%d,%6.2fn“,r,area); printf(“%d,%6.2fn“,r,area); 当r=6时,area100,执行break语句, 提前结束循环,不再计算 r =710的area。 运行结果: 1 3.14 2 12.57 3 28.27 4 50.27 5 78.54 6 113.10 34 二、continue语句 作用:提前结束本次循环体的执行,接着进行下 一次循环条件的判别。 例5.13 把100200之间不能被3整除的数输出。 main () int n; for (n=100; n= 1E-6) pi = pi + t; n = n + 2; s = -s; t = s/n; pi = pi * 4; printf(“pi=%10.6fn“,pi); 运行结果:pi=3.141594 38 例5.14:判断m是否是素数 让m被2到sqrt(m)除,如果被其中任何一个整数 整除,则提前结束循环 #include “math.h“ main() int m,i,k; scanf(“%d“, k=sqrt(m+1); /*为了避免在求sqrt(m)时出现的误差*/ for(i=2;i=k+1) printf(“%d is a prime numbern“,m); else printf(“%d is not a prime numbern“,m); getch(); 39 例5.15:求100200间的全部素数 #include “math.h“ main() int m,k,i,n=0; for(m=101;m=k+1) printf(“%4d“,m);n=n+1; if(n%10=0) printf(“n“); printf(“n“); getch(); n的作用是累计输出素数 的个数,控制每行输出 10个数据 40 例5.16:译密码:为使电文保密,往往按一定 规律将其转换成密码,收报人再按约定的规律将 其译回原文。 将字母A变成E,a变成e,即变成其后的第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025四川南充遴选农业技术指导员、农业机械指导员考试参考试题及答案解析
- 2025下半年云南轻纺职业学院招聘9人备考考试题库附答案解析
- 2025年甘肃省平凉市庄浪县考核招聘农村订单定向医学生76人考试参考试题及答案解析
- 2025广西河池市住房保障和房产管理中心招聘工作人员1人备考考试题库附答案解析
- 丰城市某公司门卫招聘备考考试题库附答案解析
- 2025上海浦东新区医疗急救中心招聘35人考试备考题库及答案解析
- 2025山东威海市复退军人康宁医院招聘6人备考考试题库附答案解析
- 2025湖州南浔区浙江兴上合城市开发集团有限公司子公司招聘18人备考考试题库附答案解析
- 2025四川泸州市农业农村局招聘编外人员2人备考考试题库附答案解析
- 骨科骨折患者术后护理措施
- 交通事故处理报告
- 2025光伏发电项目施工分包合同
- 2025年党建知识应知应会题库及答案
- 化工检修作业培训
- 新版gmp培训课件
- 苜蓿种植培训课件
- 2025至2030全球及中国大豆化学品行业产业运行态势及投资规划深度研究报告
- 装置性违章培训
- 科创板块测试题及答案
- 针灸操作感染防控规范培训
- 设备泄漏挥发性有机物排放控制技术规范
评论
0/150
提交评论