第五讲嵌套结构_第1页
第五讲嵌套结构_第2页
第五讲嵌套结构_第3页
第五讲嵌套结构_第4页
第五讲嵌套结构_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五讲嵌套结构第一页,共四十八页,2022年,8月28日2主要内容第一讲嵌套结构第二讲模块化结构第三讲其它控制结构语句介绍第四讲反向数据传递--输出参数第五讲数据文件涉及课本内容:第3,4,5,8.1,8.2,12章第二页,共四十八页,2022年,8月28日3第一讲嵌套结构第三页,共四十八页,2022年,8月28日4主要内容嵌套结构:自顶向下,逐步细化的分析的结果选择嵌套结构—if深入循环嵌套结构复合嵌套结构嵌套结构的典型算法第四页,共四十八页,2022年,8月28日5嵌套结构自顶向下,逐步细化的分析的结果第五页,共四十八页,2022年,8月28日6程序的三种基本控制结构Bohra和Jacopini提出了以下三种基本结构:顺序结构选择结构循环结构用这三种基本结构作为表示一个良好算法的基本单元。第六页,共四十八页,2022年,8月28日7顺序结构选择结构三种基本结构的图示循环结构第七页,共四十八页,2022年,8月28日8三种基本结构的共同特点(1)只有一个入口。(2)只有一个出口。(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)(3)结构内的每一部分都有机会被执行到。(4)结构内不存在“死循环”(无终止的循环)。第八页,共四十八页,2022年,8月28日9嵌套结构三种基本结构中的语句组(顺序语句组、if分支语句组、else分支语句组、循环体语句组)可以包含任意结构的语句,从而形成不同的嵌套结构。嵌套结构没有特定的结构形式,由分析方法自然形成第九页,共四十八页,2022年,8月28日10嵌套结构示例:

求n个数中的最大值(sample02_01.cpp)输入n输入第一个数,假定为最大值max循环i从2到n,step1输入一个数到x如果x比假定最大值max还大,则修正max为x输出max的值循环体嵌套:顺序语句选择语句第十页,共四十八页,2022年,8月28日11if语句深入复杂条件表示逻辑运算符连接多个条件if语句的多种结构if和else的匹配原则第十一页,共四十八页,2022年,8月28日复杂条件的表示x是一个介于0到10的数0<=x<=10错误:二目运算值恒为1逻辑应为:x>=0并且x<=10x>=0&&x<=1012第十二页,共四十八页,2022年,8月28日13逻辑运算符逻辑运算符(1)&&(逻辑与)相当于其他语言中的AND(2)||(逻辑或)相当于其他语言中的OR(3)!(逻辑非)相当于其他语言中的NOT优先次序!(非)->&&()->||()逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符例:a&&b若a,b为真,则a&&b为真。

a||b若a,b之一为真,则a||b为真。!a若a为真,则!a为假。第十三页,共四十八页,2022年,8月28日14

逻辑表达式

例:设a=4,b=5:!a的值为0a&&b的值为1a||b的值为1!a||b的值为14&&0||2的值为1任何非零的数值被认作“真”用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言对应计算值1或0第十四页,共四十八页,2022年,8月28日15逻辑表达式示例

例:5>3&&8<4-!0

自左向右运算

1&&0逻辑值为08<3逻辑值为04-1值为3!0逻辑值为15>3逻辑值为1表达式值为0第十五页,共四十八页,2022年,8月28日16逻辑表达式的优化原则在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a||b||c只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c例:(m=a>b)&&(n=c>d)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1。第十六页,共四十八页,2022年,8月28日17复杂条件示例

用逻辑表达式来表示闰年的条件能被4整除,但不能被100整除。能被4整除,又能被400整除。?答

(year%4==0&&year%100!=0)||year%400==0案

值为真(1)是闰年,否则为非闰年。第十七页,共四十八页,2022年,8月28日18if语句的多种结构双分支结构单分支结构嵌套结构多分支结构第十八页,共四十八页,2022年,8月28日19单分支结构if(条件)语句if(c==m)m=m;elsem=c;if(c!=m)m=c;常见错误示范语句1表达式真假第十九页,共四十八页,2022年,8月28日单分支结构示例-求绝对值#include<stdio.h>intmain(void){intnumber; printf("Enteranumber:");scanf("%d",&number);if(number<0){number=-number;}printf("Theabsolutevalueis%d.\n",number);return0;}20Enteranumber:10

Theabsolutevalueis10.Enteranumber:-300

Theabsolutevalueis300.sample02_02.cpp第二十页,共四十八页,2022年,8月28日21选择嵌套结构在if语句中又包含一个或多个if语句称为if语句的嵌套第二十一页,共四十八页,2022年,8月28日22完整嵌套结构if(条件1)if(条件2)语句1else

语句2else

if(条件3)语句3else

语句4表达式1表达式3语句4真假表达式2语句3语句1语句2真真假假第二十二页,共四十八页,2022年,8月28日23多分支结构if(表达式1)语句1elseif(表达式2)语句2……elseif(表达式n-1)语句n-1else语句n第二十三页,共四十八页,2022年,8月28日24多分支结构图示第二十四页,共四十八页,2022年,8月28日25多分支示例-分段计算水费sample02_03.cpp#include<stdio.h>intmain(void){doublex,y;printf("Enterx:");scanf("%lf",&x);if(x<0){y=0;}elseif(x<=15){y=4*x/3;}else{y=2.5*x-10.5;}printf("f(%.2f)=%.2f\n",x,y);return0;}Enterx:-0.5f(-0.50)=0.00Enterx:9.5f(9.50)=12.67Enterx:21.3f(21.30)=42.75Enterx:?第二十五页,共四十八页,2022年,8月28日26不对称嵌套结构示例:

求实足年龄sample02_04.cpp

age=sysY-bthY;if(sysM<bthM)age=age-1;elseif(sysM==bthM)if(sysD<bthD) age=age-1;年龄=当前年份-生日年份如果生日月份还没到年龄减一岁否则如果生日月份已到但生日还没到年龄减一岁age=sysY-bthY;if(sysM<bthM)age=age-1;elseif((sysM==bthM)&&(sysD<bthD)) age=age-1;第二十六页,共四十八页,2022年,8月28日272种嵌套if语句的比较if(x<1)y=x+1;elseif(x<2)y=x+2;elsey=x+3;if(x<2)if(x<1)y=x+1;elsey=x+2;elsey=x+3;

x<2x<1y=x+1y=x+2真

假真

y=x+3假假x<1x<2y=x+1y=x+2真

假真

y=x+3第二十七页,共四十八页,2022年,8月28日28else和if的匹配if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4if(表达式1)if(表达式2)语句1

elseif(表达式3)语句3else语句4else与最靠近它的、没有与别的else匹配过的if匹配if(表达式1)if(表达式2)语句1elseif(表达式3)语句3else语句4第二十八页,共四十八页,2022年,8月28日29改变else和if的配对例3-10改写下列if语句,使else和第1个if配对。if(x<2)if(x<1)y=x+1;elsey=x+2;if(x<2){if(x<1)y=x+1;}elsey=x+2;if(x<2)if(x<1)y=x+1;else;elsey=x+2;每条语句的执行条件?

第二十九页,共四十八页,2022年,8月28日作业:写出下列表达式判断char型变量ch是否为大写字母判断整型变量A的值是否为奇数判断整型变量x是否为1-100间的整数第三十页,共四十八页,2022年,8月28日31循环嵌套结构循环结构体里包含其它循环结构第三十一页,共四十八页,2022年,8月28日32循环嵌套结构(一)统计

sample02_05.cpp输入n个学生的学号和5门功课成绩求每位同学的总分和平均分,最后输出班级平均总分,最高总分和学号每位同学的总分sum班级总分total最高总分max最高分学号maxno第三十二页,共四十八页,2022年,8月28日33算法1.total=0,max=-1,maxno=-12.循环i从1到nstep1(1)输入学号

(2)sum=0(3)循环j从1到5step1

输入一个成绩xsum=sum+x(4)输出该学生的学号,总分和平均分

(5)total=total+sum(6)如果该学生的总分比max高,修正max和maxno3.输出班级总分和平均分,最高分学生的学号和总分第三十三页,共四十八页,2022年,8月28日34循环嵌套结构(二)画图形画图形:n行

i空格星号

5143352719011n-i2*i-1第三十四页,共四十八页,2022年,8月28日35分析过程循环i从1到n行step1

输出一行输出一行1.输出空格2.输出星号3.回车输出空格循环j从1到n-i

输出一个空格输出星号循环j从1到2*i-1

输出一个星号第三十五页,共四十八页,2022年,8月28日36算法

sample02_06.cpp循环i从1到n行step11.输出空格循环j从1到n-i

输出一个空格

2.输出星号循环j从1到2*i-1

输出一个星号

3.回车//循环i从1到n行step1for(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");}第三十六页,共四十八页,2022年,8月28日37复合嵌套结构选择结构和循环结构相互嵌套第三十七页,共四十八页,2022年,8月28日38复合嵌套结构(一)求素数判断一个数是不是素数求100以内的全部素数例4-9sample02_07.cpp第三十八页,共四十八页,2022年,8月28日39判断一个数n是不是素数定义:除了1和本身,不能2到n-1的数整除的数。算法循环i从2到n-1如果n能被i整除跳出循环如果i<n则不是素数否则是素数第三十九页,共四十八页,2022年,8月28日40求100以内的全部素数分析循环i从3到100

如果i是一个素数则输出第四十页,共四十八页,2022年,8月28日41算法:求100以内的全部素数循环i从3到100m=sqrt(i)循环j从2到m如果i能被j整除跳出循环如果i>m则是素数,输出第四十一页,共四十八页,2022年,8月28日42复合嵌套结构(二)穷举法穷举所有可能的方案,对每一种方案检查是否符合约束条件。找出所有可能的解第四十二页,共四十八页,2022年,8月28日break语句-跳出一层控制结构

43真假

exp

语句1假expb

语句2循环体真第四十三页,共四十八页,2022年,8月28日带break语句的循环控制for(;符合循环的条件;){......if(结束循环的条件)break;}44第四十四页,共四十八页,2022年,8月28日45穷举法举例:例4-11搬砖问题sample02_08_1.cpp某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块。问用45人正好搬45块砖,有多少种搬法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论