《第五讲嵌套结构.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逻辑值
5、为083逻辑值为1表达式值为0现在学习的是第15页,共48页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整除,但不能被1
6、00整除。n能被4整除,又能被400整除。?答答 (year%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:)
7、;scanf(%d,&number);if(number 0)number=-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 e
8、lsen 语句2nelsen if(条件3)n 语句3n elsen 语句4表达表达式式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,
9、&x);if(x 0)y=0;else if(x=15)y=4*x/3;else y=2.5*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)
10、n age=age-1;n年龄=当前年份-生日年份n如果生日月份还没到n 年龄减一岁n否则 如果生日月份已到但生日还没到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
11、+2真真 假假真真 y=x+3现在学习的是第27页,共48页28else 和 if 的匹配if(表达式1)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 的配
12、对例3-10 改写下列 if 语句,使 else 和第1个 if 配对。if(x 2)if(x 1)y=x+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循环嵌套结构(一)统计sam
13、ple02_05.cppn输入n个学生的学号和5门功课成绩求每位同学的总分和平均分,最后输出班级平均总分,最高总分和学号每位同学的总分 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.输出班级总分和平
14、均分,最高分学生的学号和总分现在学习的是第33页,共48页34循环嵌套结构(二)画图形n画图形:n行n i 空格 星号1 5 12 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 输
15、出一个星号 3.回车/循环i从1到n行 step 1for(i=1;i=n;i+)/1.输出空格 for(j=1;j=n-i;j+)printf();/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到
16、n-1 n如果n能被i整除 跳出循环如果im 则是素数,输出现在学习的是第41页,共48页42复合嵌套结构(二)穷举法n穷举所有可能的方案,对每一种方案检查是否符合约束条件。找出所有可能的解现在学习的是第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
17、块,女人一人搬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页