《第五讲嵌套结构课件.ppt》由会员分享,可在线阅读,更多相关《第五讲嵌套结构课件.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五讲嵌套结构第1页,此课件共48页哦2主要内容n第一讲 嵌套结构n第二讲 模块化结构n第三讲 其它控制结构语句介绍n第四讲 反向数据传递-输出参数n第五讲 数据文件n涉及课本内容:第3,4,5,8.1,8.2,12章第2页,此课件共48页哦3第一讲 嵌套结构第3页,此课件共48页哦4主要内容n嵌套结构:自顶向下,逐步细化的分析的结果n选择嵌套结构if 深入n循环嵌套结构n复合嵌套结构n嵌套结构的典型算法第4页,此课件共48页哦5嵌套结构n自顶向下,逐步细化的分析的结果第5页,此课件共48页哦6程序的三种基本控制结构nBohra和Jacopini提出了以下三种基本结构:顺序结构选择结构循环结构
2、n 用这三种基本结构作为表示一个良好算法的基本单元。第6页,此课件共48页哦7顺序结构顺序结构选择结构选择结构三种基本结构的图示循环结构循环结构第7页,此课件共48页哦8三种基本结构的共同特点n(1)只有一个入口。n(2)只有一个出口。(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)n(3)结构内的每一部分都有机会被执行到。n(4)结构内不存在“死循环”(无终止的循环)。第8页,此课件共48页哦9嵌套结构n三种基本结构中的语句组(顺序语句组、if分支语句组、else分支语句组、循环体语句组)可以包含任意结构的语句,从而形成不同的嵌套结构
3、。n嵌套结构没有特定的结构形式,由分析方法自然形成第9页,此课件共48页哦10嵌套结构示例:求n个数中的最大值(sample02_01.cpp)n输入nn输入第一个数,假定为最大值maxn循环i从2到n,step 1输入一个数到x如果x比假定最大值max还大,则 修正max为xn输出max的值循环体嵌套:顺序语句选择语句第10页,此课件共48页哦11if语句深入n复杂条件表示逻辑运算符连接多个条件nif语句的多种结构nif和else的匹配原则第11页,此课件共48页哦复杂条件的表示nx是一个介于0到10的数n0=x=0并且x=0&x&()-|()逻辑运算符中的“&”和“|”低于关系运算符,“!
4、”高于算 术运算符例:a&b 若a,b为真,则a&b为真。a|b 若a,b之一为真,则a|b为真。!a 若a为真,则!a为假。第13页,此课件共48页哦14 逻辑表达式 例:设a=4,b=5:!a的值为0 a&b的值为1a|b的值为1 !a|b的值为14&0|2的值为1任何非零的数值被认作任何非零的数值被认作“真真”n用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。n逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言对应计算值1或0第14页,此课件共48页哦15逻辑表达式示例 例:53&84-!0 自左向右运算 1&0逻辑值为083逻辑值为1表达式值为0第15页,此课件共48
5、页哦16逻辑表达式 的优化原则在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&b&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假,才 判断b。a和b都为假才判断c例:(m=ab)&(n=cd)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。第16页,此课件共48页哦17复杂条件示例 用逻辑表达式来表示闰年的条件n能被4整除,但不能被100整除。n能被4整除,又能被400整除。?答答 (year
6、%4=0&year%100!=0)|year%400=0案案 值为真(1)是闰年,否则为非闰年。第17页,此课件共48页哦18if语句的多种结构n双分支结构n单分支结构n嵌套结构多分支结构第18页,此课件共48页哦19单分支结构nif(条件)语句if(c=m)m=m;else m=c;if(c!=m)m=c;常见错误示范常见错误示范语句语句1表达式表达式真真假假第19页,此课件共48页哦单分支结构示例-求绝对值#include int main(void)int number;printf(Enter a number:);scanf(%d,&number);if(number 0)numbe
7、r=-number;printf(The absolute value is%d.n,number);return 0;20Enter a number:10 The absolute value is 10.Enter a number:-300 The absolute value is 300.sample02_02.cpp第20页,此课件共48页哦21选择嵌套结构在if语句中又包含一个或多个if语句称为if语句的嵌套第21页,此课件共48页哦22完整嵌套结构nif(条件1)n if(条件2)n 语句1n elsen 语句2nelsen if(条件3)n 语句3n elsen 语句4表达
8、表达式式1表达表达式式3语句语句4真真 假假表达表达式式2语句语句3语句语句1语句语句2真真 真真 假假假假第22页,此课件共48页哦23多分支结构if(表达式1)语句1else if(表达式2)语句2else if(表达式n-1)语句n-1else 语句n第23页,此课件共48页哦24多分支结构图示第24页,此课件共48页哦25多分支示例-分段计算水费sample02_03.cpp#include int main(void)double x,y;printf(Enter x:);scanf(%lf,&x);if(x 0)y=0;else if(x=15)y=4*x/3;else y=2.5
9、*x-10.5;printf(f(%.2f)=%.2fn,x,y);return 0;Enter x:-0.5f(-0.50)=0.00 Enter x:9.5f(9.50)=12.67Enter x:21.3f(21.30)=42.75Enter x:?第25页,此课件共48页哦26不对称嵌套结构示例:求实足年龄 sample02_04.cpp nage=sysY-bthY;n if(sysMbthM)n age=age-1;n else n if(sysM=bthM)n if(sysDbthD)n age=age-1;n年龄=当前年份-生日年份n如果生日月份还没到n 年龄减一岁n否则 如果
10、生日月份已到但生日还没到n 年龄减一岁age=sysY-bthY;if(sysMbthM)age=age-1;else if(sysM=bthM)&(sysDbthD)age=age-1;第26页,此课件共48页哦272种嵌套if语句的比较if(x 1)y=x+1;else if(x 2)y=x+2;else y=x+3;if(x 2)if(x 1)y=x+1;else y=x+2;else y=x+3;x2 x1y=x+1y=x+2真真 假假真真 y=x+3假假假假 x1 x2y=x+1y=x+2真真 假假真真 y=x+3第27页,此课件共48页哦28else 和 if 的匹配if(表达式1
11、)if(表达式2)语句1else 语句2 elseif(表达式3)语句3 else 语句4 if(表达式表达式1)if(表达式表达式2)语句语句1 elseif(表达式表达式3)语句语句3 else 语句语句4 else 与最靠近它的、没有与别的与最靠近它的、没有与别的 else 匹配过的匹配过的 if 匹配匹配if(表达式表达式1)if(表达式表达式2)语句语句1 elseif(表达式表达式3)语句语句3 else 语句语句4 第28页,此课件共48页哦29改变else 和 if 的配对例3-10 改写下列 if 语句,使 else 和第1个 if 配对。if(x 2)if(x 1)y=x+
12、1;else y=x+2;if(x 2)if(x 1)y=x+1;else y=x+2;if(x 2)if(x 1)y=x+1;else;else y=x+2;每条语句的执行条件每条语句的执行条件?第29页,此课件共48页哦作业:写出下列表达式n判断char型变量ch是否为大写字母n判断整型变量A的值是否为奇数n判断整型变量x是否为1100间的整数第30页,此课件共48页哦31循环嵌套结构n循环结构体里包含其它循环结构第31页,此课件共48页哦32循环嵌套结构(一)统计sample02_05.cppn输入n个学生的学号和5门功课成绩求每位同学的总分和平均分,最后输出班级平均总分,最高总分和学号
13、每位同学的总分 sum班级总分 total最高总分 max最高分学号maxno第32页,此课件共48页哦33算法n1.total=0,max=-1,maxno=-1n2.循环i从1到n step 1n (1)输入学号n (2)sum=0n (3)循环j从1到5 step 1n 输入一个成绩xn sum=sum+xn (4)输出该学生的学号,总分和平均分n (5)total=total+sumn (6)如果该学生的总分比max高,修正max和maxnon3.输出班级总分和平均分,最高分学生的学号和总分第33页,此课件共48页哦34循环嵌套结构(二)画图形n画图形:n行n i 空格 星号1 5 1
14、2 4 33 3 54 2 75 1 96 0 11 n-i 2*i-1第34页,此课件共48页哦35分析过程n循环i从1到n行 step 1n 输出一行输出一行1.输出空格2.输出星号3.回车输出空格循环j从1到n-i 输出一个空格输出星号循环j从1到2*i-1 输出一个星号第35页,此课件共48页哦36算法 sample02_06.cpp循环i从1到n行 step 1 1.输出空格 循环j从1到n-i 输出一个空格 2.输出星号 循环j从1到2*i-1 输出一个星号 3.回车/循环i从1到n行 step 1for(i=1;i=n;i+)/1.输出空格 for(j=1;j=n-i;j+)pr
15、intf();/2.输出星号 for(j=1;j=2*i-1;j+)printf(*);/3.回车 printf(n);第36页,此课件共48页哦37复合嵌套结构n选择结构和循环结构相互嵌套第37页,此课件共48页哦38复合嵌套结构(一)求素数n判断一个数是不是素数n求100以内的全部素数 例4-9 sample02_07.cpp第38页,此课件共48页哦39判断一个数n是不是素数n定义:除了1和本身,不能2到n-1的数整除的数。n算法循环i从2到n-1 n如果n能被i整除 跳出循环如果im 则是素数,输出第41页,此课件共48页哦42复合嵌套结构(二)穷举法n穷举所有可能的方案,对每一种方案
16、检查是否符合约束条件。找出所有可能的解第42页,此课件共48页哦break语句-跳出一层控制结构43真真假假 exp 语句语句1假假expb 语语 句句2循循环环体体真真第43页,此课件共48页哦带break语句的循环控制nfor(;符合循环的条件;)n.n if(结束循环的条件)n break;n 44第44页,此课件共48页哦45穷举法举例:例4-11 搬砖问题sample02_08_1.cpp某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块。问用45人正好搬45块砖,有多少种搬法?nfor(men=0;men=45;men+)n for(women=0;women=45;women+)n for(child=0;child=45;child+)n if(men+women+child=45)&(men*3+women*2+child*0.5=45)n printf(men=%d women=%d child=%dn,men,women,child);n第45页,此课件共48页哦46例4-11 源程序(2)sample02_08_2.cppfor(men=0;men=15;men+)for(women=0;women=A)&(ch=1)&(x0)&(x101)第48页,此课件共48页哦