《择型程序设计》ppt课件

上传人:tian****1990 文档编号:74786424 上传时间:2019-01-29 格式:PPT 页数:49 大小:330.50KB
返回 下载 相关 举报
《择型程序设计》ppt课件_第1页
第1页 / 共49页
《择型程序设计》ppt课件_第2页
第2页 / 共49页
《择型程序设计》ppt课件_第3页
第3页 / 共49页
《择型程序设计》ppt课件_第4页
第4页 / 共49页
《择型程序设计》ppt课件_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《《择型程序设计》ppt课件》由会员分享,可在线阅读,更多相关《《择型程序设计》ppt课件(49页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计,吕俊白,第四章 选择型程序设计,主要内容: 算法和算法的表示 C语言的语句 关系运算符和关系表达式 逻辑运算符和逻辑表达式 if语句 switch语句 重点:条件的描述; 用if语句和switch语句 实现选择结构,4.1 算法和算法的表示,4.1.1 算法的概念 一个算法就是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 简单地说,把解决问题所确定的方法和有限的步骤称为算法。 通常计算机算法分为两大类: (1)数值运算算法 如:求方程的解 (2)非数值运算算法 如:排序算法、查找算法,4.1.2 算法的基本特征,算法具有以下基本特征: (1)有穷性

2、:一个算法必须在执行有限个操作步骤后终止。 (2)确定性:算法中每一步的含义必须是确切的,不可出现任何二义性。 (3)有效性:算法中的每一步操作都应该能有效执行。 (4)有零个或多个输入:输入是指在执行算法时需要从外界取得必要的信息 (5)有一个或多个输出:算法的目的是为了求解,“解” 就是输出,4.1.3 算法的表示,可以用不同的方法表示算法,常用的有: 自然语言 传统流程图 结构化流程图 伪代码 PAD图,自然语言就是人们日常使用的语言,可以是汉语或英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。 流程图是表示算法的较好的工具。,4.1.4 用流程图表示算法,美国国

3、家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:(P:59表4-1),4.1.5 结构化程序的三种基本结构,任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构被称为程序设计的三种基本结构。,1、顺序结构 顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。,2、选择结构:根据判断框中指定条件的当前值在两条或多条程序路径中选择一条执行。,3、循环结构,当型(While型)循环结构,直到型(Until型)循环,4.2 C语言的语句,C程序的构成,一个c程序可以由若干个源程

4、序文件组成 一个源程序文件可以由若干个函数和预处理命令以及全局变量声明部分组成 一个函数由函数首部和函数体组成 函数体由数据声明和执行语句组成 C语句分为五类: 控制语句 函数调用语句 表达式语句 空语句 复合语句,(一)控制语句:用于完成一定的控制功能 1 if() else 条件语句 6 break 间断语句 2 for() 循环语句 7 switch() 开关语句 3 while()循环语句 8 goto 转向语句 4 do while();循环语句 9 return 返回语句 5 continue 继续语句 (二)函数调用语句 由一个函数调用加一个分号构成一个语句 如: printf(

5、“This is a C statement.”);,(三)表达式语句 由表达式加上分号构成。 如:a=3 是一个表达式, a=3;是一个赋值表达式语句。 i+; x+y; ( 没有赋值,无实际意义) (四)空语句:只有一个分号的语句 如:; 什么也不做 用来做流程的转向点 用来作为循环语句中的循环体,(五)复合语句 用 把多个语句括起来,相当于一个语句。分号不能省略。 如: z=x+y; t=z/100; printf(“%f”,t); ,分号不能省略,没有分号,4.3 关系运算符和关系表达式,4.3.1 关系运算符及其优先次序 C语言提供6种关系运算符(两个级别): 大于() 小于(=)

6、小于等于(=) 等于(=) 不等于(!=) 关系运算符与其它运算符的关系: 关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符 结合方向:从左向右,优先级相同(高),优先级相同(低),4.3.2 关系表达式,用关系运算符将两个表达式连接起来的式子,称为关系表达式。 关系表达式的一般形式为: 运算对象关系运算符运算对象 关系表达式的值是一个逻辑值(只有“真”或“假”),C语言没有逻辑型数据,以1表示“真”,0表示“假”。 例: a=3, b=2, c=1 则: ab 取值为1 a=b 取值为0 f=abc f的值为0 (结合性:从左到右) 在进行关系判别时将“非零”作为“真”,把

7、“零”作为“假”。 在编程时,关系表达式常用于描述简单的条件。 例如:数学(math)成绩在60分以上 关系表达式: math=60,4.4 逻辑运算符和逻辑表达式,例如:数学(math)、语文(chinese)、英语(english)三门课均在60分以上如何描述? 一、 逻辑运算符 C语言提供了三种逻辑运算符: 逻辑非:! 逻辑与:& 逻辑或:|,高 低,二、逻辑表达式与逻辑运算 逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。 逻辑表达式取逻辑值。 逻辑表达式的格式: 逻辑运算符!运算对象 运算对象逻辑运算符&或|运算对象 作用:描述逻辑运算。 运算对象:逻辑值(

8、0或1)或关系表达式。,2、逻辑运算的真值表:,&:只有当两个运算对象均为真时,表达式值才为真. |:只有当两个运算对象均为假时,表达式值才为假. 逻辑运算其运算结果与关系运算相同为: 1(真)或0(假)。 例如:数学(math)、语文(chinese)、英语(english)三门课均在60分以上 math=60 & chinese=60 & english=60,3、逻辑运算符与其它运算符的关系:,!(非) 算术运算符 关系运算符 & | 赋值运算符,优先级高,优先级低,(1)在一个“&”表达式中,若“&”左端为假,则不再计算另一端,该表达式的值肯定为假(0)。 如:a & b & c: 若

9、a为0,则表达式为0,不必判断b和c; 若a为非0,则判断b,以此类推。 (2)在一个“|”表达式中,若“|”左端为真,则不再计算另一端,该表达式的值肯定为真(1)。 如:a | b | c: 若a为非0,则表达式为1,不必判断b和c; 若a为0,则判断b,以此类推。,如: a=1 , b=2 , m=3 , n=3 求解表达式 (m=ab) & (n=0) 因ab为0,则m=ab为0,则表达式为0;n=0不执行,因此表达式求解后: a=1 , b=2, m=0, n=3。,例:判别某一年year是否闰年。 闰年的条件是符合下面二者之一: (1)被4整除,但不被100整除。 (2)能被400整

10、除。 因此判断闰年的表达式为: (year % 4 =0 & year %100 !=0) | year % 400 =0,4.5 if语句,4.5.1 if语句的二种形式: (1) if (表达式) 语句 例: if (xy) printf(“%d”,x);,(2)if(表达式) 语句1 else 语句2 例:if (xy) printf(“%d”,x); else printf(“%d”,y);,说明:,1.一般为逻辑表达式或关系表达式,也可以是其它类型的表达式(如:整型,实型,字符型,指针型),以非0为真,0为假。 2.else前面有一个分号,但不要认为是两个语句,ifelse是一个完整

11、的语句。 3.在if和else后面只能是一个语句,若需要多个语句完成,则应使用复合语句(用花括号将几个语句括起来)。,if语句的作用 在程序中,if语句用于构造选择结构,实现程序分支的选择与执行。,例1:如果a比b大则交换变量a,b中的内容。 if (ab) temp=a; a=b; b=temp; 问题:为什么要使用temp?,如果if条件后面的语句不止一条,则要用花括号写成复合语句形式。,例2:从a,b两个数中挑选值最大者。 if (ab) max = a; else max = b;,例3:求边长为a、b、c的三角形的面积。,/*ch4_1.c*/ #include #include m

12、ain() float a,b,c,s,area; scanf(“%f %f %f“, ,4.5.2 if语句的嵌套,在if语句中又包含一个或多个if语句称为if语句的嵌套。 一般形式: if ( ) if ( ) 语句1 else 语句2 else if ( ) 语句3 else 语句4,匹配规则:,else总是与它上面的、最近的、同一复合语句中的、未配对的if语句配对。,例: if() if() 语句1 else if() 语句2 else 语句3,例: if() if() 语句1 else if() 语句2 else 语句3,当if和else数目不同时,可以加花括号来确定配对关系。 在程

13、序设计中应注意:if与else的配对关系,-1 (x0) 编一程序,输入一个x值,输出相应的y值。,算法1: 算法2: 输入x 输入x 若x0,则y=1 若x=0,则y=0 输出y 否则:y=1 输出y,#include void main() int x,y; scanf(“%d”, ,上例中的程序段有四个,请判断哪个是正确的? 程序1: 程序2: if(x=0) y=-1; if(x0) y=1; else else y=0; if(x=0) y=0; else y=-1; else y=1; 程序3: 程序4: y=-1; y=0; if(x!=0) if(x=0) if(x0) y=1

14、; if(x0) y=1; else y=0; else y=-1;,正 确,正 确,小结:推荐使用的嵌套结构,if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n,4.5.3 条件运算符 P:30,格式:表达式?表达式表达式 条件运算符是C语言中唯一的一个三目运算符。 功能:判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3 使用场合:若在if语句中,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。,例:if (ab) max=a

15、; else max=b; 当ab时将a的值赋给max,当ab时将b的值赋给max,可以看到无论ab是否满足,都是向同一个变量赋值。 可以用下面的条件运算符来处理: max=(ab)?a:b;,说明:,(1)条件运算符的执行顺序: 先求解表达式,若为非(真)则求解表达式,此时表达式的值就作为整个条件表达式的值。若表达式的值为(假),则求解表达式,表达式的值就是整个条件表达式的值。,(2)优先级: 算术运算符 高 关系运算符 逻辑运算符 条件运算符 赋值运算符 低,(3)条件运算符的结合方向为“自右至左”。 如: ab ? a:cd ? c : d 相当于 ab ? a:(cd ? c : d),(4)“表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。 (5)条件表达式中,表达式的类型可以与表达式和表达式的类型不同。 表达式2的类型也可与表达式3的类型不同,此时条件表达式的值的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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