[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套

上传人:ra****d 文档编号:240477865 上传时间:2024-04-12 格式:PPT 页数:35 大小:379.50KB
返回 下载 相关 举报
[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第1页
第1页 / 共35页
[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第2页
第2页 / 共35页
[计算机软件及应用]第10讲 do-while语句for语句循环结构的嵌套_第3页
第3页 / 共35页
点击查看更多>>
资源描述
第十讲while语句、语句、do-while语句、语句、for 语句语句 循环结构的嵌套循环结构的嵌套5.1 while循环语句循环语句由while语句构成的循环也称”当”循环。while循环的一般形式如下:while(表达式)循环体语句图图5.1 while循环流程图循环流程图while语句的执行过程是:先计算while表达式的值,当表达式的值为非零时,便执行循环体语句,之后再计算该表达式的值,由此构成循环,直到有一次求得表达式的值为零时才结束循环,并继续执行循环体语句之外的后续语句。图图5.1 while循环流程图循环流程图while(表达式)循环体语句例:k=0;while(k10)printf(“*”);k+;注意:1)表达式不可省;表达式的值为真的时候,作循环;2)循环体语句,要能改变表达式的值,使其从真变到假;(为什么啦?)如果循环语句是多条,构成复合语句;执行过程:P50P51(1)(2)(3)说明:(1)while语句中的表达式可以是任意合法的C表达式。(2)如果循环体语句是复合语句,一定要用 括起来。(3)在循环体语句中应该包含能够使循环趋于结束的操作,以避免出现死循环。例例5.1 编程求编程求1+2+3+100的值。的值。这是一个求这是一个求100100个数的个数的累加和累加和问题。所加的问题。所加的加数从加数从1 1变化到变化到100100,因此,因此我们我们可以在可以在循环体中循环体中设计一个整型设计一个整型变量变量i i,使它的,使它的初值为初值为1 1,每,每循环循环一次一次使使i i的值的值增增1 1,一直,一直循环循环到到i i的值的值超过超过100100为为止止,用这个办法就解决所需的加数问题。,用这个办法就解决所需的加数问题。要解决求要解决求累加和累加和的问题,还要再的问题,还要再设计一个变设计一个变量量sumsum用来用来存放存放这这100100个数的个数的和和值,先求值,先求0+10+1的和的和并将其并将其放在放在sumsum中中,然后把,然后把sumsum中的数中的数加加上上2 2再再存存放放在在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;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,这些数逐个去除,这些数逐个去除x,看能否除尽,只要能被其,看能否除尽,只要能被其中某一个数除尽,中某一个数除尽,x就不是素数;否则,若不能被任何一就不是素数;否则,若不能被任何一个数除尽,个数除尽,x就是素数。就是素数。实际上只要试除到,就已经可以说明实际上只要试除到,就已经可以说明x是否为素数了。是否为素数了。这是因为如果小于等于的数都不能除尽这是因为如果小于等于的数都不能除尽x,则大于的数也,则大于的数也不可能除尽不可能除尽x。试除到,可以减少循环次数,提高程序的。试除到,可以减少循环次数,提高程序的运行效率。运行效率。程序代码如下:程序代码如下:#include main()int i,x,yes,a;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 迭代法迭代法5.3 用用do-while语句构成的循环语句构成的循环 由由do-while语句构成的循环称语句构成的循环称为为”直到型直到型”循环循环,do-while语句语句的一般形式为:的一般形式为:do 循环体语句循环体语句 while(表达式表达式);do-while语句的执行过程是语句的执行过程是:先执行循环体语句先执行循环体语句,再再求求表达式的值表达式的值,若表达式的,若表达式的值为值为“真真”(非非0数值数值)则则再执行循环体语句再执行循环体语句,由此,由此构成循环构成循环,直直到到表达式的表达式的值为值为“假假”(数值数值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语句构成的循环语句构成的循环 for语句语句的的一般形式一般形式为:为:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体语句循环体语句for循环语句循环语句的的执行过程执行过程是:是:(1)计算计算”表达式表达式1”的值。的值。(2)计算计算”表达式表达式2”的值;的值;若其值为若其值为非零非零,转至,转至步骤步骤(3);若其值为若其值为零零,则转至,则转至步骤步骤(5)。(3)执行一次执行一次循环体语句循环体语句。(4)计算计算”表达式表达式3”;然后转向;然后转向步骤步骤(2),构成循环构成循环。(5)结束循环结束循环,执行,执行for循环之后的语句。循环之后的语句。for语句的常规使用方法语句的常规使用方法:“表达式表达式1”用来用来给循环变量赋初值给循环变量赋初值或做一些或做一些初始初始工作工作;“表达式表达式2”用来作为用来作为判断判断循环是否结束循环是否结束的的条件条件;“表达式表达式3”用来用来修改修改循环变量循环变量的的值值,使使得得循环循环能能够够趋于结束趋于结束。例如:例如:for(k=0;k10;k+)printf(*);以上以上for循环在一行上输出循环在一行上输出10个个“*”号。号。for语句的语句的常规常规使用方法例使用方法例P 56例例main()/*程序1*/int i,sum;for(i=1,sum=0;i=100;i+)sum=sum+i;printf(sum=%dn,sum);“表达式表达式1”是逗号表达是逗号表达式式给循环变量赋初值给循环变量赋初值做一些做一些初始工作,准备累加!初始工作,准备累加!判断判断循环是否结束!循环是否结束!使使得得循环循环能够能够趋于结束。趋于结束。从语法上来讲,从语法上来讲,三个表达式三个表达式都可以是都可以是任意合法的任意合法的C表达式表达式,各表达式之间用各表达式之间用”;”隔开,并且这隔开,并且这三个表达式三个表达式都是都是任选项任选项。例如例如:我们可以用我们可以用for循环语句将例的程序改写为如下几种循环语句将例的程序改写为如下几种形式,它们都能正确地求出形式,它们都能正确地求出1+2+3+100的值。的值。for语句的语句的非常规非常规使用方法使用方法main()/*程序程序2*/int i=1,sum=0;for(;i=100;i+)sum=sum+i;printf(“sum=%dn”,sum);表达式表达式1省略了!省略了!main()/*程序程序3*/int i=1,sum=0;for(;i100 goto pend;pend:printf(“sum=%dn”,sum);三个表达式三个表达式都被省掉了都被省掉了!分隔符分隔符“;”不能省。不能省。由于没有了由于没有了表达式表达式2,用用goto语句语句结束结束循环。循环。main()/*程序程序5*/int i,sum=0;for(i=1;i=100;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);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个不同半径的圆面积个不同半径的圆面积,且半径且半径值的变化值的变化是是有规律有规律的,从的,从mm开始开始按增按增 mm的规律递增的规律递增,可可直接直接用用半径半径r作作为为for语句的语句的循环控制变量循环控制变量,每,每循环一次循环一次使使r的值的值增增0.5,直到直到r大于为止。大于为止。main()float r,s,pi=3.1416;for(r;)s=pi*r*r;printf(r=%3.1fs=%fn,r,s);试改为:非常规for 结构 变量变量r具有具有双双重功能重功能,它既,它既是是循环控制变循环控制变量量,又是,又是圆的圆的半径值半径值,它的,它的值由变化到,值由变化到,循环体共执行循环体共执行5次次,当,当r增到时,增到时,条件表达式的条件表达式的值为值为0,从而,从而退退出循环出循环。5.5 5.5 循环结构的嵌套循环结构的嵌套 在一个循环语句的循环体内又完整地包含了另一在一个循环语句的循环体内又完整地包含了另一个循环语句,称为循环嵌套。循环嵌套的书写采用个循环语句,称为循环嵌套。循环嵌套的书写采用缩进形式缩进形式.在编写程序时,在编写程序时,循环嵌套的书写循环嵌套的书写要采用要采用缩进形缩进形式式,如在例的程序中,如在例的程序中,内循环内循环中的语句应该中的语句应该比比外循外循环环中的语句有规律地中的语句有规律地向右缩进向右缩进24列列。例例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 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 例程序输出的九九乘法表例程序输出的九九乘法表程序程序5-7:求:求n!,即计算!,即计算123 n的值。的值。程序代码如下:程序代码如下:main()int i,s,n;/*变量变量s放置连乘的积放置连乘的积*/s=1;/*注意:注意:s的初值为的初值为1*/printf(Enter n:);scanf(%d,&n);/*给给n读入值,读入值,n表示最后一个因子的表示最后一个因子的值值*/for(i=1;i=n;i+)/*用用n作为循环的终值作为循环的终值*/s=s*i;printf(s=%dn,s);以上程序执行时,若给n输入5,变量i和s中值的变化如表5-1所示。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!