




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.2.1 while语句 4.2.2 do-while语句 4.2.3 for语句 4.2.4 转移语句 4.2.5 循环的嵌套 4.2.6 循环结构程序设计举例 4.2 循环结构程序设计 循环的概念 当所要解决的问题存在重复执行内容时, 应该使用循环结构来实现,具体的设计步骤可 归纳如下。 (1)构造循环体。 (2)寻找控制循环的变量。 (3)找出控制循环的3个要素。 循环控制变量的初值。 循环的条件。 使循环趋于结束的部分。 在C语言中可以用以下语句来实现循环: 1. 用while语句; 2. 用do-while语句; 3. 用for语句; 4. 用goto语句和if语句构成循环; 4.2.1 while语句 真(非零) 表达式 循环体 假(零) 1、while 语句的形式 : while (表达式) 循环体; 2 、 while 语句 常称 为“当型”循环语句。 3、说明: 先判断表达式,后执行语句。 表达式同if语句后的表达式一样,可以是 任何类型的表达式。 循环体多于一句时,用一对 括起。 while循环结构常用于循环次数不固定,根 据是否满足某个条件决定循环与否的情况。 例:分析下列程序段的循环次数 i=1; while (i0) printf(“ + “); else printf(“ - “); scanf(“ %d “, 判断正负号 #include “stdio.h“ void main() char ch;int num=0; ch=getchar(); 例: 统计从键盘输入的一行字符的个数(以回 车键作为输入结束标记)。 while(ch!=n) 判断是否输入结束 num+; ch=getchar(); printf(“num=%dn“,num); 注意 表达式在判断前,必须要有明确的值。 循环体中一般有改变条件表达式的语句。 while (表达式)后面没有分号。 4.2.2 do-while语句 1、 do-while的形式 : do 循环体; while (表达式); 2、 do-while语句 常称 为“直到型”循环语句。 真(非零) 表达式 循环体 假(零) 3、说明: 先执行语句,后判断表达式。 第一次条件为真时,while,do-while等价 ;第一次条件为假时,二者不同。 例: 用do-while语句编程实现:计算1+2+3+4+100 算法:s1.设一个变量sum用于存放最后的结果, 初值为0 s2.设一个循环变量i,初值为1 s3. sum=sum+i s4. i+ s5. 判断i是否小于等于100,若是重复执行s3 s5 ; 否则程序结束 main() int sum=0,i=1; dodo sum=sum+i; i+; whilewhile(i100) break; sum=sum+i; 1、for语句中表达式省略的形式 (3)表达式3也可以省略,但此时保证 循环能正常结束如: for(sum=0,i=1;i100) break; sum=sum+i; i+; 相当于 (6)循环体为空语句 对for语句,循环体为空语句的一般形式为: for (表达式1;表达式2;表达式3) ; 如:for(sum=0,i=1;isqrt(x) printf(“ %d is a prime “ ,x); else printf(“ %d is not a prime “ ,x); 在判断范围内无因 子,程序正常终止 有因子,程序 非正常终止 #include “ math.h “ void main() int x,k,f=1; scanf(“ %d “, 排除法:如果有因子, 不再往下判断是否是素 数 for(k=2;k=1;x-) if(x%17=0) break; printf(“x=%dn“,x); 找到满足条件的最 大数,结束循环 (1)语句形式: continue; (2)语句作用: 结束本次循环。 三、continue 语句 (3)语句执行流程: continue语句可以结束本次循环,即不再 执行循环体中continue 语句之后的语句,转 入下一次循环条件的判断与执行。 例: 求300以内能被17整除的所有整数。 #include “stdio.h“ void main() int x,k; for(x=1;x=10) break; if(b%3=1) b+=3; continue; printf(“%dn“,a); 例:分析以下程序的运行结果。 程序运行结果: 4 在循环体语句中又包含有另一个完整的循环 结构的形式,称为循环的嵌套。如果内循环体 中又有嵌套的循环语句,则构成多重循环。 4.2.5 循环的嵌套 嵌套在循环体内的循环体称为内循环,外面的循环 称为外循环。 while 、do-while、for三种循环都可以互相嵌套。 循环语句之间的关系 for(.) . for(.) . . 内循环 外循环 for() . for(.) . 并列循环嵌套循环交叉循环 for() . for(.) . 错误 真 真 外循环初始条件 内循环初始条件 内循环体 外循环条件 假 内循环条件 假 内循环循环条件 外循环循 环条件 循环结束 二重 循环 嵌套 结构 执行 流程 例:输出图形: * * * * 编程分析: 采用双重循环,一行一行输出。 每一行输出步骤:一般3步。 1)光标定位 3)每输完一行光标换行(n) 2)输出图形。 例如本题:共4行,若行号用k表示, 则每一行有2*k-1个*号。 #include “ stdio.h “ void main() int k1,k2; for(k1=1;k1=k1;k2-) putchar( ); for(k2=1;k2=n) printf(“t%d“,n); 例:求解百鸡百钱问题。公元钱五世纪,我国古代 数学家张丘建在算经一书中提出了“百鸡百钱” 问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱 一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 算法分析:百鸡百钱问题是典型的穷举法问题。我 们设x,y,z分别为买的鸡翁,鸡母,鸡雏的个数,则 有 x+y+z=100 5*x+3*y+z/3=100 而x,y可能取数的范围为 x:020 y:033 z可以由公式z=100-x-y计算出来。 据此,我们建立一个两重循环,对所有可能的情况 进行判别。 程序源代码如下: #include “stdio.h“ main() int i,j,k; printf(“解百鸡百钱问题n“); for (i=1;i0); 问最后b的值为多少?循环了多少次? b=4 循环2次 习题习题 3. i=1;a=0;s=1; do a=a+s*i; s=-s; i+; while(i main() char c; while(c=getchar()!=?) putchar(+c); sjhiu 习题习题 5. 5. main() int i,j; for(i=1;i50)break; while(a=14); a=12 y=12 a=16 y=28 a=16 y=44 a=16 y=60 /*给a赋值*/ 7. 1- 习题习题 2 1 + 3 1 + 99 1 - 100 1 用三种做法做 for(i=1;i0) t=m%n; m=n; n=t; 习题习题 9.输入两个整数x、y,求 x y main() int x,y,i,mul=1; scanf(“%d,%d”, for(i=1;i=y;i+) mul=mul*x; printf(“%d”,mul); 习题习题 10.求出1100之间的所有素数 main() int i,j,flag; for(i=2;i=100;i+) flag=1; for(j=2;j=sqrt(i);j+) if(i%j=0) flag=0;break; if(flag=1) printf(“%5d”,i); 习题习题 11.计算1!+2!+3!+100! main() int i,sum=0,s=1; for(i=1;i=100;i+) sum=sum+s; s=s*i; printf(“%5d”,sum); 1、写出程序运行结果: void main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%dn”,x);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古鄂尔多斯市伊金霍洛旗招聘成熟教师10人笔试备考题库及答案解析
- 2025年教师招聘之《幼儿教师招聘》每日一练试卷附参考答案详解【轻巧夺冠】
- 2025年教师招聘之《小学教师招聘》练习题库带答案详解(精练)
- 教师招聘之《小学教师招聘》考前冲刺试卷附答案详解【能力提升】
- 2025年教师招聘之《小学教师招聘》练习题库(完整版)附答案详解
- 教师招聘之《幼儿教师招聘》考试模拟试卷及答案详解【网校专用】
- 2025年儿童心理医生考试卷及答案
- 基本公卫专项整治自查报告
- 教师招聘之《小学教师招聘》强化训练(轻巧夺冠)附答案详解
- 2025年教师招聘之《小学教师招聘》题库检测试卷附答案详解【培优a卷】
- 传统建筑元素在现代建筑中应用
- 王道勇保障和改善民生
- 医疗法律法规知识培训
- 血友病课件完整版
- 神经系统的分级调节课件 【知识精讲+备课精研+高效课堂】 高二上学期生物人教版选择性必修1
- 三年级上册数学试卷-第一单元 混合运算 北师大版 (含答案)
- 临床职业素养
- 种子学-种子的化学成分课件
- 手术室无菌技术 课件
- ISO 31000-2018 风险管理标准-中文版
- 六年级数学上册教案6:分数乘法:分数乘小数-人教版
评论
0/150
提交评论