c循环程序设计

上传人:正** 文档编号:56884857 上传时间:2018-10-16 格式:PPT 页数:91 大小:1.25MB
返回 下载 相关 举报
c循环程序设计_第1页
第1页 / 共91页
c循环程序设计_第2页
第2页 / 共91页
c循环程序设计_第3页
第3页 / 共91页
c循环程序设计_第4页
第4页 / 共91页
c循环程序设计_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《c循环程序设计》由会员分享,可在线阅读,更多相关《c循环程序设计(91页珍藏版)》请在金锄头文库上搜索。

1、4.10 循环结构程序设计,4.11 while语句 4.12 do-while语句 4.13 for语句 4.14 goto语句以及用goto语句构成的循环 4.15 break语句和continue语句 4.16 几种循环的比较 4.17 循环结构程序设计举例 4.18 循环的嵌套 4.19 典型c程序举例,循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。,作用:反复若干次同种操作(输入输出 ,算术运算,非数值运算等等)如:1、输入全班学生成绩-若干次输入2、若干个数之和-若干次求和3、若干个数排序-若干次比较大小,返回到本章目录,(1)在进入累加前先给累加器

2、赋初值(一般为0); (2)循环变量赋初值; (3)循环条件进行判断 (4)循环体语句的设计累加器当前值=累加器原值+循环变量当前值 ;循环变量改变规律。,思考题3-5:设计一个程序,用while循环语句实现1100自然数的和。,基本方法:,属于“累加器”类型问题。,一、while语句,返回到本章目录,累加器赋初值,求1100自然数的积 1*2*3*100,程序:,main() int k,s;,s=0; k=1;,while(k=100) s=s+k; k+;,printf(“ s=%d n“,s); ,累加,思考,循环变量改变值,循环变量赋初值,循环条件判断,返回到本章目录,真(非零),循

3、环体,假(零),1、while 语句的形式:while (表达式)循环体;,2 、 while 语句 常称为“当型”循环语句。,3、说明:,先判断表达式,后执行语句。,表达式同if语句后的表达式一样,可以是任何类型的表达式。,循环体多于一句时,用一对 括起。,while循环结构常用于循环次数不固定,根据是否满足某个条件决定循环与否的情况。,P110 一、12,例1:分析下列程序段的循环次数,i=1; while (i=100) putchar(*); i+;,i=1; while (i=100) putchar(*); i+; ,循环次数的计算方法:int((终值-初值)/步长)+1,P113

4、 二、15,注意,表达式在判断前,必须要有明确的值。,循环体中一般有改变条件表达式的语句。,while (表达式)后面没有分号。,P115 三、8,P116 三、10,二、do-while语句,思考题3-6:设计一个程序,用do-while循环语句实现1100自然数的和。 (一)程序分析 (1)定义变量sum和i,分别存放累计和及循环次数;(2)累计和变量sum赋初值0,循环次数i赋初值1;(3)do-while循环求和;(4)输出累计和结果sum。,返回到本章目录,累加器赋初值,main() int k,s;,s=0; k=1;,do s=s+k; k+; while(k=100);,pri

5、ntf(“ s=%d n“,s); ,累加,循环变量改变值,循环变量赋初值,循环条件判断,4.12 do-while语句,1、 do-while的形式:do 循环体; while (表达式);,2、 do-while语句 常称为“直到型”循环语句。,真(非零),循环体,假(零),3、说明:,先执行语句,后判断表达式。,第一次条件为真时,while,do-while等价;第一次条件为假时,二者不同。,在if、while语句中,表达式后面都没有分号,而在do-while语句的表达式后面则必须加分号。,P115 9,P114 3,while 和 do-while 循环的比较,main( ) int

6、s = 0 , i ; scanf( “ %d ” , ,main( ) int s = 0 , i ; scanf( “ %d ” , ,分别输入 1 和 11 运行结果:,【例7】分别利用while语句和dowhile语句求指定的数到10以内的自然数之和。,三、for循环语句,思考题3-7:设计一个程序,用for循环语句实现1100自然数的和。 (一)程序分析,(1)定义变量sum和i,分别存放累计和及循环次数; (2)累计和变量sum赋初值0; (3)for循环求和; (4)输出累计和结果sum。,返回到本章目录,for(i=1;i=100;i+) sum=sum+i;,例如:,它相当于

7、以下语句:i=1; while (i=100) sum=sum+i; i+; ,表达式1;,while(表达式2),表达式3;,4.13 for语句,1、for的形式: for (初始表达式1;条件表达式2;循环表达式3)循环体 ;,表达式1:用于循环开始前为循环变量设置初始值。,表达式2:控制循环执行的条件,决定循环次数。,表达式3:循环控制变量修改表达式。,循环体语句: 被重复执行的语句。,表达式3,计算表达式1,循环体,零,非零,for的下一条语句,2、执行过程,P111 14、17,3、 说明,三个表达式都可以是逗号表达式。,三个表达式都是任选项,都可以省略,但要注意省略表达式后,分号

8、间隔符不能省略。,1、for语句中表达式省略的形式 (1)for语句一般形式中的“表达式1”可以省略;如: sum=0;i=1;for ( ; i100) break;sum=sum+i;,学生自学,1、for语句中表达式省略的形式 (3)表达式3也可以省略,但此时保证循环能正常结束如:for(sum=0,i=1;i=100;) sum=sum+i;i+;,学生自学,(4) 可以省略表达式1和表达式3,只有表达式2,如:i=1; sum=0; for (;i=100;) sum=sum+i;i+; ,学生自学,1、for语句中表达式省略的形式,i=1;sum=0; while (i100) b

9、reak;sum=sum+i; i+;,相当于,P111 16,(6)循环体为空语句对for语句,循环体为空语句的一般形式为:for (表达式1;表达式2;表达式3) ;如:for(sum=0,i=1;i=100;sum+=i, i+) ;,学生自学,1、for语句中表达式省略的形式,要在显示器上复制输入的字符,输入的字符为.时, 结束循环。输入abcdefg. 输出abcdefg.while( putchar(getchar( ) )!=. ) ;,(1)在进入累加前先给累加器赋初值(一般为0); (2)用循环语句实现累加; for(循环变量赋初值;循环条件;循环变量改变规律) (3)循环体

10、语句的设计。累加器当前值=累加器原值+循环变量当前值 ;,典型例题分析,【例1】 求累加和1+2+3+1000,基本方法:,属于“累加器”类型问题。,累加器赋初值,参考程序:,void main() long int k,s;,s=0;,for(k=1;k=1000;k+)s=s+k;,printf(“ s=%ld “,s); ,累加,【例2】一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 程序分析:球从第一次落地到第二次落地经过了第一次高度一半的两倍(上抛和下落), 共经过了100+50*2米,将此结果存放在sn变量

11、中;,第n次落地,共经过前n-1次的路程加上第n-1次高度一半的两倍。这样每次的高度存放在hn变量中,经过的路程存放在sn变量中。程序分析:本数列分子与分母的变化规律为:后项分母为前项的分子,后项分子为前项的分子分母之和。 程序源代码: main() int n,t,number=20; float a=2,b=1,s=0; for(n=1;n=number;n+) s=s+a/b; t=a;a=a+b;b=t; /*这部分是程序的关键,请注意t的作用*/ printf(“sum is %9.6fn“,s); 运行结果:sum is 32.660259 程序分析:我们用变量n计数,并与变量t(

12、注意赋初值为1)累乘后结果再放在此变量中,这样变量t中为n!,再将变量t中的值累加至变量s中。 程序源代码: main() float n,s=0,t=1; for(n=1;n=20;n+) t*=n; s+=t; printf(“1+2!+3!.+20!=%en“,s); 运行结果:1+2!+3!.+20!=2.56133e+18 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件:该数的平方根的平方等于该数,这说明此数是完全平方数,即是结果。 程序源代码: #include “math.h“ main() long int i,

13、x,y,z; for (i=1;i100000;i+) x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/ if(x*x=i+100 运行结果:water flowernumber is:153 371 407,main() float sn=100.0,hn=sn/2; int n; for(n=2;n=10;n+) sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/ printf(“the total of road is %fn“,sn); printf(

14、“the tenth is %f metern“,hn); ,程序分析:本数列分子与分母的变化规律为:后项分母为前项的分子,后项分子为前项的分子分母之和。 核心代码: s=s+a/b; t=a;a=a+b;b=t; /*这部分是程序的关键,请注意t的作用*/ ,【例3】 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。,main() int n; float a=2,b=1,s=0,t; for(n=1;n=20;n+) s=s+a/b; t=a;a=a+b;b=t; /*这部分是程序的关键,请注意t的作用*/ printf(“sum is %fn“,s); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号