- 3.25 MB
- 2022-04-29 14:36:42 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'高一地壳的物质组成和物质循环课件
一、地壳物质的组成自学课文30页矿物部分和31页岩石的第一段正文,(一)、了解概念:矿物、矿产、岩石。分析矿物和岩石的关系。矿物是具有确定化学成分和物理性质的天然单质或化合物,是化学元素在岩石圈中存在的基本单元;自然界中最多的矿物:石英矿产是有用矿物在自然界富集,能被开采利用。矿产一定是矿物,矿物不一定是矿产。矿物按一定规律聚集在一起,形成岩石。常见的造岩矿物有:花岗岩中常见:石英、长石、云母;石灰岩和大理岩常见:方解石
矿物的基本存在形式:气态(天然气)、液态(天然汞、石油)、固态(石英)天然气天然汞石油
探究1.岩浆岩是如何形成的?按形成过程可以分为哪几类?代表性的岩石分别有哪些?2.沉积岩是如何形成的?它有什么显著特征?代表性的岩石有哪些?3.变质岩的形成需要什么条件?代表性的岩石有哪些?4.从上可见,三大类岩石间有何关系?
一、地壳的物质组成岩浆高压侵入地壳上部或喷出地表冷却、凝固常见岩浆岩侵入岩:花岗岩喷出岩:玄武岩1.岩浆岩
读图岩石圈结构示意图1、软流层的位置2、岩石圈的范围
花岗岩:又称侵入岩,我国的黄山、华山、衡山等都是花岗岩分布区玄武岩:又称喷出岩,如我国东北的五大连池
2.沉积岩裸露岩石沉积岩(见图)风化、侵蚀、搬运、堆积风、流水、冰川、海浪特点一层一层的沉积(层理结构)常含有化石砾岩、砂岩、页岩、石灰岩(见图)常见的沉积岩:
砾岩砂岩页岩石灰岩
3.变质岩已成岩石变质岩岩浆活动、高温高压变质作用举例石灰岩大理岩(见图)页岩板岩花岗岩片麻岩砂岩石英岩
侵入型喷出型岩浆岩岩石风化碎屑岩浆沉积岩变质岩高温高压变质高温高压变质风、流水等外力作用将岩石碎屑物由高处搬运到低处沉积接触岩浆后重融、再生
地壳物质的循环岩浆岩浆岩冷凝重融沉积岩风化侵蚀搬运堆积融重变质岩变质作用风化侵蚀搬运堆积融重用变质作
若图为“岩石圈物质循环略图”,甲为岩浆,丙为变质岩,则( )A、丁代表岩浆岩B、乙代表沉积岩C、②代表变质作用D、④代表重熔再生作用某种岩石,其岩层为一层一层分布,上面的岩石较新,下面的岩石较老,在岩石中还发现了恐龙化石,此种岩石为()A、侵入岩B.喷出岩C.沉积岩D.变质岩
下图表示岩石的形成过程及原因,判断图中甲、乙两处分处()A.岩浆岩和变质岩B.变质岩和岩浆岩C.沉积岩和岩浆岩D.变质岩和沉积岩读右图,回答下列问题(1)A处为______岩,判断依据是__________。它是由___力作用形成的(2)B处为______岩,它是由____力作用中的岩浆活动经过__________后形成的。(3)C处可能会形成______岩,它是已生成岩石在__________条件下形成的。沉积具有层理结构外侵入内冷却、凝固变质高温、高压
小结:1.岩浆岩2.沉积岩3.变质岩成因:举例:成因:举例:成因:举例:岩浆冷却凝固而成花岗岩、玄武岩沉积物固结成岩砾岩、砂岩、页岩、石灰岩变质作用而成大理岩、板岩
C语言程序设计TheCProgrammingLanguage华中科技大学计算机学院曹计昌8/17/202119华中科技大学计算机学院
C语言程序设计第4章流程控制8/17/202120华中科技大学计算机学院
主要内容4.1C语句分类4.2表达式语句4.3复合语句4.4if语句4.5switch语句4.6while语句4.7for语句4.8do-while语句4.9goto语句和标号语句4.10break语句、continue语句和return语句4.11嵌套循环程序设计**4.12推理机程序设计8/17/202121华中科技大学计算机学院
C语句4.1C语句分类说明语句可执行语句变量说明、函数说明、常量定义、类型定义、……表达式语句、复合语句、选择语句(if和switch)、循环语句(while,do-while和for)、转移语句(break,continue,goto和return)、标号语句8/17/202122华中科技大学计算机学院
在任何C表达式的末尾加一个分号都可以构成一个语句,即表达式语句。表达式语句的一般形式:表达式;其中,“;”是C语句不可缺少的组成部分,它表示一个语句的结束。在C语言中,赋值、输入和输出都由表达式语句实现。例:x=y+1x=y+1;x+=yx+=y;i=j=ki=j=k;printf(”hello”)printf(”hello”);scanf(”%d”,&x)scanf(”%d”,&x);4.2表达式语句8/17/202123华中科技大学计算机学院
再如:a–b;也是一个表达式语句,但是由于在表达式求值的过程中并没有改变任何变量的值,这样的表达式语句并没有实际意义。仅由一个分号构成的语句称为空语句,即:;它不执行任何操作。在程序设计中,如果某处在语法上需要一条语句,而在实际功能上不需要执行任何操作时,可以使用空语句。4.2表达式语句(续)8/17/202124华中科技大学计算机学院
1.复合语句的一般形式用花括号“{}”括起来的一组语句,语法上等价于单个语句,语法格式为:{说明部分语句部分}说明部分可包含0至多个说明语句;语句部分可包含0至多个执行语句。复合语句又称块。函数体是一个块。4.3复合语句8/17/202125华中科技大学计算机学院
例4.3:不含说明语句的复合语句{t=a;a=b;b=t;}例4.4:包含说明了语句的复合语句。{intt;t=a;a=b;b=t;}复合语句举例8/17/202126华中科技大学计算机学院
2.嵌套的复合语句复合语句中包含复合语句,从而形成嵌套的复合语句。例如:{inta=0,b=1;{inta=1;printf(”a=%dn”,a);printf(”b=%dn”,b+=1);}printf(“a=%dn”,a);printf(“b=%dn”,b);}4.3复合语句(续)8/17/202127华中科技大学计算机学院
3.复合语句的用途复合语句在程序设计中主要有以下两种用途:(1)用于语法上只允许出现单个语句而处理上需要执行多个语句的地方,例如作为if语句的子句及循环语句的循环体。(2)用于改变嵌套if-else语句的配对规则。此外,当需要说明临时使用的局部变量时,也可使用复合语句。4.3复合语句(续)8/17/202128华中科技大学计算机学院
1.if语句的一般形式if语句有两种形式:(1)if格式:if(表达式)语句1;(2)if-else格式:if(表达式)语句1;else语句2;4.4if语句8/17/202129华中科技大学计算机学院
2.嵌套的if语句1)嵌套if语句的形式当if子句或else子句中又包含if语句时,则形成嵌套的if语句。例如,可以用下面的一个嵌套的if语句求a,b,c三个数中最大值:if(a>b)if(a>c)max=a;elsemax=c;elseif(b>c)max=b;elsemax=c;4.4if语句(续)8/17/202130华中科技大学计算机学院
2)嵌套if语句中else的配对规则对嵌套if语句中else与if的配对必须制定一个规则,否则会造成理解上的二义性。例如:if(n>0)if(a>b)z=a;elsez=b;编译程序约定:else与其前面最靠近的还未配对的if配对,即内层优先配对原则。4.4if语句(续)8/17/202131华中科技大学计算机学院
例4.6:解方程ax+b=0,a和b从终端输入。#includevoidmain(void){floata,b,x;printf(”inputa,b:n”);scanf(”%f%f”,&a,&b);if(!a)printf(”errorininputdatan”);else{x=-b/a;printf(”x=%.4fn”,x);}}3.程序设计举例8/17/202132华中科技大学计算机学院
1.switch语句的形式switch语句的一般形式为:switch(表达式){case常量表达式1:语句序列1;case常量表达式2:语句序列2;…case常量表达式n:语句序列n;default:语句序列n+1;}4.5switch语句8/17/202133华中科技大学计算机学院
2.switch语句的使用要点使用switch语句时,第一要注意列出的case应能包括选择表达式所有的取值情况,如果不能全部包括,则应使用default子句处理余下的情况。第二应特别注意break在switch中的作用,如果希望执行完某一case下的语句之后便跳出switch语句,则必须使用break或return转移语句。break跳出switch语句之后继续执行switch语句后面的一个语句(如果有),return语句则立即结束函数并返回到调用处(如果是主函数,则结束程序)。4.5switch语句(续)8/17/202134华中科技大学计算机学院
例如:下面是一个不含转移语句的switch语句,注意观察该语句执行时的输出。i=1;switch(i){case0:printf("%dt",i);case1:printf("%dt",i++);case2:printf("%dt",i++);case3:printf("%d",i++);default:printf("n");}printf("%dn",i);4.5switch语句(续)输出:12348/17/202135华中科技大学计算机学院
例4.8:学生考试成绩按以下标准分等(x为学生考试分数):分数范围等级英文名90≤x≤100excellent(优)80≤x<90good(良)60≤x<80middle(中)x<60bad(差)输入某学生的考试分数,输出该学生的考试成绩的英文等级。要求用switch语句来实现。3.程序设计举例8/17/202136华中科技大学计算机学院
分析:switch语句可用来解决多分支问题,但每个case后面的常量都是一个离散的值,不能表示一个数值范围。为此,将分数范围[0,100]每10分划为一段,则可划分为[0,10),[10,20),[20,30),[30,40),[40,50),[50,60),[60,70),[70,80),[80,90),[90,100)十个分数段。进一步对分数值进行除以10然后取整的处理,可以发现上面同一分数段内的分数经处理后得到相同的一个整数。比如,[0,10)范围内的数除以10然后取整,结果都是0;[10,20)范围内的数除以10然后取整,结果都是1;……这样一来,就可以用一个离散值代表一个分数段内的所有分数值。p98例4.8源程序代码ex4.8.c。3.程序设计举例(续)8/17/202137华中科技大学计算机学院
p99例4.9:输入某年某月,输出该月的天数。注意:switch语句允许多种情况执行相同的语句,执行相同语句的case可以写成一行,其间可以用空格或制表符分隔,但不能用逗号分隔。例如:case4:case6:case9:case11:days=30;正确case4,case6,case9,case11:days=30;错误case4,6,9,11:days=30;错误4.5switch语句(续)8/17/202138华中科技大学计算机学院
1.while语句的形式while语句的一般形式为:while(表达式)语句while语句流程图:4.6while语句8/17/202139华中科技大学计算机学院
i=0;while(i<5){printf(”i=%dt”,i);i++;}printf(”i=%dn”,i);注意:如果循环体中没有改变循环变量的值,或循环变量值的变化不能使循环控制表达式的结果为0,则循环将永不终止(通常称之为“死循环”)。如果循环控制表达式的值一开始就为0(条件为假),则循环体一次都不执行。解释:p101-p102例4.11,例4.12,例4.13例4.10while循环语句示例8/17/202140华中科技大学计算机学院
例4.14:将来自标准输入文件的正文复制到标准输出文件,每次输入和复制一个字符。分析:以EOF(系统常量,值为-1)为结束标志的字符流称为一个正文,可以包含空白字符,例如空格符、制表符和换行符。根据题目要求,输入函数应使用getchar(每次输入一个字符),输出函数应使用putchar(每次输出一个字符);复制过程是一个重复地调用getchar读和调用putchar写的过程,因此程序的流程结构是一个循环语句;读入的字符是否为EOF则是循环控制条件。2.程序设计举例8/17/202141华中科技大学计算机学院
例4.14:算法步骤:(1)调用getchar读入一个字符并赋给字符变量c。(2)如果c不是EOF,则执行(3);否则结束执行。(3)输出c;(4)读下一字符并赋给字符变量c;(5)转步骤(2)。p102例4.14源程序代码ex4.14.c2.程序设计举例(续)8/17/202142华中科技大学计算机学院
例4.15输入一个C程序(一段正文),按原来格式复制输出,复制过程中删去输入程序中所有的注释。分析:为了删去C程序中所有的注释,关键在于如何区分注释部分和需要复制的部分。为此,可将复制过程划分为4种状态:复制状态(COPY)、开始注释状态(START)、注释状态(COMMENT)和结束复制状态(END),初始状态为COPY。每种状态下的处理方法如下:(1)在COPY状态下,若读入字符为’/’(可能为注释开始符号),则将状态改为START;否则将读入的字符复制到输出。2.程序设计举例(续)8/17/202143华中科技大学计算机学院
(2)在START状态下,若读入字符为’*’(确定注释开始),则将状态改为COMMENT;否则(不是注释),将上一次读入的字符’/’复制到输出;然后检查本次读入的字符是否为’/’,若是,则状态保持START不变,否则将本次读入的字符复制到输出并将状态改为COPY。(3)在COMMENT状态下,若读入字符为’*’(可能为注释结束符号),则将状态改为END。(4)在END状态下,若读入字符为’/’(确定注释结束),则将状态恢复成COPY;否则(不是注释结束),如果读入字符是’*’,则状态保持END不变,否则将状态改为COMMENT。(p104源程序4.15)2.程序设计举例(续)8/17/202144华中科技大学计算机学院
1.for语句的形式for语句的一般语法形式表示为:for(e1;e2;e3)sfor语句流程图:等价于:e1;while(e2){s;e3;}4.7for语句8/17/202145华中科技大学计算机学院
使用for语句时须注意表达式e1,e2,e3的用法:(1)三个表达式可以全部或部分缺省,但无论缺省e1,e2或e3,它们之间的分号不能省。(2)缺省e1和e3时的for语句形如for(;e2;)s,等价于一个形如while(e2)s的while语句。(3)缺省e2时的for语句for(e1;;e3)s和三个表达式都缺省的for语句for(;;)s都是无限循环语句。被省略的e2缺省值恒为非0(e1和e3没有缺省值)。4.7for语句(续)8/17/202146华中科技大学计算机学院
例4.16:for循环语句示例。inti;for(i=1;i<4;i++)printf(”i=%ds=%dn”,i,2*i);几种等价的形式:i=1;for(;i<4;i++)printf(”i=%ds=%dn”,i,2*i);或for(i=1;i<4;){printf(”i=%ds=%dn”,i,2*i);i++;}4.7for语句(续)8/17/202147华中科技大学计算机学院
或i=1;for(;i<4;){printf(”i=%ds=%dn”,i,2*i);i++;}或i=1;for(;;){printf(”i=%ds=%dn”,i,2*i);i++;if(!(i<4))break;}4.7for语句(续)8/17/202148华中科技大学计算机学院
例4.19:输入一批整数,以0为结束。输出其中最大的一个值。分析:从若干个数中找出最大的一个数可用"打擂台"的方法,即两两相比,大者留下;当所有的数比完时留下的那个数为最大。比较过程采用每次输入一个数立即与上一次留下的那个较大的数比较的方法,因此程序中只需用两个变量:一个变量x用于保存每次输入的一个数据,另一个变量max用于保存每两个数相比中较大的一个数。这种方法可以用于从任意多个输入数据中找出其中的最大值。2.程序设计举例8/17/202149华中科技大学计算机学院
例4.19:算法步骤:(1)输入第一个数(x)。(2)置最大数max初值为x。(3)如果x不等于0,则执行(4);否则,执行(7)。(4)输入下一个数(x)。(5)如果maxn),转步骤(5)。(4)将i值增加1,转步骤(3)。(5)输出累乘结果fac,结束。p108例4.20源程序代码ex4.20.c。2.程序设计举例(续)8/17/202152华中科技大学计算机学院
1.do-while语句的形式do-while语句的一般形式为:do语句while(表达式);do-while语句流程图:4.8do-while语句8/17/202153华中科技大学计算机学院
do-while语句:do语句while(表达式);可以用以下等价的while循环语句来代替。语句while(表达式){语句}4.8do-while语句(续)8/17/202154华中科技大学计算机学院
例4.21:把输入的整数按反方向输出。例如,输入的数是12345,要求输出结果是54321。分析:在输入一个整数时,是从高位到低位(或者说从左到右)依次输入各位上的数字。要按反方向输出,就是从低位到高位(或者说从右到左)连续地输出该数的各位数字。具体来说,就是先输出个位数字,再输出十位数字,直到最高位数字。获取一个整数的个位数字的算法是将该整数除以10取余(模10)。去掉一个整数的个位数字(使十位数字变个位数字,百位数字变十位数字,直到最高位数字变次高位数字)的算法是将该整数除以10(整数除)。这样,可以用循环语句从低位到高位依次输出原整数的数字。(源程序代码ex4.21.c)2.程序设计举例8/17/202155华中科技大学计算机学院
2.程序设计举例(续)例4.24:输入任意一个大于或等于2的整数n,判断该数是否为素数并输出相应结果。分析:根据数学定义,一个大于2的整数n,如果除1和n外不能被任何数整除(即n不含1和n以外的任何因子),则n是素数;此外,整数2不符合上述定义,但规定2是最小素数。为了确定n是否含有1和n以外的因子,只需用2至(也可以用2至n-1或2至n/2)作除数除n。如果均不能整除n,则n是素数,否则(即只要发现一个因子)n不是素数。显然,用2至作除数时所做的除法次数比用2至n-1或2至n/2作除数时少得多。8/17/202156华中科技大学计算机学院
2.程序设计举例(续)例4.24:算法步骤:(1)输入n,直到n符合要求为止(循环语句);(2)确定除数i的初值(i=2)及终值j(j=sqrt(n));(3)检查2~sqrt(n)的每一个数是否都不是n的因子(循环语句),方法是,i从2开始,用i除n,若余数非0且i<=j,则使i值增加1再重复该过程;若余数为0(找到一个因子)或i<=j不成立,则结束循环。(4)如果循环结束后余数为非0,则说明2~sqrt(n)范围内的整数都不是n的因子,因此可以判定n是素数;否则(发现一个因子),n不是素数。例4.24源程序代码ex4.24.c。8/17/202157华中科技大学计算机学院
3.循环语句小结(略)三种循环语句的区别及使用要点归纳如下(s是循环体;e,e1,e2,e3是表达式):(1)while(e)s和for(e1;e2;e3)s先测试e或e2,后执行s,若第一次测试时e或e2结果为0,则s一次也不执行;doswhile(e);先执行s,后测试e,所以s总是至少被执行一次。使用时应根据具体情况选用,一般说来,必定要执行的循环可以用三种循环语句中任何一种;可能不被执行的循环则不能用do-while。(2)第一次测试循环条件(e或e2)之前,循环变量必须赋初值,初值只赋一次;在循环体(s)或e3(对于for语句)中必须有能够改变循环变量值的语句或表达式。写循环条件时,应注意避免无限循环、永不执行的循环或执行次数不正确的循环等情况。8/17/202158华中科技大学计算机学院
3.循环语句小结(续)(略)(3)for语句控制部分的e1可以包含给循环变量赋初值以及其他与循环有关的运算,即在循环开始之前仅执行一次的运算;e2不要求一定是关系表达式或逻辑表达式,只要能正确控制循环体的执行(非0值执行循环体,0值结束循环),任何表达式都可以;e3是每次执行循环体后紧接着要执行的表达式,通常用于改变循环变量的值,如i++之类,e3也可以包括某些属于循环体部分的内容,也可将e3放到循环体最后。可见,for语句使用非常灵活,其控制部分的三个表达式可以容纳除循环变量赋初值、测试循环条件和修改循环变量值的运算以外的其他与循环有关的运算。(4)任何循环语句当循环体含有一个以上语句时,必须写成复合语句(用{}括起来);当循环体为空语句时不要掉了分号(;)。8/17/202159华中科技大学计算机学院
goto语句又称为无条件转移语句,它的一般形式为:goto标号;任何可执行C语句都可以加标号前缀成为标号语句。标号语句的形式为:标号:语句goto语句中的标号是对标号的引用,标号语句中的标号是对标号的定义。被goto语句引用的标号必须有且仅有一个对应的标号语句,对应的标号语句称为称为该goto语句的目标语句;而允许标号语句没有对应的goto语句。概而言之,有标号的引用必须有惟一的标号定义,而有标号的定义不必有标号的引用。4.9goto语句和标号语句8/17/202160华中科技大学计算机学院
4.9goto语句和标号语句(续)goto语句的目标语句允许出现的范围称为标号的作用域。C语言中标号的作用域是goto语句所在的函数,即goto语句不能从一个函数转移到另一个函数中,但可以在一个函数内从嵌套结构的内层直接转到最外层。使用标号语句时,要注意同一函数内的标号不能同名。goto语句和标号语句在函数中出现的先后位置没有约束,即对标号的定义和对标号的引用没有先后次序的规定。8/17/202161华中科技大学计算机学院
goto语句和标号语句的用法例4.25:输入一个算式,模拟袖珍计算器的加、减、乘、除四则运算。假定计算时不考虑运算符的优先级,也不允许输入圆括号(),而是按照运算符出现的先后顺序执行运算。例如,输入10.8+0.13*100计算结果为1093.000000例4.25源程序代码ex4.25.c。8/17/202162华中科技大学计算机学院
注意:goto语句不是必需的语言成分。因为用goto语句实现的任何控制转移,都可以通过循环语句、if语句和其他转移语句的适当配合以及用整型变量标记状态的方法实现。goto语句的惟一好处是可以从嵌套结构的最内层(switch语句或循环语句)直接转到最外层(隔层转移),用起来较方便.但如果随意地使用goto语句则会破坏程序的结构化特性,使程序的逻辑结构不清,因此应尽量少用或不用goto语句。8/17/202163华中科技大学计算机学院
1.break语句break语句的形式为:break;break是关键字。break语句有以下两种用途:(1)用于switch语句中,从中途退出switch语句;(2)用于循环语句中,从循环体内直接退出当前循环。注意:对于嵌套的循环语句和switch语句,break语句的执行只能退出直接包含break的那一层结构。4.10break语句、continue语句和return语句8/17/202164华中科技大学计算机学院
4.10break语句(续)例4.27:打印ASCII字符集中字符码为32~126的字符及其字符码的对照表,每行打印8对对应值。例4.27源程序代码ex4.27.c。例4.28:打印2~100之间的所有素数,每行输出10个数。分析:如4.8节例4.24的程序所示,判断一个数是否为素数(找因子)要用循环语句实现,因此判断2~100之间的每一个数是否为素数要用二重循环。例4.28源程序代码ex4.28.c。8/17/202165华中科技大学计算机学院
2.continue语句continue语句的形式为:continue;(continue是关键字)continue语句只能出现在循环语句中,用于终止循环体的本次执行(并非退出循环语句);即在循环体的本次执行中,跳过从continue语句之后直到循环体结束的所有语句,控制转移到循环体的末尾。对于while(e)s;和doswhile(e);,在执行continue语句之后马上执行对循环控制表达式(e)的计算和测试;对于for(e1;e2;e3)s则马上执行表达式e3,然后执行对表达式e2的计算和测试。8/17/202166华中科技大学计算机学院
2.continue语句(续)例4.29:输入10个整数,输出其中正数的个数及平均值。例4.29源程序代码ex4.29.c。本例不用continue语句也能实现同样的功能,改写工作作为练习请读者自己完成。8/17/202167华中科技大学计算机学院
3.return语句return语句有下面两种形式:(1)不带表达式的return语句:return;(2)带表达式的return语句:return表达式;return语句的功能是从被调用函数返回到调用函数。不带表达式的return语句只能返回控制、不能返回值,因此只能用于从无返回值的函数中返回。带表达式的return语句(表达式可以用()括起来)在返回控制的同时,将表达式的值返回到调用处,函数调用表达式的值就是这个返回值。8/17/202168华中科技大学计算机学院
3.return语句(续)例4.30:写一个函数sign,返回浮点数x的符号。如果x小于0,则返回-1;如果x等于0,则返回0;如果x大于0,则返回1。例4.30源程序代码ex4.30.c。8/17/202169华中科技大学计算机学院
嵌套循环指循环体是一个循环语句,或循环体包含循环语句。嵌套循环又称为多重循环,三种循环语句可以相互任意嵌套。具有两层嵌套的循环称为二重循环,具有n重嵌套的循环称为n重循环;二重以上的循环统称为多重循环。C语言对循环的嵌套层数没有限制,其中二重循环应用最为普遍,其次是三重循环。4.11嵌套循环程序设计8/17/202170华中科技大学计算机学院
例4.31:计算s=11+22+33+...+nn,n由终端输入。分析:设每一项的底用整型变量i表示,i从1开始每次增1直至n。考虑到溢出,ii及各项之和分别用长整型变量term和s表示。计算term是用循环对同一个i累乘i次;计算s也是用循环对每个term累加n次,而且计算term的循环是嵌套在计算s的循环体内的,所以计算s的算法是一个二重循环语句。外层循环(简称外循环)控制项数,内层循环(简称内循环)控制每项i的累乘次数。4.11嵌套循环程序设计(续)8/17/202171华中科技大学计算机学院
例4.31:程序4.31的流程图。例4.31源程序代码ex4.31.c。4.11嵌套循环程序设计(续)8/17/202172华中科技大学计算机学院
4.11嵌套循环程序设计(续)例4.32:输入一个字母,在屏幕正中输出由这个字母决定其高度的字符"金字塔"。例如输入小写字母d,则输出下列左边图形,如果输入大写字母D,则输出右边图形。aabaabcbaabcdcbaAABAABCBAABCDCBA8/17/202173华中科技大学计算机学院
(1)输入字符c;(2)如果c是小写字母则置塔顶top为’a’,如果c是大写字母则置top为’A’,如果c是非字母字符,则置top为’\0’;(3)如果top非0,则输出图形(3)-1置c1为top(外循环变量初值);(3)-2如果c1≤c则输出一行:(3)-2-1输出一行左边的所有空格,空格数目为40-2*(c1-top);(3)-2-2输出一行的前半段(包括正中的一个字符);(3)-2-3输出一行的后半段;(3)-2-4输出换行;(3)-2-5c1=c1+1,转(3)-2(循环,输出下一行);如果c1>c则结束循环。(例4.32源程序代码ex4.32.c。)例4.32:算法步骤:8/17/202174华中科技大学计算机学院
(1)对于多重循环,特别要注意给与循环有关的变量赋初值的位置。以程序4.31为例:只需赋一次初值的操作应放在最外层循环开始执行之前,例如,赋值表达式s=0位于外循环for语句控制部分的表达式1;给内循环的有关变量赋初值应放在外循环体内、内循环开始执行之前,例如,赋值表达式语句term=1;和j=1;位于内循环do-while语句的前面,是外循环for语句循环体的一部分。(2)内、外循环变量不应同名,否则,将造成循环控制混乱,导致死循环或计算结果错误。多重循环语句的使用要点(略)8/17/202175华中科技大学计算机学院
(3)应正确书写内、外循环的循环体:需要在内循环中执行的所有语句必须用{}括起来组成复合语句作为内循环体;属于外循环的语句应放在内循环体之外、外循环体之中。例如,程序4.31的赋值语句term=1;j=1;和sum+=term;都是组成外循环体的语句,其中term=1;和j=1;位于内循环do-while语句之前,sum+=term;语句位于do-while语句之后,它们均位于内循环体之外。(4)不应在循环中执行的操作应放在进入最外层循环之前或最外层循环结束之后。例如,程序4.31中对输入提示(inputn:)的输出及读入项数(n)是在程序运行过程中仅需执行一次的操作,且需在循环开始之前执行;最后输出整个计算结果(sum)只需执行一次,且应在循环结束之后执行。多重循环语句的使用要点(续)8/17/202176华中科技大学计算机学院
本章习题4.1,4.3,4.5,4.6,4.7,4.9,4.11,4.13,4.15,4.168/17/202177华中科技大学计算机学院'
您可能关注的文档
- 最新髋关节置换术后康复锻炼[3]研究课件PPT.ppt
- 最新骨髓瘤细胞课件PPT.ppt
- 最新體育學系93學年度大學畢業生資格檢查表课件PPT.ppt
- 最新髌骨骨折详解(1)课件PPT.ppt
- 最新高一下学期家长会-(1)课件PPT.ppt
- 最新高一化学必修一-第三章第二节-几种重要的金属化合物-课件PPT【精品】[1]课件ppt.ppt
- 最新高一地理:8.1《环境问题的表现与分布》课件旧人教版课件PPT.ppt
- 最新高一家长会课件PPT.ppt
- 最新高一地理水循环和洋流概要课件PPT.ppt
- 最新高一数学任意角的三角函数及三角函数线课件PPT课件.ppt
- 最新高一氨气及铵盐课件PPT.ppt
- 最新高三一轮复习Boo4U5课件PPT.ppt
- 最新高三化学高考复习-离子共存专题-课件(24张)-(共24张PPT)课件PPT.ppt
- 最新高三化学复习电解质溶液课件PPT课件.ppt
- 最新高三化学电解质离子反应复习课件课件PPT.ppt
- 最新高三化学二轮复习:专题六《原电池、电解原理及其应用》课件PPT课件.ppt
- 最新高三地理第二轮复习专题一---等值线的判读资料课件PPT.ppt
- 最新高三总复习语法课件PPT.ppt