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

上传人:re****.1 文档编号:568260703 上传时间:2024-07-23 格式:PPT 页数:46 大小:387.50KB
返回 下载 相关 举报
计算机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 提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结2 if语句有单分支和双分支结语句有单分支和双分支结构构考虑下面要求:变量考虑下面要求:变量day取取值为值为06,0代表周日、代表周日、16代表周一到周六。输出代表周一到周六。输出要求:当要求:当day0时输出时输出“Sunda

2、y”,day=1时输出时输出“Monday”这种多分支的选择结构可这种多分支的选择结构可以使用以使用switch语句来实现。语句来实现。4.1 switch多路选择结构多路选择结构if (day=0) printf(“Sundayn”);else if (day=1) printf(“Mondayn”);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

3、if (day=6) printf(“Saturdayn”);else printf(“Invalid day!n”);3 1switch语句的一般形式语句的一般形式switch (表达式表达式) case 常量表达式常量表达式1:语句组;:语句组;break; case 常量表达式常量表达式2:语句组;:语句组;break; . case 常量表达式:语句组;常量表达式:语句组;break; default:语句组;语句组;break; 用某个用某个表达式表达式单独测试每一个可能的整数值常单独测试每一个可能的整数值常量,然后做出相应的动作。量,然后做出相应的动作。4.1 switch多路选择

4、结构多路选择结构4 (1)计算)计算switch后面后面“表达式表达式”的值,当其的值,当其与某个与某个case后面的后面的“常量表达式常量表达式”的值相同时,就的值相同时,就执行该执行该case后面的语句(组);当执行到后面的语句(组);当执行到break语句语句时,跳出时,跳出switch语句,转向执行语句,转向执行switch语句后的下一语句后的下一条语句。条语句。(2)如果没有任何一个)如果没有任何一个case后面的后面的“常量表常量表达式达式”的值与的值与“表达式表达式”的值匹配,则执行的值匹配,则执行default 后面的语句(组)。然后,再执行后面的语句(组)。然后,再执行swi

5、tch语句后的语句后的下一条语句。下一条语句。执行过程执行过程执行过程执行过程4.1 switch多路选择结构多路选择结构5 main() int day; scanf(%d,&day); switch (day) case 0: printf(Sundayn);break; case 1: printf(Mondayn); break; case 2: printf(Tuesdayn); break; case 3: printf(Wednesdayn); break; case 4: printf(Thursdayn);break; case 5: printf(Fridayn); bre

6、ak; case 6: printf(Saturdayn); break; default:printf(Invalid day! n); break; system(pause); return 0;1.case后后面面的的表表达达式式必必须须是是常常量量表表达达式式,不不能能含含有有变变量量;而而且且应应该该是是运运算算结结果果为为整整型型、字字符符型型或或枚枚举举型型(以以后后会会讲讲)的的常常量量表表达达式式;同同样样,switch后后面面的的表表达达式式结结果果也也应应该该是是整整型型、字字符符型型或或枚枚举型的。举型的。注意:不能是浮点型。注意:不能是浮点型。2. 每每个个case

7、后后面面“常常量量表表达达式式”的的值值,必必须须各各不不相相同同,否否则则会会出出现现互互相相矛矛盾盾的的现象。现象。3.每个每个case后可以有多条语句,不用大括后可以有多条语句,不用大括号括起来。号括起来。4. 各各case及及default子句的先后次序,不影子句的先后次序,不影响程序执行结果。响程序执行结果。5. default语句不是必须的,但最好提供语句不是必须的,但最好提供一条一条default语句,用于集中处理例外语句,用于集中处理例外情况。且放在最后。情况。且放在最后。6. break语句不是必须的,可以根据实际语句不是必须的,可以根据实际需要决定是否要有需要决定是否要有b

8、reak语句。语句。7. 如果不是判断表达式等于某个值,而是如果不是判断表达式等于某个值,而是判断表达式的值在某个范围内,如:判断表达式的值在某个范围内,如: if (i = -10 & i 10 & i 20 & i = 30) printf(C); else printf(D); 则不能用则不能用switch语句。语句。6 4.1 switch多路选择结构多路选择结构main() int day; scanf(%d,&day); switch(day) case 0: printf(Sundayn); case 1: printf(Mondayn); case 2: printf(Tues

9、dayn); case 3: printf(Wednesdayn); case 4: printf(Thursdayn); case 5: printf(Fridayn); case 6: printf(Saturdayn); default:printf(Invalid day! n); system(pause);当输入为当输入为6时,输出为:时,输出为:SaturdayInvalid day!当输入为当输入为7时,输出为:时,输出为:Invalid day!case后面的常量表达式仅起语句后面的常量表达式仅起语句标号作用,并不进行条件判断标号作用,并不进行条件判断。系统一旦找到入口标号,

10、就从此系统一旦找到入口标号,就从此标号开始执行,不再进行标号判标号开始执行,不再进行标号判断,直到遇到断,直到遇到break,或者到,或者到switch语句结束。语句结束。 不要忘记不要忘记breakbreak,除,除非你真的是不需要。非你真的是不需要。7 4.1 switch多路选择结构多路选择结构 多个多个case子句,可子句,可共用同一语句(组)共用同一语句(组),表示这些条件有,表示这些条件有同一组操作。同一组操作。 当当grade为为A或者或者a时,均输出时,均输出85-100 switch (grade) case A:case a: printf(“85-100n”); brea

11、k;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”);8 while(grade=getchar()!= EOF) /*CTRL+Z组合键表示组合键表示EOF,值为,值为1*/ switch(grade) caseA:casea:/*成绩为成绩为A或或a*/ aCount+; break; caseB:caseb:/*成绩为成绩为B或或b*/

12、 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

13、: aCount+; break;9 4.1 switch多路选择结构多路选择结构练习:输入年份和月份,输出该年截至该月共练习:输入年份和月份,输出该年截至该月共有多少天。要求在判断某个月有多少天时用有多少天。要求在判断某个月有多少天时用switch语句。语句。闰年的判断条件:闰年的判断条件: year能被能被4整除但不能被整除但不能被100整除;或者整除;或者 能被能被400整除。整除。10 #include#includemain() int year, month,day; int yearDays,i; printf(input year-month-day:n); scanf(%d-

14、%d-%d,&year,&month,&day);11 yearDays = 0;for(i = 1; i = month-1; i+) /求第求第i月的天数月的天数 switch(i) case 1:case 3: case 5:case 7: case 8:case 10: case 12: yearDays += 31; break; case 4:case 6: case 9:case 11: yearDays += 30; break; case 2: if (year % 4 =0 & year % 100 !=0 | year %400 = 0) yearDays += 29;

15、else yearDays += 28; break; default: printf(invalid month!); printf(the days are %d,yearDays + day); system(pause);12 提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句 (链接链接)4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结13 循环:在循

16、环条件为真时反复执行的一组指令。循环:在循环条件为真时反复执行的一组指令。循环分成两类:循环分成两类: 1)计数器控制的循环;)计数器控制的循环; 2)标记控制的循环;)标记控制的循环;4.2 循环的本质循环的本质14 4.2 循环的本质循环的本质一、计数器控制的循环一、计数器控制的循环事先知道循环次数,又称事先知道循环次数,又称“定数循环定数循环”;用控制变量来计算循环的次数。控制变量的值用控制变量来计算循环的次数。控制变量的值在每次执行完一组循环指令后递增(或递减)。在每次执行完一组循环指令后递增(或递减)。当控制变量的值达到预定的循环次数时,循环当控制变量的值达到预定的循环次数时,循环终

17、止并继续执行循环结构后面的语句。终止并继续执行循环结构后面的语句。15 4.2 循环的本质循环的本质二、标记控制的循环二、标记控制的循环事先不知道循环次数,又称事先不知道循环次数,又称“不定数循环不定数循环”;标记值表示获取数据的结束。标记值是在所有标记值表示获取数据的结束。标记值是在所有合法数据项都提供给程序后键入的值,必须不合法数据项都提供给程序后键入的值,必须不同于正常的数据项。同于正常的数据项。16 提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continu

18、e语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结17 计数控制的循环要有:计数控制的循环要有:1)控制变量(即循环计数器);)控制变量(即循环计数器);2)控制变量的初始值;)控制变量的初始值;3)在每次循环中用来修改控制变量的递增(或)在每次循环中用来修改控制变量的递增(或递减)值;递减)值;4)测试控制变量最终值的条件。)测试控制变量最终值的条件。4.3 计数器控制的循环计数器控制的循环18 提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的

19、循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结19 /*使用使用for结构的计数器控制的循环结构的计数器控制的循环*/main()() int counter; /*控制变量的初始化、循环条件、循环计数器控制变量的初始化、循环条件、循环计数器*/ /*值的递增(递减)都包含在值的递增(递减)都包含在for结构的头部结构的头部*/ for (counter = 1; counter=10; counter+) p

20、rintf(“%dn”,counter)4.4 for循环结构循环结构for循环指定了计数循环所需的每一方面的内容循环指定了计数循环所需的每一方面的内容20 for语句的一般格式:语句的一般格式: 表达式表达式1:初始化循环控制变量:初始化循环控制变量 表达式表达式2:循环条件:循环条件 表达式表达式3:递增(递减)循环控制变量的值:递增(递减)循环控制变量的值4.4 for循环结构循环结构for (表达式表达式1; 表达式表达式2; 表达式表达式3)表达式表达式1; while(表达式表达式2) 语句组语句组; 表达式表达式3;大多数情况下大多数情况下for语句等价于以下的语句等价于以下的w

21、hile语句:语句:例外情况:当例外情况:当for循循环体中有环体中有continue语语句时,以后会讲句时,以后会讲21 4.4 for循环结构循环结构表达式表达式1和表达式和表达式3可以是用逗号格开的表达式列表。可以是用逗号格开的表达式列表。 如:如:for(i=1,j=50;i=20;i+, j-= 5 )在在for结构中,表达式结构中,表达式1和表达式和表达式3部分应该只放置包含部分应该只放置包含控制变量的表达式。对其他变量的操作应该放在循环控制变量的表达式。对其他变量的操作应该放在循环体之前或循环体之后;体之前或循环体之后;循环控制条件要防止循环控制条件要防止“丢一错误丢一错误”,尽

22、量用,尽量用=)而而不用不用)。如。如counter=10,而不写成而不写成counter=3),),即从第即从第3个数开始,每个数等于前个数开始,每个数等于前2个数之和。个数之和。Fibonacci数列示例:数列示例: 1, 1, 2, 3, 5, 8, 13, 21, 3423 【算法【算法1】每循环一次,求得一个值】每循环一次,求得一个值求求Fibonacci数列数列24 求求Fibonacci数列数列【算法【算法2】每循环一次,求得两个值。且比】每循环一次,求得两个值。且比算法一少用了一个变量。算法一少用了一个变量。25 #includemain() long int f1, f2;

23、/*定义并初始化数列的头定义并初始化数列的头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数列数列-【算法【算法2】 的源程序的源程序26 提纲提纲 4.1

24、switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结27 为了使循环控制更加灵活,语言提供了为了使循环控制更加灵活,语言提供了break语句和语句和continue语句。语句。1一般格式:一般格式: break; continue;2功能功能(1)break:强行结束循环,转向执行循环语句的下一强行结束循环,转向执行循环语句的下一条语

25、句。用于条语句。用于switch语句和循环语句中。语句和循环语句中。(2)continue:用于循环语句中。对于用于循环语句中。对于for循环,跳过循环,跳过循环体其余语句,转向循环变量增量表达式循环体其余语句,转向循环变量增量表达式3的计算;对于的计算;对于while和和do-while循环,跳过循环体其余语句,转向继续循循环,跳过循环体其余语句,转向继续循环条件的判定。环条件的判定。4.5 break和和continue语句语句28 #include#includemain()int x=1;while ( x=10 )if (x =5) break;printf(%d,x); x+;pr

26、intf(nBroke out of loop at x = = %d,x);system(pause); return 0;输出结果:输出结果:1 2 3 4Broke out of loop at x = = 5在在while结构中使用结构中使用break语句语句4.5 break和和continue语句语句强行结束循环,强行结束循环,转向执行循环语转向执行循环语句的下一条语句句的下一条语句29 #include#includemain()int x;for(x=1; x=10; x+ )if (x =5) break;printf(%d,x);printf(nBroke out of l

27、oop at x = = %d,x);system(pause); return 0;输出结果:输出结果:1 2 3 4Broke out of loop at x = = 5在在for结构中使用结构中使用break语句语句4.5 break和和continue语句语句30 #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结构中使用结构中使用

28、continue语句语句4.5 break和和continue语句语句死循环!死循环!跳过循环体其余跳过循环体其余语句,转向继续语句,转向继续循环条件的判定循环条件的判定31 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;输出结果:输出结果:1 2 3 4 6 7 8 9 10在在for结构中使用结构中使用continue语句语句跳过循环体其余语跳过循环体其余语句,转向循环变量句,转向

29、循环变量增量表达式增量表达式3 3的计算的计算32 当当for循环中有循环中有continue语句时语句时main()int x;for(x=1; x=10; x+ )if (x =5) continue; printf(“%d”,x);system(pause);main() int x; x=1; while(x=10) if (x=5) x+; /*不可少不可少*/ continue; printf(%d,i); x+; 33 4.5 break和和continue语句语句#include#includemain()int x ,y; for(x =1; x = 2; x+ ) for(

30、y = 1; y b) & (n=cd)ab的结果为的结果为0,所以,所以m的值为的值为0;上述逻辑与表达式的结果为上述逻辑与表达式的结果为0,不用计算,不用计算n=cd;n的值没有发生变化,为的值没有发生变化,为1。38 提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结39 1.将相等测试运算符将相等测试运算符

31、 错写成错写成 赋值运算符赋值运算符if (paycode=4)printf(“you get a bonus”) 错写成错写成if (paycode=4)printf(“you get a bonus”)C语言中,任何非语言中,任何非0值都被解释为真。值都被解释为真。避免方式:将常量放在运算符的左边,变量放避免方式:将常量放在运算符的左边,变量放在运算符的右边,如:在运算符的右边,如: 4 = paycode4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=40 2、将赋值运算符、将赋值运算符 错写成错写成 相等测试运算符相等测试运算符 x = 1; 错写成错写成 x=1;后者

32、后者x的值并没有改变,将导致程序的逻辑错误的值并没有改变,将导致程序的逻辑错误!4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=41 提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结42 三种基本结构三种基本结构顺序结构顺序结构选择结构选择结构if、if-else、switch循环结构循环结构wh

33、ile、do-while、for4.8 结构化程序设计小结结构化程序设计小结43 结构化程序设计规则:结构化程序设计规则:1)从最简单的流程图开始;)从最简单的流程图开始;2)任何矩形框(动作)都可以被两个按顺)任何矩形框(动作)都可以被两个按顺序放置的矩形框(动作)取代;序放置的矩形框(动作)取代; 3)任何矩形框(动作)都可以被任何控制)任何矩形框(动作)都可以被任何控制结构(顺序、选择、循环)取代;结构(顺序、选择、循环)取代; 4)规则)规则2和规则和规则3可以按照任何顺序运行多可以按照任何顺序运行多次。次。4.8 结构化程序设计小结结构化程序设计小结44 规则规则2:栈:栈式控制规则

34、式控制规则规则规则3:嵌套式:嵌套式控制规则控制规则规则规则14.8 结构化程序设计小结结构化程序设计小结45 结构化程序设计的优点:结构化程序设计的优点:只使用少量的、简单的单入口只使用少量的、简单的单入口/单出口程序块单出口程序块并且只用两种方式组装这些程序块并且只用两种方式组装这些程序块C语言中,简单的语言中,简单的if结构可以实现任何选择形式,结构可以实现任何选择形式,while结构可以实现任何形式的循环。结构可以实现任何形式的循环。因此,因此,C语言程序所需的任何控制结构可以用以语言程序所需的任何控制结构可以用以下三种控制结构完成:下三种控制结构完成: 顺序结构顺序结构 if结构结构 while结构结构4.8 结构化程序设计小结结构化程序设计小结46

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号