《语言控制语句》PPT课件.ppt

上传人:小飞机 文档编号:5606730 上传时间:2023-08-01 格式:PPT 页数:49 大小:316.49KB
返回 下载 相关 举报
《语言控制语句》PPT课件.ppt_第1页
第1页 / 共49页
《语言控制语句》PPT课件.ppt_第2页
第2页 / 共49页
《语言控制语句》PPT课件.ppt_第3页
第3页 / 共49页
《语言控制语句》PPT课件.ppt_第4页
第4页 / 共49页
《语言控制语句》PPT课件.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《《语言控制语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《语言控制语句》PPT课件.ppt(49页珍藏版)》请在三一办公上搜索。

1、第5章 C程序的流程程序控制结构与语句,程序流程概述 语句 顺序结构与语句 选择结构与语句 循环结构与语句 转向语句,5.1 程序流程概述,程序流程就是计算动作执行的过程。程序的流程分为三种:顺序结构选择结构循环结构,5.2 语句,5.2.1 基本赋值语句5.2.2 表达式语句5.2.3 基本输入/输出语句5.2.4 控制语句5.2.5 空语句和复合语句,5.2.1 基本赋值语句 赋值语句就是在赋值表达式的后面加上分号,一般形式为:变量=表达式;例如:int i;float a=3.5;i=1;i=i+a;a+1=a+1;/*错误*/,5.2.2 表达式语句 由一个表达式加一个分号构成一个表达

2、式语句,一般形式为:表达式;,5.2.3 基本输入/输出语句1、基本输出语句:printf()功能是按指定的输出格式把相应的参数值在标准输出设备(通常是终端)上显示出来。一般使用格式是:printf(格式控制串,参数1,参数2,);例如:printf(a,b的值分别为:%d,%d,a,b);,5.2.3 基本输入/输出语句1、基本输出语句:printf(),常用的转换说明及作用,范例5-1,5.2.3 基本输入/输出语句2、基本输入语句:scanf()功能是接收用户从键盘上输入的数据,并按照格式控制符的要求进行类型转换,然后送到由对应参数所指定的变量单元中去。一般格式为:scanf(格式控制串

3、,参数地址1,参数地址2,.);例如:scanf(“%d%f”,输入:10 3.0,&变量名,5.2.3 基本输入/输出语句2、基本输 入语句:scanf(),常用的转换说明及作用,【范例5-2】计算圆的面积,半径由用户指定。,5.2.4 控制语句C语言中有9种控制语句,它们分别是:if-else语句、for语句、while语句、do-while语句、break语句、switch语句、goto语句、continue语句、return语句,5.2.5 空语句和复合语句空语句只有一个分号构成,即:;如:while(getchar()!n);复合语句就是用 把多个单一的语句括起来,如:z=x+y;t

4、=z/100;printf(%f,t);,5.3 顺序结构与语句,在顺序结构中,程序是按照语句的书写顺序依次执行,语句在前的先执行,语句在后的后执行。可用如下流程图表示:,例如:a=3;b=4;c=a+b;,5.3 顺序结构与语句,【范例5-3】“鸡兔同笼问题”。鸡有2只脚,兔有4只脚,如果已经鸡和兔的总头数为h,总脚数为f。问笼中各有多少只鸡和兔。问题分析:设笼中的鸡有m只,兔有n只,可以列出方程组:,5.4 选择结构与语句,5.4.1 选择结构5.4.2 单分支选择结构if语句5.4.3 双分支选择结构if-else语句5.4.4 多分支选择结构if-else的嵌套形式5.4.5 多分支选

5、择结构switch语句,5.4.1 选择结构,选择结构可以用分支语句来实现。分支语句包括 if 语句和 switch 语句。,5.4.2 单分支选择结构if语句 一般语法为:if(表达式)语句;执行过程为:先计算表达式的值,如果表达式为非0(即为真)时,则执行语句;否则不执行任何语句,退出if语句,继续执行if语句之后的部分。例如:,if(xy)printf(“%d”,x);,;,5.4.2 单分支选择结构if语句【范例5-4】输入三个不同的数,按从大到小的顺序输出。先将a与b比较,把较大者放在a中,较小者放在b中;再将a与c比较,把较大者放在a中,较小者放在c中,此时,a为三者中的最大者;最

6、后将b与c比较,把较大者放在b中,小者放在c中,此时a、b、c已经按从大到小的顺序排列。,5.4.2 单分支选择结构if语句,5.4.3 双分支选择结构if-else语句 作用:当给定的条件满足时,执行一个语句;当条件不满足时,执行另一个语句。一般语法为:if(表达式)语句1;else 语句2;其执行过程为:先计算表达式的值,如果表达式的值为为非0(即为真)时,则执行语句1;否则执行语句2。,流程图表示,5.4.3 双分支选择结构if-else语句 例如:if(a0)printf(“a is positive.n”);else printf(“a is not positive.n”);,【范

7、例5-5】判断输入的整数是否是13的倍数。,注 意:else部分不能独立存在,即else前一定有一个“;”,它一定是if语句的一部分。,5.4.4 多分支选择结构if-else的嵌套形式 在if语句中又可以包含一个或多个if 语句,这种形式称作if语句的嵌套。嵌套有以下两种形式:1.嵌套在else分支中,形成if.else.if语句;2.嵌套在if分支中,5.4.4 多分支选择结构if-else的嵌套形式 1.嵌套在else分支中,其形式为:if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;.else 语句n;,【范例5-6】评价学生的成绩。按分数sc

8、ore输出等级:score90为优,80score90为良,70score80为中等,60score70为及格,score60为不及格。,5.4.4 多分支选择结构if-else的嵌套形式 2.嵌套在if分支中,其形式为:if(表达式1)if(表达式2)语句1;else 语句2;else 语句3;,【范例5-7】判断某学生的成绩score是否及格;如果及格是否达到优秀(score90)。,注意:C语言规定了if和else的“就近配对”原则,即else总是与前面最近的(未曾配对的)if配对。,5.4.5 多分支选择结构switch语句 switch语句的一般语法格式为:switch(表达式)ca

9、se 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;default:语句n+1;,执行过程为:先计算表达式的值,并逐个与case后面的常量表达式的值相比较,当表达式的值与某个常量表达式i的值一致时,则从语句i开始执行;直到遇到break语句或switch语句的”;若表达式与任何常量表达式的值均不一致时,则执行default后面的语句或执行后续语句。,5.4.5 多分支选择结构switch语句 例如:switch(x)case 1:printf(“statement 1.n”);break;case 2:printf(“

10、statement 2.n”);break;default:printf(“default”);说明:switch后的表达式类型一般为整形、字符型和枚举型,但不能为浮点型;常量表达式i仅起语句标号作用,不作求值判断;每个常量表达式的值必须各不相同,没有先后次序;多个case语句可以共用一组执行语句,【范例5-8】根据一个代表星期几的0到6之间的整数,在屏幕上输出它代表的是星期几。,5.5 循环结构与语句,5.5.1 循环结构5.5.2 当型循环语句for语句5.5.3 当型循环语句while语句5.4.4 直到型循环语句do-while语句5.4.5 循环的嵌套,5.5.1 循环结构循环结构是

11、指在满足循环条件时反复执行循环代码块,直到循环条件不能满足为止。C中有3种循环语句:while语句do_while语句for语句,【范例5-9】计算100之内的奇数之和。,5.5.2 当型循环语句for语句 一般语法格式为:for(表达式1;表达式2;表达式3)循环体语句;,执行过程如下:计算表达式1的值;判断表达式2,如果其值为非0(真),则执行循环体语句,然后执行第步;如果其值为0(假),则结束循环,执行第步;计算表达式3;返回继续执行第步;循环结束,执行for语句的后续语句。,5.5.2 当型循环语句for语句 例如:sum=0;for(i=0;i=100;i+)sum+=i;可以将fo

12、r语句的形式改写为:for(循环变量赋初值;循环条件;循环变量增值)循环体语句;,5.5.2 当型循环语句for语句【范例5-10】经典问题:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=135333。【范例5-11】计算n!,即n!=1*2*.*n。,5.5.2 当型循环语句for语句 for循环的扩展形式:表达式1和表达式3可以是一个简单的一个简单的表达式,也可以是逗号表达式,例如:for(i=0,j=100;ij;i+,j-)k=i+j;循环条件可由一个较复杂表达式的值来确定,例如:for(i0;si!

13、c,5.5.2 当型循环语句for语句 for循环的省略形式:省略“表达式1”,此时应在for语句之前给循环变量赋初值。如:i=1;for(;i=100;i+)sum+=i;省略“表达式2”,表示不判断循环条件,循环无终止的进行下去,也可以认为表达式2始终为真。如:for(i=1;i+)sum+=i;省略“表达式3”,此时应在循环体内部实现循环变量的增量,以保证循环能够正常结束。如:for(i=1;i=100;)sum+=i;i+,5.5.2 当型循环语句for语句 for循环的省略形式:省略“表达式1”和“表达式3”,此时只给出了循环条件,如:i=1;for(;i=100;)sum+=i;i

14、+三个表达式都省略,即不设初值,也不判断条件,循环变量不增值。无终止地执行循环体。如:for(;)循环体语句,5.5.3 当型循环语句while语句 语法格式为:while(表达式)循环体语句;,执行过程是:当表达式为非0(真)时,执行循环体语句,然后重复上述过程,一直到表达式为0(假)时,while语句结束。如:,i=1;while(i=100)sum+=i;i+;,5.5.3 当型循环语句while语句 说明:循环体包含一条以上语句时,应用“”括起来,以复合语句的形式出现,否则它只认为while后面的第一条语句是循环体;循环前,必须给循环控制变量赋初值;循环体中,必须有改变循环控制变量值的

15、语句,否则循环永远不结束。,【范例5-12】求数列1/2、2/3、3/4前20项的和。,5.5.4 直到型循环do-while语句直到型循环:先执行语句,后判断表达式。其一般的语法格式为:do 循环体语句;while(表达式);,执行过程是:先执行一次循环体语句,然后判断表达式是否为非0(真),如果为真,则再次执行循环体语句,如此反复,一直到表达式的值等于0(假)时,循环结束。,分号不能省略,5.5.4 直到型循环do-while语句说明:do-while语句与while语句不同,二者的区别在于:当while后面的表达式一开始的值为0(假)时,while语句的循环体一次也不执行,而do-whi

16、le语句的循环体至少要执行一次。循环体部分要用花括号括起来,即使只有一条语句也如此;do-while语句最后以分号结束。do-while语句也可以构成无限循环,此时要利用break语句或 return语句直接从循环体内跳出循环。,5.5.4 直到型循环do-while语句【范例5-13】计算两个数的最大公约数。采用“辗转相除法”,方法如下:比较两数,并使m大于n。将m作被除数,n作除数,相除后余数为r。将mn,nr;若r=0,则m为最大公约数,结束循环。若r0,执行步骤步骤(2)和(3)。,m n,36,24,24,36,5.5.5 循环的嵌套循环的嵌套是指一个循环结构的循环体内又包含另一个完

17、整的循环结构。之前三种循环之间可以互相嵌套。比如:,1.while 嵌套 while while()while(),2.do-while 嵌套 do-while do do while();while();,5.5.5 循环的嵌套,3.for嵌套for for(;)for(;),4.while 嵌套do-while while()do while();,5.for 嵌套while for(;)while(),等等。,5.5.5 循环的嵌套【范例5-14】编写程序打印如下金字塔图形。【范例5-15】在算经中张丘建提出一个“百鸡问题”:就是公鸡一只值钱五,母鸡一只三块,小鸡三只一块。用一百块钱买一

18、百只鸡,问公鸡、母鸡、小鸡各买多少只?,*,0=x=200=y=33z=100-x-y,5.6 转向语句,5.6.1 goto语句5.6.2 break语句5.6.3 continue语句,5.6.1 goto语句 goto语句是无条件转向语句,即转向到指定语句标号处,执行标号后面的程序。其一般语法格式为:goto 语句标号;例如:goto end;,说明:结构化程序设计不主张使用goto语句。,【范例5-16】用goto语句来显示1100的数字。,5.6.2 break语句作用:可使程序跳出当前循环结构,执行循环后面的语句。语句格式为:break;,/*无break语句*/int sum=0

19、,number;scanf(“%d”,/*有break语句*/int sum=0,number;while(1)scanf(“%d”,5.6.2 break语句break语句只是跳出当前的循环语句,对于嵌套的循环语句,break语句的功能是从内层循环跳到外层循环。例如:01 int i=0,j,sum=0;02 while(i 5)03 for(j=0;j 5;j+)04 sum+=i+j;05 if(j=i)break;06 07 i+;08,【范例5-17】输入一个大于2的整数,判断该数是否为素数。若是素数,输出”是素数”,否则输出”不是素数”。,5.6.3 continue语句作用:在满

20、足另一个特定条件时跳出本次循环。语句格式为:continue;,【范例5-18】输出100200之间所有不能被3和7同时整除的整数。,5.7 综合应用简单计算器,【范例5-19】编写一个程序,模拟具有加、减、乘、除等4种功能的简单计算器。,5.9 跟我上机,1编写程序,找到1000以内的所有“完数”。所谓“完数”是指一个数是其所有因子之和,例如6=1+2+3。2输出斐波那契(Fibonacci)数列的前20项。该数列的第1项和第2项为1,从第3项开始,每一项均为其前面2项之各和,即:1,1,2,3,5,8,.。,f1 f21 1,f3,2,f1,f4,3,f2,f1=f1+f2f2=f1+f2,5.9 跟我上机,3猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。问第一天共摘了多少。,today=before/2+1,before=2(today+1),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号