计算机CC语言编程程序控制课件_第1页
计算机CC语言编程程序控制课件_第2页
计算机CC语言编程程序控制课件_第3页
计算机CC语言编程程序控制课件_第4页
计算机CC语言编程程序控制课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、 计算机CC语言编程程序控制1第四章第四章 程序控制程序控制 计算机CC语言编程程序控制2提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结 计算机CC语言编程程序控制3 if语句有单分支和双分支结语句有单分支和双分支结构构 考虑下面要求:变量考虑下面要求:变量day取取值为值为06,0代表周日、代表周日、16代表

2、周一到周六。输代表周一到周六。输出要求:当出要求:当day0时输时输出出“Sunday”,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(“Thursday

3、n”);else if (day=5) printf(“Fridayn”);else if (day=6) printf(“Saturdayn”);else printf(“Invalid day!n”); 计算机CC语言编程程序控制41switch语句的一般形式语句的一般形式switch (表达式表达式) case 常量表达式常量表达式1:语句组;:语句组;break; case 常量表达式常量表达式2:语句组;:语句组;break; . case 常量表达式:语句组;常量表达式:语句组;break; default:语句组;语句组;break; 用某个用某个表达式表达式单独测试每一个可能的

4、整数值常单独测试每一个可能的整数值常量,然后做出相应的动作。量,然后做出相应的动作。4.1 switch多路选择结构多路选择结构 计算机CC语言编程程序控制5(1)计算)计算switch后面后面“表达式表达式”的值,当其的值,当其与某个与某个case后面的后面的“常量表达式常量表达式”的值相同时,就的值相同时,就执行该执行该case后面的语句(组);当执行到后面的语句(组);当执行到break语句语句时,跳出时,跳出switch语句,转向执行语句,转向执行switch语句后的下一语句后的下一条语句。条语句。(2)如果没有任何一个)如果没有任何一个case后面的后面的“常量表常量表达式达式”的值

5、与的值与“表达式表达式”的值匹配,则执行的值匹配,则执行default 后面的语句(组)。然后,再执行后面的语句(组)。然后,再执行switch语句后的语句后的下一条语句。下一条语句。执行过程执行过程4.1 switch多路选择结构多路选择结构 计算机CC语言编程程序控制6main() 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(Wed

6、nesdayn); break; case 4: printf(Thursdayn);break; case 5: printf(Fridayn); break; case 6: printf(Saturdayn); break; default:printf(Invalid day! n); break; system(pause); return 0;case后面的表达式必须是常量表达式,后面的表达式必须是常量表达式,不能含有变量;而且应该是运算结果不能含有变量;而且应该是运算结果为整型、字符型或枚举型(以后会讲)为整型、字符型或枚举型(以后会讲)的常量表达式;同样,的常量表达式;同样,s

7、witch后面的表后面的表达式结果也应该是整型、字符型或枚达式结果也应该是整型、字符型或枚举型的。注意:不能是浮点型。举型的。注意:不能是浮点型。2. 每个每个case后面后面“常量表达式常量表达式”的值,必的值,必须各不相同,否则会出现互相矛盾的须各不相同,否则会出现互相矛盾的现象。现象。3.每个每个case后可以有多条语句,不用大括后可以有多条语句,不用大括号括起来。号括起来。4. 各各case及及default子句的先后次序,不影子句的先后次序,不影响程序执行结果。响程序执行结果。5. default语句不是必须的,但最好提供语句不是必须的,但最好提供一条一条default语句,用于集中

8、处理例外语句,用于集中处理例外情况。且放在最后。情况。且放在最后。6. break语句不是必须的,可以根据实际语句不是必须的,可以根据实际需要决定是否要有需要决定是否要有break语句。语句。7. 如果不是判断表达式等于某个值,而是如果不是判断表达式等于某个值,而是判断表达式的值在某个范围内,如:判断表达式的值在某个范围内,如: if (i = -10 & i 10 & i 20 & i = 30) printf(C); else printf(D); 则不能用则不能用switch语句。语句。 计算机CC语言编程程序控制74.1 switch多路选择结构多路选择结构ma

9、in() int day; scanf(%d,&day); switch(day) case 0: printf(Sundayn); case 1: printf(Mondayn); case 2: printf(Tuesdayn); case 3: printf(Wednesdayn); case 4: printf(Thursdayn); case 5: printf(Fridayn); case 6: printf(Saturdayn); default:printf(Invalid day! n); system(pause);当输入为当输入为6时,输出为:时,输出为:Satu

10、rdayInvalid day!当输入为当输入为7时,输出为:时,输出为:Invalid day!case后面的常量表达式仅起语句后面的常量表达式仅起语句标号作用,并不进行条件判断标号作用,并不进行条件判断。系统一旦找到入口标号,就从此系统一旦找到入口标号,就从此标号开始执行,不再进行标号判标号开始执行,不再进行标号判断,直到遇到断,直到遇到break,或者到,或者到switch语句结束。语句结束。 不要忘记不要忘记breakbreak,除,除非你真的是不需要。非你真的是不需要。 计算机CC语言编程程序控制84.1 switch多路选择结构多路选择结构 多个多个case子句,可子句,可共用同一

11、语句共用同一语句(组),表示这些(组),表示这些条件有同一组操作。条件有同一组操作。 当当grade为为A或者或者a时,均输出时,均输出85-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”); 计算机CC语言编程程序控制9wh

12、ile(grade=getchar()!= EOF) /*CTRL+Z组合键表示组合键表示EOF,值为,值为1*/ switch(grade) caseA:casea:/*成绩为成绩为A或或a*/ aCount+; break; caseB:caseb:/*成绩为成绩为B或或b*/ bCount+; break; caseC:casec:/*成绩为成绩为C或或c*/ cCount+; break; casen:case :/*输入为空格或换行输入为空格或换行*/ break; default: printf(Incorrect letter grade entered.); printf(En

13、tere a new grade.n); /*switch*/ /*while*/ 节选教材节选教材86页例题页例题1.getchar():从键盘读从键盘读取一个字符;取一个字符;2. caseA:casea: aCount+; break; 相当于相当于 caseA: casea: aCount+; break; 计算机CC语言编程程序控制104.1 switch多路选择结构多路选择结构 练习:输入年份和月份,输出该年截至该月共练习:输入年份和月份,输出该年截至该月共有多少天。要求在判断某个月有多少天时用有多少天。要求在判断某个月有多少天时用switch语句。语句。闰年的判断条件:闰年的判断

14、条件: year能被能被4整除但不能被整除但不能被100整除;或者整除;或者 能被能被400整除。整除。 计算机CC语言编程程序控制11#include#includemain() int year, month,day; int yearDays,i; printf(input year-month-day:n); scanf(%d-%d-%d,&year,&month,&day); 计算机CC语言编程程序控制12 yearDays = 0;for(i = 1; i = month-1; i+) /求第求第i月的天数月的天数 switch(i) case 1:case

15、 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; else yearDays += 28; break; default: printf(invalid month!); printf(the days are %d,yearDays + day);

16、system(pause); 计算机CC语言编程程序控制13提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句 (链接)(链接)4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结 计算机CC语言编程程序控制14 循环:在循环条件为真时反复执行的一组指令。循环:在循环条件为真时反复执行的一组指令。循环分成两类:循环分成两类: 1)计数器控制的循环;)计数器控制的循环

17、; 2)标记控制的循环;)标记控制的循环;4.2 循环的本质循环的本质 计算机CC语言编程程序控制154.2 循环的本质循环的本质一、计数器控制的循环一、计数器控制的循环事先知道循环次数,又称事先知道循环次数,又称“定数循环定数循环”;用控制变量来计算循环的次数。控制变量的值用控制变量来计算循环的次数。控制变量的值在每次执行完一组循环指令后递增(或递减)。在每次执行完一组循环指令后递增(或递减)。当控制变量的值达到预定的循环次数时,循环当控制变量的值达到预定的循环次数时,循环终止并继续执行循环结构后面的语句。终止并继续执行循环结构后面的语句。 计算机CC语言编程程序控制164.2 循环的本质循

18、环的本质二、标记控制的循环二、标记控制的循环事先不知道循环次数,又称事先不知道循环次数,又称“不定数循环不定数循环”;标记值表示获取数据的结束。标记值是在所有标记值表示获取数据的结束。标记值是在所有合法数据项都提供给程序后键入的值,必须不合法数据项都提供给程序后键入的值,必须不同于正常的数据项。同于正常的数据项。 计算机CC语言编程程序控制17提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测

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

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

21、er+) printf(“%dn”,counter)4.4 for循环结构循环结构for循环指定了计数循环所需的每一方面的内容循环指定了计数循环所需的每一方面的内容 计算机CC语言编程程序控制21for语句的一般格式:语句的一般格式: 表达式表达式1:初始化循环控制变量:初始化循环控制变量 表达式表达式2:循环条件:循环条件 表达式表达式3:递增(递减)循环控制变量的值:递增(递减)循环控制变量的值4.4 for循环结构循环结构for (表达式表达式1; 表达式表达式2; 表达式表达式3)表达式表达式1; while(表达式表达式2) 语句组语句组; 表达式表达式3;大多数情况下大多数情况下f

22、or语句等价于以下的语句等价于以下的while语句:语句:例外情况:当例外情况:当for循循环体中有环体中有continue语语句时,以后会讲句时,以后会讲 计算机CC语言编程程序控制224.4 for循环结构循环结构 表达式表达式1和表达式和表达式3可以是用逗号格开的表达式列表。可以是用逗号格开的表达式列表。 如:如:for(i=1,j=50;i=20;i+, j-= 5 ) 在在for结构中,表达式结构中,表达式1和表达式和表达式3部分应该只放置包含部分应该只放置包含控制变量的表达式。对其他变量的操作应该放在循环控制变量的表达式。对其他变量的操作应该放在循环体之前或循环体之后;体之前或循环

23、体之后; 循环控制条件要防止循环控制条件要防止“丢一错误丢一错误”,尽量用,尽量用=)而而不用不用)。如。如counter=10,而不写成而不写成counter=3),),即从第即从第3个数开始,每个数等于前个数开始,每个数等于前2个数之和。个数之和。Fibonacci数列示例:数列示例: 1, 1, 2, 3, 5, 8, 13, 21, 34 计算机CC语言编程程序控制24【算法【算法1】每循环一次,求得一个值】每循环一次,求得一个值求求Fibonacci数列数列 计算机CC语言编程程序控制25求求Fibonacci数列数列【算法【算法2】每循环一次,求得两个值。且比】每循环一次,求得两个

24、值。且比算法一少用了一个变量。算法一少用了一个变量。 计算机CC语言编程程序控制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 += f

25、2; /*计算下计算下2个数个数*/ f2 += f1; 求求Fibonacci数列数列-【算法【算法2】 的源程序的源程序 计算机CC语言编程程序控制27提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结 计算机CC语言编程程序控制28为了使循环控制更加灵活,语言提供了为了使循环控制更加灵活,语言提供了break

26、语句和语句和continue语句。语句。1一般格式:一般格式: break; continue;2功能功能(1)break:强行结束循环,转向执行循环语句的下一强行结束循环,转向执行循环语句的下一条语句。用于条语句。用于switch语句和循环语句中。语句和循环语句中。(2)continue:用于循环语句中。对于用于循环语句中。对于for循环,跳过循环,跳过循环体其余语句,转向循环变量增量表达式循环体其余语句,转向循环变量增量表达式3的计算;对于的计算;对于while和和do-while循环,跳过循环体其余语句,转向继续循循环,跳过循环体其余语句,转向继续循环条件的判定。环条件的判定。4.5 b

27、reak和和continue语句语句 计算机CC语言编程程序控制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;输出结果:输出结果:1 2 3 4Broke out of loop at x = = 5在在while结构中使用结构中使用break语句语句4.5 break和和continue语句语句强行结束循环,强行结束循环,转向执行循环语转向执行循环语句的

28、下一条语句句的下一条语句 计算机CC语言编程程序控制30#include#includemain()int x;for(x=1; x=10; x+ )if (x =5) break;printf(%d,x);printf(nBroke out of loop at x = = %d,x);system(pause); return 0;输出结果:输出结果:1 2 3 4Broke out of loop at x = = 5在在for结构中使用结构中使用break语句语句4.5 break和和continue语句语句 计算机CC语言编程程序控制31#include#includemain()i

29、nt 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语句语句死循环!死循环!跳过循环体其余跳过循环体其余语句,转向继续语句,转向继续循环条件的判定循环条件的判定 计算机CC语言编程程序控制324.5 break和和continue语句语句#include#includemain()int x;for(x=1;

30、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语句语句跳过循环体其余语跳过循环体其余语句,转向循环变量句,转向循环变量增量表达式增量表达式3 3的计算的计算 计算机CC语言编程程序控制33当当for循环中有循环中有continue语句时语句时main()int x;for(x=1; x=10; x+ )if (x =5) continue; printf(“%d”,x);system(pause);ma

31、in() int x; x=1; while(x=10) if (x=5) x+; /*不可少不可少*/ continue; printf(%d,i); x+; 计算机CC语言编程程序控制344.5 break和和continue语句语句#include#includemain()int x ,y; for(x =1; x = 2; x+ ) for(y = 1; y b) & (n=cd)ab的结果为的结果为0,所以,所以m的值为的值为0;上述逻辑与表达式的结果为上述逻辑与表达式的结果为0,不用计算,不用计算n=cd;n的值没有发生变化,为的值没有发生变化,为1。 计算机CC语言编程

32、程序控制39提纲提纲 4.1 switch多路选择结构多路选择结构4.2 循环的本质循环的本质4.3 计数器控制的循环计数器控制的循环4.4 for循环结构循环结构4.5 break和和continue语句语句4.6 逻辑运算符逻辑运算符4.7 相等测试运算符相等测试运算符=和赋值运算符和赋值运算符=4.8 结构化程序设计小结结构化程序设计小结 计算机CC语言编程程序控制401.将相等测试运算符将相等测试运算符 错写成错写成 赋值运算符赋值运算符if (paycode=4)printf(“you get a bonus”) 错写成错写成if (paycode=4)printf(“you get a bonus”)C语言中,任何非语言中,任何非0值都被解释为真。值都被解释为真。避免方式:将常量放在运算符的左边,变量放避免方式:将常量放在运算符的左边,变量放在运算符的右边,如:在运算符的右边,如: 4 = paycode4.7 相等测试运算符相等测试运算符=和赋值

温馨提示

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

评论

0/150

提交评论