C语言教程课件ch课件.ppt

上传人:wuy****n92 文档编号:80459657 上传时间:2023-03-23 格式:PPT 页数:61 大小:371KB
返回 下载 相关 举报
C语言教程课件ch课件.ppt_第1页
第1页 / 共61页
C语言教程课件ch课件.ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《C语言教程课件ch课件.ppt》由会员分享,可在线阅读,更多相关《C语言教程课件ch课件.ppt(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、课本课本129129页习题:页习题:6.1 6.16.56.56.66.66.86.8补充题:补充题:某人新开了一个存款帐户,存入某人新开了一个存款帐户,存入10001000元,年元,年利率是利率是5%5%。假定所有利息收入都于满整年时,。假定所有利息收入都于满整年时,重新存入帐户,请计算并打印在为期重新存入帐户,请计算并打印在为期1010年的时年的时间里,每一年结束时的账面金额。间里,每一年结束时的账面金额。4月月1日日 上机上机3:循环结构程序设计:循环结构程序设计#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;pr

2、intf(%d,sum);#include void main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(%d,sum);#include void main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(%d,sum);#include void main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(%d,sum);#include void main()int i,sum=0;i=1;loop:sum=

3、sum+i;i+;if(i=100)goto loop;printf(%d,sum);break;continue;本章主要内容:本章主要内容:用用while语句实现循环语句实现循环用用dowhile语句实现循环语句实现循环用用for语句实现循环语句实现循环循环的嵌套循环的嵌套break语句和语句和continue语句语句程序举例程序举例 1一般形式一般形式:goto 语句标号语句标号;2说明说明:1)语句标号定名规则语句标号定名规则与变量名相同与变量名相同;2)不提倡使用)不提倡使用goto语句语句;1形式形式:while(条件表达式)(条件表达式)循环体语句循环体语句2作用作用:实现:实现

4、“当型当型”循环循环 当条件满足时,执行语句当条件满足时,执行语句3特点特点:先判断表达式,后执行语句:先判断表达式,后执行语句循环体语句条件表达式循环体语句条件表达式while语句的图形表达真假while的后续语句例例0:用:用 while 语句实现在屏幕上输出语句实现在屏幕上输出10行行“I love programming!”。分析分析:设计变量并赋初值设计变量并赋初值 用用int型变量型变量i表示行数,初值为表示行数,初值为1设计循环条件设计循环条件 i10设计循环体设计循环体 printf(“I love programming!n”);i+;用循环语句实现用循环语句实现#inclu

5、de void main()int i;i=1;while(i=10)printf(“I love programming!n”);i+;循环变量循环变量赋初值赋初值循环变量循环变量增值增值循环条件循环条件循环体循环体条件表达式条件表达式必须加括号,括号必须加括号,括号后不能有;后不能有;循环体包含多条语循环体包含多条语句时,句时,不能少不能少使用说明:使用说明:1)在在while的循环体中一定要有使循环趋于结束的的循环体中一定要有使循环趋于结束的语句;否则将形成语句;否则将形成死循环死循环;2)注意循环操作的范围、花括号、分号的使用;注意循环操作的范围、花括号、分号的使用;3)注意与循环变量

6、赋初值的位置及初值的正确性;注意与循环变量赋初值的位置及初值的正确性;例例1:用:用 while 语句实现语句实现 1+2+3+100分析分析:设计变量并赋初值设计变量并赋初值 1.用用int型变量型变量sum存放和,初值为存放和,初值为0 2.用用int型变量型变量i表示累加变量,初值为表示累加变量,初值为1设计循环体设计循环体 sum=sum+i;i+;设计循环条件设计循环条件 i100用循环语句实现用循环语句实现程序流程图:程序流程图:开始初始化 sum=0;i=1;判断:i=100?sum=sum+i;i=i+1;输出 sum结束真假真sum=sum+i;i=i+1;判断:i=100?

7、#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);循环变量循环变量赋初值赋初值循环变量增值循环变量增值循环条件循环条件循环体循环体#include void main()int sum=0,i=1;while (i=100)sum=sum+i;i+;printf(sum%dn,sum);程序程序:i+;sum+=i;i=0;100例例 2求求1到到100之间的奇数之和,偶数之积之间的奇数之和,偶数之积。sum=0 mul=1 i=100i%2=010mul=mul*isum=sum+i输出输出

8、sum,muli+;i=1void main()double mul=1;int i=1,sum=0;while (i=100)if (i%2=0)mul=mul*i;else sum=sum+i;i+;printf(sum=%dn,sum);printf(mul=%en,mul);void main()int i,k1,k2,k;i=1;k1=1;k2=2;while (i=5)k=k1+k2;k1=k2;k2=k;i+;printf(%5d,k);例例 3读程序练习:读程序练习:3 5 8 13 21 1形式:形式:do 语句语句 while(表达式);(表达式);2作用:实现作用:实现“

9、直到型直到型”循环循环3特点:先执行语句,后判断条件,特点:先执行语句,后判断条件,直到条件不满足为止。直到条件不满足为止。循环体语句条件表达式循环体语句条件表达式do_while语句的图形表达真假void main()int i,sum=0;i=1;do sum=sum+i;i+;while (i=100);printf(sum=%d,sum);例例 1用用do_while 语句实现语句实现 1+2+3+100i+;sum+=i;i=0;100while循环与循环与do_while循环小结循环小结:1.循环体内必须有使循环趋于终止的条件循环体内必须有使循环趋于终止的条件 while (i=1

10、00)sum=sum+i;i+;do sum=sum+i;i+;while (i=100);2.注意循环初值与循环条件注意循环初值与循环条件i=1;while (i=100)sum=sum+i;i+;i=0;while (i100)i+;sum=sum+i;3.do_while 循环的循环体至少执行一循环的循环体至少执行一 次次,while循环的循环体可能一次循环的循环体可能一次 也不执行。也不执行。4.在循环体至少执行一次的前提下,在循环体至少执行一次的前提下,do_while与与while 循环等价。循环等价。例例3:求求 n!void main()int i=1,n;double m=1

11、;scanf(%d,&n);while(i=n)m=m*i;i+;printf(%10.0fn,m);printf(“i=%dn”,i);void main()int i=1,n;double m=1;scanf(%d,&n);do m=m*i;i+;while(i=n);printf(%10.0fn,m);printf(“i=%dn”,i);1.一般形式:一般形式:for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句 for 的循环体的循环体括号不可少括号不可少分号不可少分号不可少求表达式求表达式1判表达式判表达式2语句语句求表达式求表达式3for语句的下一语句的下一个语句个语句

12、 真真,非非0假假,值为值为0for语句执行过程示意for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句表达式表达式1只只执行执行1次;次;表达式表达式3和和内嵌语句执内嵌语句执行多次行多次通常:通常:表达式表达式1用于对循环控制变量赋初值用于对循环控制变量赋初值 表达式表达式2给出循环控制条件给出循环控制条件;表达式表达式3使循环控制变量增值;使循环控制变量增值;循环类型循环类型:当型:当型例例:#include void main()int i,sum=0;for (i=1;i=100;i+)sum=sum+i;printf(“sum=%dn”,sum);例:例:for(i=0

13、;i=10;i=i+2)printf(“%3d”,i);printf(“ni=%d”,i);运行结果:运行结果:0 2 4 6 8 10 i=12例:例:for(i=10;i;i-)printf(“%d,”,i);运行结果:运行结果:10,9,8,7,6,5,4,3,2,1,例:例:for(i=1,j=6;ij;i+,j-)printf(“%d*%d=%dn”,i,j,i*j);运行结果:运行结果:1*6=6 2*5=10 3*4=12 例:空循环构成一个延时器例:空循环构成一个延时器 long t;for(t=0;t=83000000;+t);3.说明说明:1)表达式)表达式1可省略,但分号

14、不能省可省略,但分号不能省;如如:int i=1,sum=0;for(;i=100;i+)sum=sum+i;2)若表达式)若表达式2省略,循环条件永远为真省略,循环条件永远为真;如如:for(i=1;i+)printf(“%d,”,i);死循环死循环3)表达式)表达式3也可省略,但应设法保证循环正常结束也可省略,但应设法保证循环正常结束;如如:for(i=1;i=100;)sum=sum+i;i+;4)可只给循环条件)可只给循环条件;i=1;for(;i=100;)sum=sum+i;i+;5)三个表达式都可省)三个表达式都可省;for(;)相当于相当于 while(1)6)表达式)表达式1

15、和表达式和表达式3可以是逗号表达式可以是逗号表达式;如如:for(i=1,sum=0;i=100;i+)sum=sum+i;7)表达式)表达式2一般为关系表达式或逻辑表达式,但一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为也可以是数值表达式或字符表达式,只要其值为非零非零就执行循环体就执行循环体。如如:for(;(c=getchar()!=n;)printf(%c,c);注注:1.尽量避免用尽量避免用实型变量实型变量控制循环次数。控制循环次数。2.在循环体内尽量避免改变循环变量的在循环体内尽量避免改变循环变量的 值值,否则将难以预知循环次数。否则将难以预知循环次数。

16、void main()int i;for(i=1;i=20;i+)i=i+5;printf(%5d,i);printf(n);运行结果为:运行结果为:6 12 18 24修改了循环变量修改了循环变量 概念概念:一个循环体内又包含另一个完整:一个循环体内又包含另一个完整的循环结构的循环结构。说明说明:1)三种循环可以互相嵌套)三种循环可以互相嵌套 2)嵌套可以是多层的)嵌套可以是多层的 外循环外循环 内循环内循环 外循环外循环 内循环内循环1 内循环内循环2三重循环三重循环错误的循环交叉形式:错误的循环交叉形式:例:do-while嵌套 例:do-while、for混合嵌套 do do do f

17、or(e1;e2;e3)while(e1);while(e);while(e);*void main()int i,j;for(i=1;i=5;i+)for(j=1;j=5;j+)printf(*);printf(n);例:在屏幕上输出一个由例:在屏幕上输出一个由例:在屏幕上输出一个由例:在屏幕上输出一个由5*55*5星号组成的方形。星号组成的方形。星号组成的方形。星号组成的方形。#includevoid main()int i,j,n;scanf(“%d”,&n);for(i=1;i=n;i+)for(j=1;j=n;j+)printf(*);printf(n);例:在屏幕上输出一个由例:在

18、屏幕上输出一个由例:在屏幕上输出一个由例:在屏幕上输出一个由n*nn*n个星号组成的方形。个星号组成的方形。个星号组成的方形。个星号组成的方形。1.四种循环一般可互相代替四种循环一般可互相代替2.循环次数已知时,常用循环次数已知时,常用循环次数已知时,常用循环次数已知时,常用forfor 循环次数未知时,常用循环次数未知时,常用循环次数未知时,常用循环次数未知时,常用whilewhile或或或或do-whiledo-while。3.while和和do-while循环的循环体中应包括使循循环的循环体中应包括使循环趋于结束的语句。环趋于结束的语句。4.forfor的功能强于的功能强于的功能强于的功

19、能强于whilewhile和和和和do-whiledo-while 5.5.循环变量初始化的位置不同。循环变量初始化的位置不同。循环变量初始化的位置不同。循环变量初始化的位置不同。6.while和和for循环是当型循环循环是当型循环,do-while循环是直到型循环循环是直到型循环一、一、break语句语句 作用作用:1)从循环体内跳出,即提前结束循环从循环体内跳出,即提前结束循环,接着,接着执行循环下面的语句执行循环下面的语句 ;2)break语句语句只能只能 用于用于循环语句和循环语句和 switch 语语句句。#include void main()int r;float area;fo

20、r(r=1;r100)break;printf(“r=%d,area=%-7.2fn”,r,area);printf(“r=%d”,r);计算半径为计算半径为1 1到到1010的的各圆面积,直到面各圆面积,直到面积大于积大于100100为止。为止。r=6 注意:注意:在循环中使用了在循环中使用了break语句后,循环语句的语句后,循环语句的结束可能有两种:结束可能有两种:1.正常结束(正常出口);由于循环条件表达正常结束(正常出口);由于循环条件表达式为假式为假2.非正常结束(异常出口):由非正常结束(异常出口):由break语句引语句引起起使用说明:使用说明:1)内循环中的break仅跳出内

21、循环结构;if(e)break;2)被循环语句嵌套的switch中出现的break,仅跳 出switch;switch(e)break;二、二、continue 语句语句作用作用:结束:结束本次本次循环,即跳过循环体中下面尚未循环,即跳过循环体中下面尚未 执行的语句,接着执行下一次是否执行循环的判执行的语句,接着执行下一次是否执行循环的判 定。定。for(n=100;n=200;n+)if (n%3=0)continue;printf(“%d”,n);if (n%3!=0)printf(“%d”,n);例:for中用 continue 例:while中用continue for(e1;e2;e

22、3)while(e1)if(e)continue;if(e)continue;三、三、break语句和语句和continue语句的区别是语句的区别是:1)continue 语句只结束语句只结束本次循环本次循环,不终止整,不终止整个循环的执行;个循环的执行;2)break 语句是语句是终止整个循环终止整个循环的执行,不再进的执行,不再进行条件判断。行条件判断。例:例:从键盘上任意输入一个正整数,判断其是否为素数。从键盘上任意输入一个正整数,判断其是否为素数。素数:除了素数:除了1和它本身之外没有其他因子的数。换句和它本身之外没有其他因子的数。换句话说只要有因子(除了话说只要有因子(除了1和它本身

23、之外)则该数一定和它本身之外)则该数一定不是素数不是素数判断判断m是否素数:是否素数:(穷举法穷举法)for(i=2;im-1void main()int m,i;scanf(%d,&m);for(i=2;im-1)printf(%d is a prime,m);else printf(%d is not a prime,m);非正常出口方方法法1void main()int m,i,k=1;scanf(%d,&m);for(i=2;i=m-1;i+)if(m%i=0)k=0;if(k)printf(%d is a prime,m);else printf(%d is not a prime,

24、m);方方法法2标志变量标志变量例例1用公式求用公式求的近似值,直到最后一项的的近似值,直到最后一项的绝对值小于绝对值小于10-6为止为止。/41-1/3+1/5-1/7+算法分析:算法分析:1.循环累加循环累加 pi=pi+t;2.交替改变符号交替改变符号 s=-s;3.每项分子为每项分子为 1,分母分母 n=n+2;#include void main()int s;float n,t,pi;t=1;pi=0;n=1;s=1;while(fabs(t)=1e-6)pi=pi+t;n=n+2;s=-s;t=s*1.0/n;printf(pi=%10.6fn,4*pi);程序程序:例例 2求求

25、Fibonacci数列:数列:1,1,2,3,5,8,.的前的前40个数个数。f1 f2 1 1f1=f1+f2;f2=f2+f1;fi=fi-1+fi-2f12f23.void main()long int f1,f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(%12ld%12ld,f1,f2);if(i%2=0)printf(n);f1=f1+f2;f2=f2+f1;与此解题方法类似的有与此解题方法类似的有:(递推法递推法)1、编写求、编写求 20+21+22+2 3+263 的程序的程序。2、求、求1!+2!+3!+20!。3、有一个分数序列、有一个分

26、数序列 2/1,3/2,5/3,8/5,13/8,21/13求出这个数列的前求出这个数列的前20项之和项之和4、求、求:Sn=a+aa+aaa+aaaaaa,其中其中a是一是一个数字个数字,n表示表示a的位数,的位数,n要求由键盘输入。要求由键盘输入。等等。等等。void main()int i,j,m=0;for(j=100;j=200;j+)for(i=2;ij-1)printf(%5d,j);m+;if(m%10=0)printf(n);printf(m=%dn,m);例例3:求:求100200之间的所有素数及素数的个数。之间的所有素数及素数的个数。输出输出10个素数后换行个素数后换行与

27、此解题方法类似的有与此解题方法类似的有:(穷举法、列举法穷举法、列举法)1、输出所有的水仙花数。、输出所有的水仙花数。2、找出、找出11000之间的全部同构数之间的全部同构数。一个数等于。一个数等于它的平方数的右端,就称为同构数。如它的平方数的右端,就称为同构数。如:5的平方的平方是是25,25的平方是的平方是625。3、编程找出、编程找出1000之内的所有完数。一个数恰好等之内的所有完数。一个数恰好等于它的因子之和,这个数就称为于它的因子之和,这个数就称为“完数完数”。例如:。例如:6的因子为的因子为1,2,3,而,而6=1+2+3,因此,因此6是完数。是完数。例例4:从键盘输入字符直到输入

28、字符:从键盘输入字符直到输入字符#为止,并统计为止,并统计 输入字母的个数。输入字母的个数。特点:特点:循环次数事先无法确定循环次数事先无法确定#include void main()char ch;int count=0;do ch=getchar();if(ch=A&ch=a&ch=z)count+;while(ch!=#);printf(”count=%dn”,count);例例4:从键盘输入字符直到输入字符:从键盘输入字符直到输入字符#为止,并统计为止,并统计 输入字母的个数。方法输入字母的个数。方法2:#include void main()char ch;int count=0;w

29、hile(1)ch=getchar();if(ch=A&ch=a&ch=z)count+;if(ch=#)break;printf(”Count=%dn”,count);例例5:在屏幕上输出以下图形。在屏幕上输出以下图形。*分析:(设分析:(设N=5N=5)第第1 1行:行:4 4个空格个空格 1 1个个“*”“*”换行换行符符 第第2 2行:行:3 3个空格个空格 3 3个个“*”“*”换行换行符符第第3 3行:行:2 2个空格个空格 5 5个个“*”“*”换行换行符符第第4 4行:行:1 1个空格个空格 7 7个个“*”“*”换行换行符符第第5 5行:行:0 0个空格个空格 9 9个个“*

30、”“*”换行换行符符由此归纳出:第由此归纳出:第i i行的空格数行的空格数5-i5-i个;个;第第i i行的行的“*”“*”数是数是2i-12i-1个。个。void main()int i,j;for(i=1;i=5;i+)for(j=1;j=5-i;j+)printf();for(j=1;j=2*i-1;j+)printf(*);printf(n);本章小结本章小结本章介绍的内容本章介绍的内容 介绍了介绍了while、dowhile、for三种循环结构三种循环结构的使用和它们之间的区别,以及的使用和它们之间的区别,以及break、continue的用法的用法要求达到的目标要求达到的目标掌握掌

31、握while、dowhile、for语句的用法语句的用法会使用这三种结构进行循环程序设计会使用这三种结构进行循环程序设计理解理解 break 和和 continue在程序控制中的作用在程序控制中的作用课本课本129129页习题:页习题:6.1 6.16.56.56.66.66.86.8补充题:补充题:某人新开了一个存款帐户,存入某人新开了一个存款帐户,存入10001000元,年元,年利率是利率是5%5%。假定所有利息收入都于满整年时,。假定所有利息收入都于满整年时,重新存入帐户,请计算并打印在为期重新存入帐户,请计算并打印在为期1010年的时年的时间里,每一年结束时的账面金额。间里,每一年结束时的账面金额。作业:作业:

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com