第2章 程序的流程控制.ppt
《第2章 程序的流程控制.ppt》由会员分享,可在线阅读,更多相关《第2章 程序的流程控制.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SEI 第二章第二章 程序的流程控制程序的流程控制 语句语句高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季2学习目标学习目标n了解布尔数据的概念,掌握关系操作符和逻辑操了解布尔数据的概念,掌握关系操作符和逻辑操作符的使用方法;作符的使用方法;n熟练掌握熟练掌握if语句,掌握语句,掌握switch语句,会利用这两语句,会利用这两种语句进行条件分支结构的程序设计;种语句进行条件分支结构的程序设计;n熟练掌握熟练掌握for语句、语句、while语句,会利用这两种语语句,会利用这两种语句进行循环结构的程序设计。句进行循环结构的程序设计。n掌握掌握break语句和语句和continue
2、语句与上述语句的配语句与上述语句的配合使用方法。合使用方法。高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季3第二章第二章 程序的流程控制程序的流程控制n2.1 结构化程序设计基础结构化程序设计基础n2.2 布尔数据布尔数据n2.3 if分支结构分支结构n2.4 switch 分支结构分支结构n2.5 while 循环结构循环结构n2.6 for 循环结构循环结构n2.7 问题求解与结构化程序设计问题求解与结构化程序设计高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季4n三种基本控制结构三种基本控制结构n顺序结构顺序结构n分支结构分支结构n循环结构循环结构n复杂
3、控制结构复杂控制结构n控制结构可以嵌套,以构成更复杂的控制结构控制结构可以嵌套,以构成更复杂的控制结构结构化程序设计基础结构化程序设计基础结构化程序设计基础结构化程序设计基础高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季5n顺序结构顺序结构n由一组顺序执行的处理块组成,每个处理块可能包含一由一组顺序执行的处理块组成,每个处理块可能包含一条或一组语句,完成一项任务条或一组语句,完成一项任务n顺序结构是最基本的算法结构顺序结构是最基本的算法结构顺序结构顺序结构顺序结构顺序结构结构化程序结构化程序设计基础设计基础高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季6n编
4、写程序,接受用户输入的两个整数,输出其中较大者编写程序,接受用户输入的两个整数,输出其中较大者#include#include zylib.hint main()int a,b,max;/*/*输入部分输入部分 */*/printf(The program gets two numbers and prints the greater one.n);printf(The first number:);a=GetIntegerFromKeyboard();printf(The second number:);b=GetIntegerFromKeyboard();/*/*计算部分计算部分 */*/
5、max=a b?a:b;/*/*三元表达式三元表达式 */*/*/*输出部分输出部分 */*/printf(The greater one is%d.n,max);return 0;顺序结构示例顺序结构示例顺序结构示例顺序结构示例结构化程序结构化程序设计基础设计基础高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季7n格格 式式n表达式表达式1?表达式表达式2:表达式表达式3n计算过程计算过程n先计算表达式先计算表达式1的值,若为真,则结果为表达式的值,若为真,则结果为表达式2的值,否则为的值,否则为表达式表达式3的值的值n示示 例例nx=(a b)?a:b;n等价于:等价于:i
6、f(a b)x=a;else x=b;三元表达式三元表达式三元表达式三元表达式结构化程序结构化程序设计基础设计基础高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季8n分支结构(选择结构)的含义分支结构(选择结构)的含义n根据某一条件的判断结果,确定程序的流程,即选择哪一个程序分支根据某一条件的判断结果,确定程序的流程,即选择哪一个程序分支中的处理块去执行中的处理块去执行n最基本的分支结构是二路分支结构最基本的分支结构是二路分支结构n以条件判断为起点,如果判断结果为真,则执行以条件判断为起点,如果判断结果为真,则执行A处理块的操作,否处理块的操作,否则执行则执行B处理块的操作处理
7、块的操作分支结构分支结构分支结构分支结构结构化程序结构化程序设计基础设计基础高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季9n循环结构的含义循环结构的含义n根据某一条件的判断结果,反复执行某一处理块的过程根据某一条件的判断结果,反复执行某一处理块的过程n进入循环结构,判断循环条件,如果循环条件的结果为真,则执行进入循环结构,判断循环条件,如果循环条件的结果为真,则执行A处理块的操作,即循环一次,然后再次判断循环条件,当循环条件为处理块的操作,即循环一次,然后再次判断循环条件,当循环条件为假时,循环结束假时,循环结束循环结构循环结构循环结构循环结构结构化程序结构化程序设计基础设
8、计基础高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季10第二章第二章 程序的流程控制程序的流程控制n2.1 结构化程序设计基础结构化程序设计基础n2.2 布尔数据布尔数据n2.2.1 枚举类型枚举类型n2.2.2 用户自定义数据类型用户自定义数据类型n2.2.3 关系表达式关系表达式n2.2.4 逻辑表达式逻辑表达式n2.2.5 逻辑表达式的求值逻辑表达式的求值n2.3 if分支结构分支结构n2.4 switch 分支结构分支结构n2.5 while 循环结构循环结构n2.6 for 循环结构循环结构n2.7 问题求解与结构化程序设计问题求解与结构化程序设计高级语言程序设计S
9、EIC+C+C+C+程序设计基础 2009秋季11n如何描述一个星期的每一天这样的数据?如果用如何描述一个星期的每一天这样的数据?如果用int来描述,将会面临:来描述,将会面临:n1表示什么意思?表示什么意思?n星期天用什么整数表示?星期天用什么整数表示?0还是还是7?n如果用如果用06表示一个星期的每一天,则对于一个取值为一个表示一个星期的每一天,则对于一个取值为一个星期某一天的星期某一天的int型变量型变量day,如何防止下面的逻辑错误:,如何防止下面的逻辑错误:wday=10wday=day*2n在在C语言中用枚举类型来解决上面的问题。语言中用枚举类型来解决上面的问题。枚举类型枚举类型枚
10、举类型枚举类型高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季12n枚举类型的定义格式为:枚举类型的定义格式为:nenum ;w为用逗号隔开的若干个枚举值。例如:例如:nenum Day SUN,MON,TUE,WED,THU,FRI,SAT;nenum Color RED,GREEN,BLUE;nenum Month JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC;枚举类型的定义枚举类型的定义枚举类型枚举类型高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季13n枚举类型变量的定义枚举类型变量的定义n例:例:enu
11、m MONTH month;注意:注意:enum不是类型修饰符,不是类型修饰符,enum与所定义的枚举类型名一起与所定义的枚举类型名一起才是类型修饰符(如才是类型修饰符(如enum Day)。n实现布尔类型实现布尔类型n定义类型:定义类型:enum BOOL FALSE,TRUE;n使用布尔类型定义变量:使用布尔类型定义变量:enum BOOL flag;n每次定义,都需要书写每次定义,都需要书写 enum,很不方便,很不方便枚举类型枚举类型枚举类型枚举类型布尔数据布尔数据高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季14n自定义类型的格式自定义类型的格式n格式:格式:typ
12、edef 原类型修饰符原类型修饰符 新类型名新类型名;n例一:例一:typedef int DWORD;n例二:例二:enum BOOL FALSE,TRUE;typedef enum BOOL BOOL;n自定义类型的性质自定义类型的性质n新类型与原类型相同,并未产生新类型,重新命名的自定义类新类型与原类型相同,并未产生新类型,重新命名的自定义类型使程序更易理解型使程序更易理解用户自定义类型用户自定义类型用户自定义类型用户自定义类型布尔数据布尔数据高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季15n实现布尔类型:第一版实现布尔类型:第一版n定义枚举类型:定义枚举类型:enu
13、m BOOL FALSE,TRUE;n自定义布尔类型:自定义布尔类型:typedef enum BOOL BOOL;n定义变量:定义变量:BOOL bool;n实现布尔类型:第二版实现布尔类型:第二版n定义枚举类型:定义枚举类型:enum _BOOL FALSE,TRUE;n自定义布尔类型:自定义布尔类型:typedef enum _BOOL BOOL;n定义变量:定义变量:BOOL bool;n实现布尔类型:第三版实现布尔类型:第三版n定义类型:定义类型:typedef enum FALSE,TRUE BOOL;n定义变量:定义变量:BOOL bool;布尔类型布尔类型布尔类型布尔类型布尔数
14、据布尔数据高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季16n关系操作符关系操作符n(大于)(大于),=(不小于)(不小于),=(不大于)(不大于),=(相等)(相等),!=(不等)(不等)n关系表达式关系表达式n关系操作符与两个操作数构成的表达式关系操作符与两个操作数构成的表达式n运算结果为逻辑值:真或假运算结果为逻辑值:真或假n逻辑值(布尔值)逻辑值(布尔值)nC语言以语言以 0 表示假,以非表示假,以非 0 表示真(经常以表示真(经常以 1 表示)表示)n尽量使用尽量使用 BOOL 类型表示逻辑值!类型表示逻辑值!n示示 例例n例:例:x=y,a b注意:应避免对两个浮
15、点数进行注意:应避免对两个浮点数进行“=”和和“!=”比较运算比较运算 x=y可写成:可写成:fabs(x-y)1e-6关系表达式关系表达式关系表达式关系表达式优先级相同(高)优先级相同(高)优先级相同(低)优先级相同(低)布尔数据布尔数据高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季17n 逻辑操作符逻辑操作符 逻辑操作符实现逻辑运算,结果也为布尔类型的逻辑操作符实现逻辑运算,结果也为布尔类型的值:值:true或或false。!(逻辑非)、(逻辑非)、&(逻辑与)、(逻辑与)、|(逻辑或)(逻辑或)!true -false!true -false!false-true!fa
16、lse-truefalse|false-falsefalse|false-falsefalse|true -truefalse|true -truetrue|false-truetrue|false-truetrue|true -truetrue|true -truefalse&false-falsefalse&false-falsefalse&true -falsefalse&true -falsetrue&false-falsetrue&false-falsetrue&true -truetrue&true -true布尔数据布尔数据逻辑表达式逻辑表达式优先级:高优先级:高低低高级语言程序
17、设计SEIC+C+C+C+程序设计基础 2009秋季18n逻辑表达式:逻辑操作符与一个或两个操作数构逻辑表达式:逻辑操作符与一个或两个操作数构成的表达式,结果仍为真或假成的表达式,结果仍为真或假。n关系操作符与逻辑操作符的优先级关系操作符与逻辑操作符的优先级n从高到低顺序:逻辑非从高到低顺序:逻辑非“!”;小于;小于“=”、大于、大于“”、不大于、不大于“y|a!=b&3 y)max=x;n格式二:格式二:if(条件表达式条件表达式)语句序列语句序列 1 else 语句序语句序列列 2 例:例:if(xy)max=x;else max=y;n格式三:格式三:if(条件条件表达式表达式1)语句序
18、列语句序列 1 else if(条件表达式条件表达式2)语句序列语句序列 2 else if(条件表达式条件表达式3)语句序列语句序列 3。else 语句序列语句序列 n if语句语句 if分支结构分支结构高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季23l编写程序,接受用户输入的整数,如果该整数为奇编写程序,接受用户输入的整数,如果该整数为奇数则将其乘数则将其乘 3 加加 1 后输出,偶数直接输出。后输出,偶数直接输出。#include#include zylib.hint main()int a,result;/*/*输入部分输入部分 */*/printf(The pro
19、gram gets a number.nIf it is an even,output it directly,n);printf(otherwise multiply it by 3 then plus 1.n);printf(The number:);a=GetIntegerFromKeyboard();/*/*计算部分计算部分 */*/result=a;if(a%2=1)result=a*3+1;/*/*输出部分输出部分 */*/printf(The result is%d.n,result);return 0;简单简单if语句语句 if分支结构分支结构高级语言程序设计SEIC+C+C+
20、C+程序设计基础 2009秋季24l编写程序,接受用户输入的整数,如果该整数为奇数编写程序,接受用户输入的整数,如果该整数为奇数则将其乘则将其乘 3 加加 1 后输出,偶数除以后输出,偶数除以 2 后输出后输出#include#include zylib.hint main()int a,result;/*/*输入部分输入部分 */*/printf(The program gets a number.nIf it is an even,divide it by 2,n);printf(otherwise multiply it by 3 then plus 1.n);printf(The nu
21、mber:);a=GetIntegerFromKeyboard();/*/*计算部分计算部分 */*/if(a%2=1)result=a*3+1;else result=a/2;/*/*输出部分输出部分 */*/printf(The result is%d.n,result);return 0;if-else语句语句 if分支结构分支结构高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季25if-else语句语句l从键盘输入三个整数,计算其中的最大值并将其输出。从键盘输入三个整数,计算其中的最大值并将其输出。#include#include zylib.hint main()in
22、t a,b,c,max;/*/*输入部分输入部分 */*/printf(“该程序从键盘获取该程序从键盘获取3个整数,输出最大值。个整数,输出最大值。n);printf(“请输入请输入3个数个数:n);a=GetIntegerFromKeyboard();b=GetIntegerFromKeyboard();c=GetIntegerFromKeyboard();/*/*计算部分计算部分 */*/if(a b)max=a;else max=b;if(c max)max=c;/*/*输出部分输出部分 */*/printf(“最大值为:最大值为:%d.n,max);return 0;if分支结构分支结
23、构高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季26l从键盘输入一个三角形的三条边,判断其为何种三角形。从键盘输入一个三角形的三条边,判断其为何种三角形。#include int main()int a,b,c;scanf(%d%d%d,&a,&b,&c);if(a+b=c|b+c=a|c+a=b)printf(不是三角形不是三角形);else if(a=b&b=c)printf(等边三角形等边三角形);else if(a=b|b=c|c=a)printf(等腰三角形等腰三角形);else if(a*a+b*b=c*c|b*b+c*c=a*a|c*c+a*a=b*b)prin
24、tf(直角三角形(非等腰)直角三角形(非等腰));elseprintf(其它三角形其它三角形);printf(n);return 0;if-else if-else语句语句 if分支结构分支结构高级语言程序设计SEIC+C+C+C+程序设计基础 2009秋季27If语句的嵌套语句的嵌套n一般形式一般形式if()if()语句语句1else 语句语句2elseif()语句语句3else 语句语句4注意:注意:语句语句1、2、3、4可以是复合语句,每层的可以是复合语句,每层的if与与else配对,或用配对,或用 来确定层次关系。来确定层次关系。if分支结构分支结构高级语言程序设计SEIC+C+C+C
25、+程序设计基础 2009秋季28lelse 与哪个与哪个 if 配对?配对?if(service_years=28)salary_level+=1;else salary_level+=2;lelse 与与 if 配对规则配对规则-else部分属于前面最近的无对应部分属于前面最近的无对应else的的if语句。语句。if(service_years=28)salary_level+=1;else salary_level+=2;降低第二个降低第二个 if 的层次,的层次,使使 else 与第一个与第一个 if 配对配对if语句的歧义语句的歧义 if分支结构分支结构高级语言程序设计SEIC+C+C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 程序的流程控制 程序 流程 控制
限制150内