c语言课件第五章.ppt

上传人:sccc 文档编号:5389495 上传时间:2023-07-02 格式:PPT 页数:42 大小:461.51KB
返回 下载 相关 举报
c语言课件第五章.ppt_第1页
第1页 / 共42页
c语言课件第五章.ppt_第2页
第2页 / 共42页
c语言课件第五章.ppt_第3页
第3页 / 共42页
c语言课件第五章.ppt_第4页
第4页 / 共42页
c语言课件第五章.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《c语言课件第五章.ppt》由会员分享,可在线阅读,更多相关《c语言课件第五章.ppt(42页珍藏版)》请在三一办公上搜索。

1、共 42 页 第 1 页,第五章,C 语言程序设计,循环结构,共 42 页 第 2 页,本章要点:建立循环程序设计的基本概念和逻辑思维 掌握循环程序设计的方法,共 42 页 第 3 页,什么是循环?为什么要使用循环?,?,循环的基本概念,循环是有规律的重复操作。将复杂问题分解为简单的操作过程,程序只对简单过程描述,这些过程的多次重复就可完成对问题的求解。重复的频繁性决定了循环在程序设计中必不可少!,问题1:,问题2:求学生平均成绩 分数相加后除以课数,做99次加法,问题3:找出数x中能同时被3和7整除的数 找数,问题分解循环控制,共 42 页 第 4 页,if-goto 循环 while循环

2、for循环 do while循环,先判断后循环,先循环后判断,特点:,难点:,循环嵌套,C提供四种循环控制:,共 42 页 第 5 页,5.1 if-goto 语句循环,一般形式:goto 标号;标号:语句 其中:标号用标识符表示,即由字母、数字和下划线组成,且首字符必须为字母或下划线。不能用整数作标号。用途:1.与if语句一起构成循环结构。2.从循环体中跳到循环体外(一般指最深层)。3.改变程序自上而下的执行顺序。,缺点:滥用goto语句,可使程序无规律、可读性差。,共 42 页 第 6 页,#include stdio.h main()int i=1,s=0;L1:if(i=100)s=s

3、+i;i+;goto L1;printf(s=%dn,s);,零,非零,求和 s=1+2+100,运行结果:S=?,例1,共 42 页 第 7 页,1.while循环语句的形式 while(表达式)语句,先判断条件,后执行语句,表达式,语句,零,非零,2.执行过程,注意:循环体若包含一个以上语句,应该用花括号括起来(使用复合语句)。循环体内应注意设置修改循环条件的语句。否则循环无法终止。如果表达式的值第一次计算就等于0,则循环体一次也不执行。,5.2 while循环语句,共 42 页 第 8 页,求,#include stdio.h main()int i=1,sum=0;while(i=10

4、0)sum=sum+i;i+;printf(%d,sum);,例2,思考:删除i+;后果?调换i+;与求和语句的后果?,共 42 页 第 9 页,输出华氏-摄氏温度转换表,例3,华氏温度3035之间的每一度都转换成相应的摄氏温度。转换公式:C=5*(F-32)/9,#include stdio.h main()int F;float C;F=30;while(F=35)C=5*(F-32)/9.0;printf(F=%d C=%f n,F,C);F=F+1;,共 42 页 第 10 页,输出华氏-摄氏温度转换表,运行结果 F C-1.1-0.6 0.0 0.6 1.135 1.7,共 42 页

5、 第 11 页,输入一批正数,输入0时表示输入结束,求这些正数的和。,#include stdio.h main()int s=0,x;scanf(%d,例4,思考:取消循环内的输入语句后果?,共 42 页 第 12 页,1.dowhile循环语句的形式 do 语句 while(表达式);,先执行语句,后判断条件,2.执行过程,说明:(1)dowhile循环语句首先执行循环体,然后计算表达式并检查循环条件,所以循环体至少执行一次。(2)退出dowhile循环的条件与退出while循环的条件相同。,5.3 dowhile循环语句,共 42 页 第 13 页,用do-while型循环求:,#inc

6、lude stdio.h main()int i=1,sum=0;do sum=sum+i;i+;while(i=100);printf(%d,sum);,例5,共 42 页 第 14 页,用do-while型循环求n!S=123(n-1)n,#include stdio.hmain()int i=1,n;long s=1;scanf(%d,例6,共 42 页 第 15 页,用迭代法求a的算数平方根。公式:xn=0.5*(xn-1+a/xn-1)确定初值为x0,取a/2为x0的初值,迭代结束条件:|x1-x0|=10-5.,#include stdio.h#include math.hmain

7、()float a,x0,x1;scanf(%f,例7,共 42 页 第 16 页,注意:当while后的表达式为真时,while语句和dowhile语句的结果相同,否则不同。,main()int i,s=0;scanf(%d,输入:1 打印:55输入:11 打印:0,main()int i,s=0;scanf(%d 输入:1 打印:55 输入:11 打印:11,共 42 页 第 17 页,5.4 for循环语句,1.for循环语句的形式 for(表达式1;表达式2;表达式3)语句,2.执行过程,说明:(1)计算表达式1;(2)计算表达式2,值非零执行循环体,计算表达式3,重复(3)表达式1仅

8、被执行一次;表达式2决定了是否继续执行循环;表达式3则不断修改循环控制变量的值。(4)三个表达式均可省略,分号不能省略。for 循环体可以是复合语句。,共 42 页 第 18 页,3.说明:(1)基本的应用形式:for(循环变量赋初值;循环条件;循环变量增值),求级数12+22+32+前10项之和。main()int i,sum=0;for(i=1;i=10;i+)sum=sum+i*i;printf(%d,sum);,共 42 页 第 19 页,(2)三个表达式均可缺省,但起分割作用的两个分号不可省略。例如:for(;)相当于while(1)语句,(3)表达式1和表达式3可为逗号表达式。例:

9、int i,j,sum;for(sum=0,i=0,j=100;i=j;i+,j-)sum=sum+i+j;,共 42 页 第 20 页,输出100以内所有偶数的和与所有奇数的和。#include stdio.h main()int i,s1=0,s2=0;for(i=1;i=100;i+)if(i%2=0)s2=s2+i;else s1=s1+i;printf(s1=%d,s2=%dn,s1,s2);,例8,共 42 页 第 21 页,用for循环编写输出华氏-摄氏温度转换表,华氏温度3035之间的每一度都转换成相应的摄氏温度。转换公式:C=5*(F-32)/9,#include stdio

10、.h main()int F;float C;,共 42 页 第 22 页,#include stdio.hmain()long f,f1,f2;int i;f1=f2=1;printf(%8ld%8ld,f1,f2);for(i=3;i=20;i+)f=f1+f2;printf(%8ld,f);if(i%5=0)printf(n);f1=f2;f2=f;,例9,用递推法求Fibonacci数列的前20项,并以每行5个输出。Fibonacci数列:1,1,2,3,5,8,13,21,34,。递推公式:Fn=1(n=1,n=2),Fn=Fn-1+Fn-2(n2),运行结果,程序运行演示,共 42

11、 页 第 23 页,5.5 三种循环语句的比较,for语句和while语句先判断条件,后执行语句,故循环体有可能一次也不执行,而dowhile语句的循环体至少执行一次。必须在while 语句和dowhile语句之前对循环体变量赋初值,而for语句可在表达式1中对循环变量赋初值。在循环次数已经确定的情况下,习惯用for语句;而对于循环次数不确定只给出循环结束条件的问题,习惯用while语句解决。,共 42 页 第 24 页,1.定义:在循环体内又包含一个循环结构,称为循环嵌套。三种循环都可以嵌套。下面几种都是合法的嵌套形式:,for(;)while()for循环体嵌套while循环体,for(;

12、)for(;)for循环体嵌套for循环,5.6 循环语句的嵌套,共 42 页 第 25 页,do do while();while();do_while循环体嵌套do_while循环,while()do while();while循环体嵌套do_while循环,while()for(;)while循环体嵌套for循环,do for(;)while();do_while循环体嵌套for循环,共 42 页 第 26 页,2.嵌套结构规则,外循环,内循环,交叉循环,外循环入口,内循环出口,内循环出口,外循环出口,共 42 页 第 27 页,for语句的循环嵌套,for(i=1;i=2;i+)for

13、(j=1;j=2;j+)printf(%3d,i+j);printf(n);,for(i=1;i=2;i+)for(j=1;j=2;j+)printf(%3d,i+j);printf(n);,output:2 3 3 4,output:2 3 3 4,共 42 页 第 28 页,1 2 3 4 5 6 7 8 9-1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 思路:行号为i,列号为j,i=7j=5i

14、*j,(1=i=9),(1=j=i),则:第 i 行中一共要输出 i 个乘积,输出下三角形乘法九九表,例10,共 42 页 第 29 页,用for语句实现打印乘法九九表。,#include main()int i,j;for(i=1;i=9;i+)printf(%4d,i);printf(n-n);for(i=1;i=9;i+)for(j=1;j=i;j+)printf(j=i)?%4dn:%4d,i*j);,输出函数printf中使用了“?”操作,含义相当于:if(j=i)printf(%4dn,i*j);else printf(%4d,i*j);,思考:如何打印1*1=1?,共 42 页

15、第 30 页,for循环嵌套while循环:输入6名学生5门课程的成绩,分别统计每名学生5门课程的平均成绩。,#include stdio.h main()int i,j;float score,sum;ave;for(i=1;i=6;i+)sum=0;j=1;while(j=5)scanf(%f,例11,共 42 页 第 31 页,5.7 break和continue语句,1.break 语句语法:break;功能:终止包含该语句的最内层循环。main()int n;for(n=100;n=200;n+)if(n%3=0)break;printf(%6d,n);,2.continue 语句语

16、法:continue;功能:结束循环体的本次执行。main()int n;for(n=100;n=200;n+)if(n%3=0)continue;printf(%6d,n);,该语句只能出现在for,while或dowhile语句中。,该语句只能出现在switch,for,while或dowhile语句中。,共 42 页 第 32 页,for 循环结构中的break结构,for循环结构中的continue结构,共 42 页 第 33 页,说明:发生下列情况之一时,循环结束执行:表达式的值为0;循环体内遇到break语句;循环体内遇到goto 语句,且与该goto语句配合 使用的标号所指定的语

17、句在本循环体外;,共 42 页 第 34 页,3.空语句形式:;(只由一个分号构成)功能:什么也不做。(可出现在程序中任何语句可以出现的地方)例10:求级数12+22+32+,前10项之和。main()int i,sum;for(sum=0,i=1;i=10;sum+=i*i,i+);printf(sum=%dn,sum);,共 42 页 第 35 页,1.输入一个整数m,判断是否为素数。若m不能被2m-1之间的任何一个整数整除,则m为素数。算法分析:设k=m-1,用2至m-1依次去除m,若m能被2k之中任何一个整数整除,则不必除下去,肯定不是素数,跳出循环,(i=k+1.在循环之后判别i的值

18、是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,因此输出“是素数”。,编程举例,共 42 页 第 36 页,程序如下:#include stdio.hmain()int m,i,k;scanf(%d,共 42 页 第 37 页,2.编写程序输出图形,讨论1.输入m;2.for(k=1;k=m;k+)打印 k 个*;换新行;,细化:1.输入m;2.for(k=1;k=m;k+)for(j=1;j=k;j+)printf(*);printf(n);,*,说明:1.循环变量可以控制循环次数;2.外循环变量可作为内循环次数的控制变量.,共 42 页 第 38 页,#include ma

19、in()int k,m,j;scanf(%d,整理得到程序如下:,共 42 页 第 39 页,3.求sin(x)的近似值(x是弧度)。sin x=x-x3/3!+x5/5!-x7/7!+(-1)n+1x2n-1/(2n-1)!+分析:本例可作为循环累加问题处理,考虑适当的精度要求。设i为项数,s为累加和,s=s+级数的下一项第i项的绝对值:x2i-1/(2i-1)!第i项的运算符号(-1)i+1第i+1项的绝对值等于x2(i+1)-1/(2(i+1)-1)!=x2i+1/(2i+1)!因此,第i+1项的绝对值等于第i项的绝对值乘x2再除以(2i)*(2i+1)级数的下一项可用下面表达式实现:-

20、(上一项的值)*x*x/(2+i)*(2*i+1);,共 42 页 第 40 页,程序如下:#include stdio.hmain()int i;double x,t,s=0.0;scanf(%lf,程序运行演示,共 42 页 第 41 页,main()int m,n,max,i;scanf(%d%d,4.输入两个正整数m和n,求其最小公倍数.,程序运行演示,共 42 页 第 42 页,小 结,1.循环程序设计的要点 循环初值,循环条件,循环体设定2.C语言循环程序设计的三种结构 for,while,do-while3.程序设计的一般步骤分析给定问题的详细步骤,总结出解决问题的一般方法;画出程序流程图或写出程序草案;编制程序;输入程序、进行语法检查;运行、测试程序(使用多组数据进行测试)。4.本章通过例子介绍了递推法、迭代法等基本算法。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号