(5)--ch5 循环结构程序设计1.ppt





《(5)--ch5 循环结构程序设计1.ppt》由会员分享,可在线阅读,更多相关《(5)--ch5 循环结构程序设计1.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章循环结构程序设计 核心概念核心概念n重复任务的处理n批数据的处理n循环结构n当循环结构n直到循环结构n循环条件的动态变化n循环与数组学习目标学习目标n理解循环结构的含义n掌握for循环的用法n掌握while循环和do-while循环的用法n掌握循环结构中break语句和continue语句的用法n熟练掌握循环结构程序设计章节内容章节内容n5.1 班级体重指数计算器n5.1.1 while循环n5.1.2 do-while循环n5.1.3 for循环n5.1.4 循环的嵌套n5.1.5 goto语句和标号n5.1.6几种循环语句的比较n5.2 break和continue语句n5.2.1
2、循环中的break语句n5.2.2continue 语句n5.3 程序举例5.1 班级体重指数计算器班级体重指数计算器 n智能体重指数计算器只要输入某人身高和体重,通过计算和分析判断,就可以输出其BMI值、BMI分类和健康信息。假如一个班级有30人进行健康检查,则该程序需要重复执行30次,使用比较繁琐。n例例5.1 班级体重指数计算器n利用C语言提供while循环控制语句,设计一个功能更强的智能体重计算器,能够处理任意多个人BMI的计算和健康判断。每次计算出一个学生的BMI信息,都会提示是否退出程序,如果输入字母Y或y,程序会结束执行;如果按任意键,则进行下一个学生的BMI计算。为了区分多个学
3、生的健康信息,要求输入学生学号。5.1 班级体重指数计算器班级体重指数计算器#include#include /*fflush函数的头文件*/void main()float hight,weight,bmi;/*声明身高hight和体重weight两个变量*/char c;/*接受用户从键盘输入的字符*/int no;/*存储学号*/printf(-班级智能体重指数计算器-n);while(1)/*循环while语句,表达式为1表示永远为真*/printf(n请输入您的学号:);/*显示提示信息*/scanf(%d,&no);/*输入学生学号*/printf(请输入您的身高(厘米):);/*
4、显示提示信息*/scanf(%f,&hight);/*输入身高*/printf(请输入您的体重(公斤):);/*显示提示信息*/5.1 班级体重指数计算器班级体重指数计算器 scanf(%f,&weight);/*输入体重*/bmi=weight/(hight/100*hight/100);/*利用公式计算出bmi*/printf(-学号%d同学的健康信息-n,no);printf(1.您的体重指数:%5.2f n,bmi);/*输出bmi的值*/printf(2.根据WHO标准,您BMI处于);if(bmi18.5)printf(体重过低n);printf(3.相关疾病发病低,但其它疾病危险
5、性增加n);else if(bmi25)printf(正常范围n);printf(3.相关疾病发病的危险性处于平均水平n);else if(bmi30)printf(肥胖前期n);printf(3.相关疾病发病的危险性增加n);5.1 班级体重指数计算器班级体重指数计算器 else if(bmi35)printf(I度肥胖n);printf(3.相关疾病发病的危险性中度增加n);else if(bmi40)printf(II度肥胖n);printf(3.相关疾病发病的危险性严重增加n);elseprintf(III度肥胖n);printf(3.相关疾病发病的危险性非常严重增加n);5.1 班级
6、体重指数计算器班级体重指数计算器 fflush(stdin);/*清除键盘缓冲区*/nprintf(如果退出程序,请输入字符Y,继续请按任意键:);nc=getchar();nif(c=Y|c=y)nbreak;/*退出循环*/nfflush(stdin);/*清除键盘缓冲区*/nnprintf(谢谢,再见!n);n5.1 班级体重指数计算器班级体重指数计算器 n运行结果如下:n-班级智能体重指数计算器-n请输入您的学号:1n请输入您的身高(厘米):176n请输入您的体重(公斤):75n-学号1同学的健康信息-n1.您的体重指数:24.21n2.根据WHO标准,您BMI处于正常范围n3.相关疾
7、病发病的危险性处于平均水平n如果退出程序,请输入字符Y,如果继续请按任意键:nn请输入您的学号:2n请输入您的身高(厘米):180n请输入您的体重(公斤):81n-学号2同学的健康信息-n1.您的体重指数:25.00n2.根据WHO标准,您BMI处于肥胖前期n3.相关疾病发病的危险性增加n如果退出程序,请输入字符Y,如果继续请按任意键:Yn谢谢,再见!5.1 班级体重指数计算器班级体重指数计算器 n本例添加了一个while循环语句和提示用户是否退出程序的判断,其他的基本一样。当程序执行while语句时,首先判断循环的条件,如果为非0,执行while包含的语句;如果为0,结束while语句,执行
8、while语句的下一语句。n循环控制结构是结构化程序设计所采用的三种基本控制结构之一,只要编写少量的代码,让计算机反复执行,完成大量的同类运算,这样会使程序语句减少,整个程序结构清晰。nC语言的循环结构由三部分组成:关键字关键字、循环条件循环条件和循环循环体体(某段程序),如果循环条件成立(即为真),反复执行循环体,直到循环条件不成立为止。C语言提供了while、do-while和for三种语句来实现循环结构。5.1.1 while循环循环nwhile语句的一般形式为:nwhile(表达式P)n语句S;n表达式P是循环条件,语句S为循环体。while语句的语义是:先计算表达式P的值,当值为真(
9、非0)时,执行循环体语句,直到表达式的P值为假(0)为止。n注意,在while循环中,循环条件表达式的圆括号不能省略。该表达式中一般应含有变量,并且在循环体中变化,这样才能使循环条件发生变化,否则,会永远循环下去。n循环体可以是一条语句,也可以是多条语句组成的复合语句,也可以是空语句,即仅仅是一个分号。5.1.1 while循环循环 while语句执行流程图表达式循环体TFwhile5.1.1 while循环循环n例例5.2 用while语句求1100的累加和。nvoid main()n int i,sum=0;n i=1;/*循环变量赋初值*/n while(i=100)/*循环条件*/n
10、n sum=sum+i;n i+;/*修正循环变量*/n n printf(sum=%dn,sum);nn运行结果为:nsum=50505.1.1 while循环循环n例例5.3 统计从键盘输入一行字符的个数。nvoid main()n int n=0;n printf(input a string:n);n while(getchar()!=n)n n+;n printf(count is%dn“,n);nn 本例程序中的循环条件为getchar()!=n,其含义是从键盘输入的字符只要不是回车就继续循环。循环体n+完成对输入字符个数计数,但是没有统计最后输入的回车符。从而程序实现了对输入一行
11、字符的字符个数统计。5.1.1 while循环循环例例5.4 从0开始连续输出n个偶数。void main()int a=0,n;printf(n input n:);scanf(%d,&n);while(n-)printf(%d ,a=a*2);a+;程序运行结果如下:input n:50 2 4 6 8n 上面程序中,如果输入了大于0的整数n,执行n次循环,每执行一次,n值减1。如果用户输入了0,循环条件为假,循环体一次都不执行。如果输入了负整数,则出现永远的循环。所以,在设计循环条件的时候一定要仔细考虑,避免出现死循环的情况。5.1.1 while循环循环n例例5.5 求两个正整数的最大
12、公因子。n采用欧几里德算法求解最大公因子,其NS图如5-2所示。输入两个正整数m,nn!=0r=m%nm=nn=r输出最大公共因子m5.1.1 while循环循环void main()int m,n,r;printf(please input two positive integer:);scanf(%d%d,&m,&n);while(n!=0)r=m%n;m=n;n=r;printf(their greatest common divisor is%d.n,m);程序运行结果如下:please input two positive integer:320 198their greatest
13、common divisor is 2.5.1.2 do-while循环循环 ndo-while语句的一般形式为:n don 语句Sn while(表达式P);n表达式P是循环条件,语句S为循环体。do-while语句的执行过程:首先执行循环体中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。do-while和while语句的区别区别是:do-while语句,先执行循环体,后判断条件,所以do-while循环至少要执行一次循环语句,do-while语句执行过程可用右图表示。表达式语句TFdo-while5.1.2 do-while循环循环n循环条件的括号不能省略,最
14、后的分号也不能省略,它表示do-while语句的结束(如果省略,则可以认为是while语句的开始部分,这样产生了混淆)。如果循环体是由多条语句组成的复合语句,while通常和最后一个花括号在一行上,这样可以清晰表示do-while的结束。n例例5.6 用do-while语句求1100的累加和。nvoid main()n int i,sum=0;n i=1;n don n sum=sum+i;n i+;n while(i=100);n printf(%dn,sum);n 5.1.2 do-while循环循环n例5.2和5.6都是求解1100的累加和,while和do-while两种实现的循环体和
15、循环条件相同。所以可以这样判定,对对于同一个问题如果循环体至少执行一次于同一个问题如果循环体至少执行一次,while和do-while的处理是等价的。也可以这样说,当while的循环条件的初始值为“真”时,while和do-while得到的结果是一样的。n有的问题处理逻辑比较适合于先处理,再判断条件,这时采用do-while。有的问题适合于先判断条件,再处理,这时采用while。无论采用哪个语句,都要进行循环变量的循环变量的初始化和修正初始化和修正。为了使循环结构中这两个部分更加清晰,C语言提供了一个for语句,使这两部分与循环条件一起成为其必要的成分。这也是for语句使用更加灵活、更为广泛的
16、原因。5.1.3 for循环循环nfor语句不仅适合于循环次数已经确定的情况,还适合于循环次数不确定的情况,所以说for语句完全可以替代while语句。for语句的一般形式为:for(表达式1;表达式2;表达式3)语句S;n表达式2是循环条件,语句S为循环体,表达式1为设置初始条件(包括循环变量的初始化),表达式3为循环变量的调整(通常为循环变量的修改,有时称为循环步长修改),三个表达式之间用分号分隔开,两个分号都不能缺少。for语句的执行过程:5.1.3 for循环循环(1)先求解表达式1;(2)求解表达式2,若其值为真(非0),则执行循环体语句,然后执行第3步;若其值为假(0),则结束循环
17、,转到第(4)步;(3)求解表达式3,然后无条件转回第(2)步继续执行;(4)循环结束,继续执行for语句下面的语句;其执行过程可用图5-4表示。求解表达式1表达式2计算表达式3语句TFfor5.1.3 for循环循环nfor语句可以等价转换为while语句:表达式1;while(表达式2)语句S;表达式3;n相比之下,for语句最简单、更容易理解,减少出错的几率,所以for语句可理解为:for(循环变量赋初值;循环条件;循环变量增量或减量)循环体语句;5.1.3 for循环循环例例5.7 用for语句求1100的累加和。#include void main()int i,sum=0;for(
18、i=1;i=100;i=i+1)sum=sum+i;printf(sum=%dn,sum);n在循环语句中,习惯用诸如 i,j,k 之类的字母作为循环变量,用来控制循环的执行次数。这些变量又称为循环控制变量。5.1.3 for循环循环nfor循环中的表达式1(循环变量赋初值)、表达式2(循环条件)和表达式3(循环变量增量)都是选择项选择项,即可以缺省,但它们之间的分隔符“;”不能缺省。n(1)省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。n例如:int i=1n for(;i=100;i+)n sum=sum+i;n(2)省略了“表达式2(循环条件)”,表示循环条件永远为真
19、循环条件永远为真,这时成为死循环。此时循环体需要用if语句进行条件判断,用break退出for循环。n例如:for(i=1;i+)n if(i=100)n sum=sum+i;n elsen break;5.1.3 for循环循环n(3)省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在循环体语句中加入修改循环控制变量的语句。例如:for(i=1;i=100;)sum=sum+i;i+;n(4)表达式1、表达式2和表达式3都可以省略,此时for(;)相当于while(1),是一个无限循环结构,循环体需要使用if语句进行条件判断,用break退出for循环。5.1.3 fo
20、r循环循环n(5)表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。例如:for(sum=0,i=1;i=100;i+)sum=sum+i;或:for(i=0,j=100;i=100;i+,j-)k=i+j;n(6)循环体可以是简单语句、复合语句,也可以是空语句。5.1.4 循环的嵌套循环的嵌套n一个循环体内又包含着另外一个完整的循环,成为循环的嵌套。如果内循环中也是嵌套循环就是多层循环。while、do-while和for三个循环语句可以相互嵌套。n例例5.8已知每只公鸡5元,每只母鸡3元,三只小鸡1元,现有100元,要买100只鸡,问公鸡、母鸡、小鸡各多少只。n设公鸡、母鸡、小鸡数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 5-ch5 循环结构程序设计1 ch5 循环 结构 程序设计

限制150内