![[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/e6f0e337-31e1-4ef8-92af-3934b6d6b4b6/e6f0e337-31e1-4ef8-92af-3934b6d6b4b61.gif)
![[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/e6f0e337-31e1-4ef8-92af-3934b6d6b4b6/e6f0e337-31e1-4ef8-92af-3934b6d6b4b62.gif)
![[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/e6f0e337-31e1-4ef8-92af-3934b6d6b4b6/e6f0e337-31e1-4ef8-92af-3934b6d6b4b63.gif)
![[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/e6f0e337-31e1-4ef8-92af-3934b6d6b4b6/e6f0e337-31e1-4ef8-92af-3934b6d6b4b64.gif)
![[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/e6f0e337-31e1-4ef8-92af-3934b6d6b4b6/e6f0e337-31e1-4ef8-92af-3934b6d6b4b65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十讲while语句、语句、do-while语句、语句、for 语句语句 循环结构的嵌循环结构的嵌套套5.1 while循环语句循环语句由while语句构成的循环也称”当”循环。while循环的一般形式如下: while(表达式) 循环体语句图图5.1 while循环流程图循环流程图while语句的执行过程是: 先计算while表达式的值,当表达式的值为非零时,便执行循环体语句,之后再计算该表达式的值,由此构成循环,直到有一次求得表达式的值为零时才结束循环,并继续执行循环体语句之外的后续语句。图图5.1 while循环流程图循环流程图while(表达式) 循环体语句例: k=0; while
2、(k10) printf(“*”);k+;注意:1)表达式不可省;表达式的值为真的时候,作循环; 2)循环体语句,要能改变表达式的值,使其从真变到假;(为什么啦?)如果循环语句是多条,构成复合语句;执行过程:P50P51(1)(2)(3) 说明:(1)while语句中的表达式可以是任意合法的C表达式。 (2)如果循环体语句是复合语句,一定要用 括起来。 (3) 在循环体语句中应该包含能够使循环趋于结束的操作,以避免出现死循环。 例例5.1 编程求编程求1+2+3+100的值。的值。 这是一个求这是一个求100100个数的个数的累加和累加和问题。所加的问题。所加的加数从加数从1 1变化到变化到1
3、00100,因此,因此我们我们可以在可以在循环体中循环体中设计一个整型设计一个整型变量变量i i,使它的,使它的初值为初值为1 1,每,每循环循环一次一次使使i i的值的值增增1 1,一直,一直循环循环到到i i的值的值超过超过100100为为止止,用这个办法就解决所需的加数问题。,用这个办法就解决所需的加数问题。 要解决求要解决求累加和累加和的问题,还要再的问题,还要再设计一个变设计一个变量量sumsum用来用来存放存放这这100100个数的个数的和和值,先求值,先求0+10+1的和的和并将其并将其放在放在sumsum中中,然后把,然后把sumsum中的数中的数加加上上2 2再再存存放放在在
4、sumsum中,中,依次类推依次类推。 在这里,在这里,sumsum累加累加的的过程过程要放在要放在循环体中循环体中,由计算机来由计算机来判断判断所加的所加的数是否已经超过数是否已经超过100100。 main() int i, sum; i=1; sum=0; while(i=100) sum= sum + i ; i+; printf(sum=%dn, sum); 程序运行后的输出结果: sum=5050 例程序例程序,求求1+2+3+100的值的值思考:P51例 sum=sum+i*i sum=1e-6) pi=pi+t; n+=2.0; s= -s; /*改变符号改变符号*/t=s/n
5、; pi=pi*4;printf(pi=%fn,pi);程序执行后输出以下结果:程序执行后输出以下结果:小组讨论小组讨论:1、程序、程序5-3:求输入的某个数是否为素数。若是,输:求输入的某个数是否为素数。若是,输出出YES,若不是,输出,若不是,输出NO。素数是指那些大于素数是指那些大于1,且除了,且除了1和它本身以外不能被其和它本身以外不能被其他任何数整除的数。如他任何数整除的数。如2、3、5、7、11、都是素数;都是素数;4、6、8、9、则不是素数。则不是素数。为了判断某数为了判断某数x是否为素数,最简单的方法是用是否为素数,最简单的方法是用2、3、4、x-1,这些数逐个去除,这些数逐个
6、去除x,看能否除尽,只要能被其,看能否除尽,只要能被其中某一个数除尽,中某一个数除尽,x就不是素数;否则,若不能被任何一就不是素数;否则,若不能被任何一个数除尽,个数除尽,x就是素数。就是素数。实际上只要试除到,就已经可以说明实际上只要试除到,就已经可以说明x是否为素数了。是否为素数了。这是因为如果小于等于的数都不能除尽这是因为如果小于等于的数都不能除尽x,则大于的数也,则大于的数也不可能除尽不可能除尽x。试除到,可以减少循环次数,提高程序的。试除到,可以减少循环次数,提高程序的运行效率。运行效率。程序代码如下:程序代码如下:#include main( ) int i, x, yes, a;
7、printf(Enter integer number : ); scanf (%d,&x); yes=1; i=2; a=(int)sqrt ( (double) x); while( yes & i2时,进入循环,若时,进入循环,若x为素数,为素数,yes的值不变,仍为的值不变,仍为1,若,若x能被能被2的某个数整除,则的某个数整除,则x不是素不是素数,使数,使yes的值变为的值变为0,并且立即退出循环。退出循环后,并且立即退出循环。退出循环后,if的的语句判断语句判断yes的值为的值为1时,输出时,输出YES,否则输出,否则输出NO。小组讨论小组讨论: 2、P53 迭代法
8、迭代法5.3 用用do-while语句构成的循环语句构成的循环 由由do-whiledo-while语句构成的循环称语句构成的循环称为为”直到型直到型”循环循环,do-whiledo-while语句语句的一般形式为:的一般形式为: dodo 循环体语句循环体语句 while(while(表达式表达式) ); ;do-while语句的执行过程是语句的执行过程是:先执行循环体语句先执行循环体语句,再再求求表达式的值表达式的值,若表达式的,若表达式的值为值为“真真”(非非0数值数值)则则再执行循环体语句再执行循环体语句,由此,由此构成循环构成循环,直直到到表达式的表达式的值为值为“假假” (数值数值
9、0)时时结束循环结束循环。如图所示。如图所示。 试将试将P51例例5。1改为改为do-while语句结构语句结构注意点:P54 do-while语句语句和和while语句语句的的区别区别在于在于do-while是是先先执行循环体语句执行循环体语句,后后判断循环条件判断循环条件,因此因此do-while至少要执行一次循环体。至少要执行一次循环体。main() int i, sum; i=1; sum=0; do sum= sum+i; i+; while(if3f1+f2-f3f1+f2-f3f1+f2-f3图图5-1 for循环运算过程循环运算过程5.4 for语句和用语句和用for语句构成的
10、循环语句构成的循环 forfor语句语句的的一般形式一般形式为:为: forfor ( (表达式表达式1 1; ;表达式表达式2 2; ;表达式表达式3 3) ) 循环体语句循环体语句forfor循环语句循环语句的的执行过程执行过程是:是:(1) (1) 计算计算”表达式表达式1 1” ”的值。的值。(2) (2) 计算计算”表达式表达式2 2” ”的值;的值; 若其值为若其值为非零非零,转至,转至步骤步骤(3)(3); ; 若其值为若其值为零零,则转至,则转至步骤步骤(5)(5)。(3) (3) 执行一次执行一次循环体语句循环体语句。(4) (4) 计算计算”表达式表达式3 3” ”;然后转
11、向;然后转向步骤步骤(2)(2),构成循环构成循环。(5) (5) 结束循环结束循环,执行,执行forfor循环之后的语句。循环之后的语句。 for语句的常规使用方法语句的常规使用方法:“表达式表达式1”用来用来给循环变量赋初值给循环变量赋初值或做一些或做一些初始初始工作工作;“表达式表达式2”用来作为用来作为判断判断循环是否结束循环是否结束的的条件条件;“表达式表达式3”用来用来修改修改循环变量循环变量的的值值,使使得得循环循环能能够够趋于结束趋于结束。例如:例如: for(k=0; k10; k+) printf(*); 以上以上for循环在一行上输出循环在一行上输出10个个“*”号。号。
12、for语句的语句的常规常规使用方法例使用方法例P 56例例main() /*程序1 */ int i, sum; for (i=1,sum=0; i=100; i+) sum= sum + i ; printf(sum=%dn, sum);“ “表达式表达式1 1” ”是逗号表达式是逗号表达式给循环变量赋初值给循环变量赋初值做一些做一些初始工作,准备累加!初始工作,准备累加!判断判断循环是否结束!循环是否结束!使使得得循环循环能够能够趋于结束。趋于结束。 从语法上来讲,从语法上来讲,三个表达式三个表达式都可以是都可以是任意合法的任意合法的C C表达式表达式,各表达式之间用各表达式之间用”;”;
13、”隔开,并且这隔开,并且这三个表达式三个表达式都是都是任选项任选项。 例如例如: :我们可以用我们可以用forfor循环语句将例的程序改写为如下几种循环语句将例的程序改写为如下几种形式,它们都能正确地求出形式,它们都能正确地求出1+2+3+1001+2+3+100的值。的值。 for语句的语句的非常规非常规使用方法使用方法main() /main() /* *程序程序2 2 * */ / int i=1, sum=0; int i=1, sum=0; for ( for ( ; ; i=100; i+) i=100; i+) sum= sum + i ; sum= sum + i ; prin
14、tf(“sum=%dn”, sum); printf(“sum=%dn”, sum); 表达式表达式1 1省略了!省略了!main() /main() /* *程序程序3 3 * */ / int i=1, sum=0; int i=1, sum=0;for ( for ( ; ; i=100 i100 if i100 gotogoto pendpend; ; pend:pend: printf(“sum=%dn”, sum); printf(“sum=%dn”, sum); 三个表达式三个表达式都被省掉了都被省掉了!分隔符分隔符“ ; ;” ”不能省。不能省。 由于没有了由于没有了表达式表达
15、式2 2,用用gotogoto语句语句结束结束循环。循环。main() /main() /* *程序程序5 5 * */ / int i, sum=0; int i, sum=0; for ( for (i=1i=1; ; i=100 i=100 ; ; sum=sum+i+sum=sum+i+ ) ); ; printf(“sum=%dn”, sum); printf(“sum=%dn”, sum); 循环体语句是一个空语句!循环体语句是一个空语句!注意在注意在循环体语句循环体语句之前之前不能有不能有分号分号main() int i, sum=0; for (i=1 ; i=100; i+)
16、 ; sum= sum + i ; printf(sum=%dn, sum);main() int i, sum=0; for (i=1 ; i=100; i+) ; sum= sum + i ; printf(sum=%dn, sum);/*前面两个程序的执行过程,结果=101*/main() int i, sum=0; for (i=1 ; i=100; i+); sum= sum + i ; printf(sum=%dn, sum);即即: :循环体语句是一个循环体语句是一个空语句空语句!例例5.4 编程计算多个圆的面积编程计算多个圆的面积 本例要求计算本例要求计算5 5个不同半径的圆面
17、积个不同半径的圆面积,且半径且半径值的变化值的变化是是有规律有规律的,从的,从mm开始开始按增按增 mm的规律递增的规律递增, ,可可直接直接用用半径半径r r作为作为forfor语句的语句的循环控制变量循环控制变量,每,每循环一次循环一次使使r r的值的值增增0.5 0.5 , ,直到直到r r大于为止。大于为止。main( ) float r, s ,pi=3.1416; for(r; ; ) s=pi*r*r ; printf(r=%3.1fs=%fn, r, s); 试改为:非常规for 结构 变量变量r r具有具有双双重功能重功能,它既,它既是是循环控制变循环控制变量量,又是,又是圆
18、的圆的半径值半径值,它的,它的值由变化到,值由变化到,循环体共执行循环体共执行5 5次次,当,当r r增到时,增到时,条件表达式的条件表达式的值为值为0 0,从而,从而退退出循环出循环。5.5 5.5 循环结构的嵌套循环结构的嵌套 在一个循环语句的循环体内又完整地包含了另一在一个循环语句的循环体内又完整地包含了另一个循环语句,称为循环嵌套。循环嵌套的书写采用个循环语句,称为循环嵌套。循环嵌套的书写采用缩进形式缩进形式. . 在编写程序时,在编写程序时,循环嵌套的书写循环嵌套的书写要采用要采用缩进形缩进形式式,如在例的程序中,如在例的程序中,内循环内循环中的语句应该中的语句应该比比外循外循环环中的语句有规律地中的语句有规律地向右缩进向右缩进2424列列。例例5.5 5.5 循环嵌套的应用循环嵌套的应用-输出九九乘法表。输出九九乘法表。main ( )int i, j; for(i=1; i=9; i+) for(j=1; j= i; j+) printf(%1d*%1d =%2d , i, j , i*j); printf(n); 程序的运行结果为:程序的运行结果为:1*1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025技术研发(委托)合同范本
- 农民耕地转租合同样本
- 光伏折扣合同范例
- 农田施工工程合同范例
- 公司股权股合同范例
- 内部承包鱼塘合同范例
- 2025年运输经济学考试复习试卷及答案
- 代购电子合同范例
- 兼营合同范例
- 上传网贷合同范例
- 护理事业编试题及答案
- 全国新能源汽车关键技术技能大赛理论知识竞赛题库
- 2025届贵州省遵义第四中学高考英语全真模拟密押卷含解析
- 人工气道湿化管理
- 2025届湖北省武汉市高中毕业生4月调研考试英语试题答案
- 人工智能在食品检测中的创新应用探讨
- 2025-2030中国骨形态发生蛋白2行业市场发展趋势与前景展望战略研究报告
- 2025年高考语文备考之新题型:成语填空专项训练(含答案)
- 职场沟通职场沟通与人际关系处理知到课后答案智慧树章节测试答案2025年春山东管理学院
- 安徽省C20教育联盟2025年九年级中考“功夫”卷(二)数学
- 人教PEP版英语四年级下册 图片和单词专项练习
评论
0/150
提交评论