计算机CC语言编程程序控制.ppt

上传人:牧羊曲112 文档编号:6606100 上传时间:2023-11-17 格式:PPT 页数:46 大小:305KB
返回 下载 相关 举报
计算机CC语言编程程序控制.ppt_第1页
第1页 / 共46页
计算机CC语言编程程序控制.ppt_第2页
第2页 / 共46页
计算机CC语言编程程序控制.ppt_第3页
第3页 / 共46页
计算机CC语言编程程序控制.ppt_第4页
第4页 / 共46页
计算机CC语言编程程序控制.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《计算机CC语言编程程序控制.ppt》由会员分享,可在线阅读,更多相关《计算机CC语言编程程序控制.ppt(46页珍藏版)》请在三一办公上搜索。

1、1,2,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,3,if语句有单分支和双分支结构考虑下面要求:变量day取值为06,0代表周日、16代表周一到周六。输出要求:当day0时输出“Sunday”,day=1时输出“Monday”这种多分支的选择结构可以使用switch语句来实现。,4.1 switch多路选择结构,if(day=0)printf(“Sundayn”);else if(day=1)printf(“Mo

2、ndayn”);else if(day=2)printf(“Tuesdayn”);else if(day=3)printf(“Wednesdayn”);else if(day=4)printf(“Thursdayn”);else if(day=5)printf(“Fridayn”);else if(day=6)printf(“Saturdayn”);else printf(“Invalid day!n”);,4,1switch语句的一般形式switch(表达式)case 常量表达式1:语句组;break;case 常量表达式2:语句组;break;.case 常量表达式:语句组;break;d

3、efault:语句组;break;,4.1 switch多路选择结构,5,(1)计算switch后面“表达式”的值,当其与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句后的下一条语句。(2)如果没有任何一个case后面的“常量表达式”的值与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句后的下一条语句。,4.1 switch多路选择结构,6,main()int day;scanf(%d,return 0;,case后面的表达式必须是常量表达式,不能含有

4、变量;而且应该是运算结果为整型、字符型或枚举型(以后会讲)的常量表达式;同样,switch后面的表达式结果也应该是整型、字符型或枚举型的。注意:不能是浮点型。,2.每个case后面“常量表达式”的值,必须各不相同,否则会出现互相矛盾的现象。,3.每个case后可以有多条语句,不用大括号括起来。4.各case及default子句的先后次序,不影响程序执行结果。,5.default语句不是必须的,但最好提供一条default语句,用于集中处理例外情况。且放在最后。6.break语句不是必须的,可以根据实际需要决定是否要有break语句。,7.如果不是判断表达式等于某个值,而是判断表达式的值在某个范

5、围内,如:if(i=-10 则不能用switch语句。,7,4.1 switch多路选择结构,main()int day;scanf(%d,当输入为6时,输出为:SaturdayInvalid day!当输入为7时,输出为:Invalid day!,case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,直到遇到break,或者到switch语句结束。,不要忘记break,除非你真的是不需要。,8,4.1 switch多路选择结构,多个case子句,可共用同一语句(组),表示这些条件有同一组操作。当grade为A或者a时,均输出8

6、5-100,switch(grade)case A:case a:printf(“85-100n”);break;case B:case b:printf(“70-84n”);break;case C:case c:printf(“60-69n”);break;case D:case d:printf(“below 60n”);break;default:printf(“input error!n”);,9,while(grade=getchar()!=EOF)/*CTRL+Z组合键表示EOF,值为1*/switch(grade)caseA:casea:/*成绩为A或a*/aCount+;br

7、eak;caseB:caseb:/*成绩为B或b*/bCount+;break;caseC:casec:/*成绩为C或c*/cCount+;break;casen:case:/*输入为空格或换行*/break;default:printf(Incorrect letter grade entered.);printf(Entere a new grade.n);/*switch*/*while*/,节选教材86页例题,1.getchar():从键盘读取一个字符;2.caseA:casea:aCount+;break;相当于 caseA:casea:aCount+;break;,10,4.1 s

8、witch多路选择结构,练习:输入年份和月份,输出该年截至该月共有多少天。要求在判断某个月有多少天时用switch语句。闰年的判断条件:year能被4整除但不能被100整除;或者 能被400整除。,11,#include#includemain()int year,month,day;int yearDays,i;printf(input year-month-day:n);scanf(%d-%d-%d,12,yearDays=0;for(i=1;i=month-1;i+)/求第i月的天数 switch(i)case 1:case 3:case 5:case 7:case 8:case 10:

9、case 12:yearDays+=31;break;case 4:case 6:case 9:case 11:yearDays+=30;break;case 2:if(year%4=0,13,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句(链接)4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,14,循环:在循环条件为真时反复执行的一组指令。循环分成两类:1)计数器控制的循环;2)标记控制的循环;,4.2 循环的本质,15,4.2 循环的本质,一、计数器控制的循环

10、事先知道循环次数,又称“定数循环”;用控制变量来计算循环的次数。控制变量的值在每次执行完一组循环指令后递增(或递减)。当控制变量的值达到预定的循环次数时,循环终止并继续执行循环结构后面的语句。,16,4.2 循环的本质,二、标记控制的循环事先不知道循环次数,又称“不定数循环”;标记值表示获取数据的结束。标记值是在所有合法数据项都提供给程序后键入的值,必须不同于正常的数据项。,17,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序

11、设计小结,18,计数控制的循环要有:1)控制变量(即循环计数器);2)控制变量的初始值;3)在每次循环中用来修改控制变量的递增(或递减)值;4)测试控制变量最终值的条件。,4.3 计数器控制的循环,19,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,20,/*使用for结构的计数器控制的循环*/main()int counter;/*控制变量的初始化、循环条件、循环计数器*/*值的递增(递减)都包含在for结构的头部

12、*/for(counter=1;counter=10;counter+)printf(“%dn”,counter),4.4 for循环结构,for循环指定了计数循环所需的每一方面的内容,21,for语句的一般格式:表达式1:初始化循环控制变量 表达式2:循环条件 表达式3:递增(递减)循环控制变量的值,4.4 for循环结构,for(表达式1;表达式2;表达式3),例外情况:当for循环体中有continue语句时,以后会讲,22,4.4 for循环结构,表达式1和表达式3可以是用逗号格开的表达式列表。如:for(i=1,j=50;i=20;i+,j-=5)在for结构中,表达式1和表达式3部

13、分应该只放置包含控制变量的表达式。对其他变量的操作应该放在循环体之前或循环体之后;循环控制条件要防止“丢一错误”,尽量用=)而不用)。如counter=10,而不写成counter11;for结构中的三个表达式是可有可无的:如果在程序的其他地方初始化了控制变量,则可以省去表达式1;如果省略了表达式2,则假定条件为真,建立了一个“无限循环”;如果在for结构体中计算了递增(递减)表达式或者不需要递增(递减)表达式,则可以省去表达式3。,for(表达式1;表达式2;表达式3),23,4.4 for循环结构应用举例,Fibonacci数列示例:1,1,2,3,5,8,13,21,34,24,【算法1

14、】每循环一次,求得一个值,求Fibonacci数列,25,求Fibonacci数列,【算法2】每循环一次,求得两个值。且比算法一少用了一个变量。,26,#includemain()long int f1,f2;/*定义并初始化数列的头2个数*/int i;/*定义并初始化循环控制变量i*/f1=1,f2=1;for(i=1;i=20;i+)/*1组2个,20组40个数*/printf(“%15ld%15ld”,f1,f2);/*输出当前的2个数*/if(i%2=0)printf(“n”);/*输出2次(4个数),换行*/f1+=f2;/*计算下2个数*/f2+=f1;,求Fibonacci数列

15、-【算法2】的源程序,27,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,28,为了使循环控制更加灵活,语言提供了break语句和continue语句。1一般格式:break;continue;2功能(1)break:强行结束循环,转向执行循环语句的下一条语句。用于switch语句和循环语句中。(2)continue:用于循环语句中。对于for循环,跳过循环体其余语句,转向循环变量增量表达式3的计算;对于while和

16、do-while循环,跳过循环体其余语句,转向继续循环条件的判定。,4.5 break和continue语句,29,#include#includemain()int x=1;while(x=10)if(x=5)break;printf(%d,x);x+;printf(nBroke out of loop at x=%d,x);system(pause);return 0;,在while结构中使用break语句,4.5 break和continue语句,强行结束循环,转向执行循环语句的下一条语句,30,#include#includemain()int x;for(x=1;x=10;x+)if

17、(x=5)break;printf(%d,x);printf(nBroke out of loop at x=%d,x);system(pause);return 0;,在for结构中使用break语句,4.5 break和continue语句,31,#include#includemain()int x=1;while(x=10)if(x=5)continue;printf(%d,x);x+;printf(nBroke out of loop at x=%d,x);system(pause);return 0;,在while结构中使用continue语句,4.5 break和continue

18、语句,跳过循环体其余语句,转向继续循环条件的判定,32,4.5 break和continue语句,#include#includemain()int x;for(x=1;x=10;x+)if(x=5)continue;printf(“%d”,x);system(pause);return 0;,在for结构中使用continue语句,跳过循环体其余语句,转向循环变量增量表达式3的计算,33,当for循环中有continue语句时,main()int x;for(x=1;x=10;x+)if(x=5)continue;printf(“%d”,x);system(pause);,main()int

19、 x;x=1;while(x=10)if(x=5)x+;/*不可少*/continue;printf(%d,i);x+;,34,4.5 break和continue语句,#include#includemain()int x,y;for(x=1;x=2;x+)for(y=1;y=10;y+)if(y=5)break;printf(x:%2d,y:%2dn,x,y);system(pause);return 0;,循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关,35,与全部使用标准控制流程编写的程序相比,使用break和continue语句的结构较差。,36,

20、提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,37,逻辑运算符:将简单条件组合成复杂条件,包含&的表达式如果已经知道结果为假、包含|的表达式如果已经知道结果为真就会停止进一步计算。所以在包含&的表达式中,把最可能为假的条件放在最左边;在包含|的表达式中,把最可能为真的条件放在最左边,这样可以减少程序执行的时间。,4.6 逻辑运算符,38,4.6 逻辑运算符,例:假设a=1,b=2,c=3,d=4,m=1,n=1,经过

21、下列逻辑表达式计算后,m和n的值各是多少?(m=ab)&(n=cd)ab的结果为0,所以m的值为0;上述逻辑与表达式的结果为0,不用计算n=cd;n的值没有发生变化,为1。,39,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,40,1.将相等测试运算符 错写成 赋值运算符if(paycode=4)printf(“you get a bonus”)错写成if(paycode=4)printf(“you get a bo

22、nus”),C语言中,任何非0值都被解释为真。,避免方式:将常量放在运算符的左边,变量放在运算符的右边,如:4=paycode,4.7 相等测试运算符=和赋值运算符=,41,2、将赋值运算符 错写成 相等测试运算符 x=1;错写成 x=1;后者x的值并没有改变,将导致程序的逻辑错误!,4.7 相等测试运算符=和赋值运算符=,42,提纲,4.1 switch多路选择结构4.2 循环的本质4.3 计数器控制的循环4.4 for循环结构4.5 break和continue语句4.6 逻辑运算符4.7 相等测试运算符=和赋值运算符=4.8 结构化程序设计小结,43,三种基本结构顺序结构选择结构if、i

23、f-else、switch循环结构while、do-while、for,4.8 结构化程序设计小结,44,结构化程序设计规则:1)从最简单的流程图开始;2)任何矩形框(动作)都可以被两个按顺序放置的矩形框(动作)取代;3)任何矩形框(动作)都可以被任何控制结构(顺序、选择、循环)取代;4)规则2和规则3可以按照任何顺序运行多次。,4.8 结构化程序设计小结,45,规则2:栈式控制规则,规则3:嵌套式控制规则,规则1,4.8 结构化程序设计小结,46,结构化程序设计的优点:只使用少量的、简单的单入口/单出口程序块并且只用两种方式组装这些程序块C语言中,简单的if结构可以实现任何选择形式,while结构可以实现任何形式的循环。因此,C语言程序所需的任何控制结构可以用以下三种控制结构完成:顺序结构 if结构 while结构,4.8 结构化程序设计小结,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号