收藏 分享(赏)

第04章 选择结构程序设计.ppt

上传人:hskm5268 文档编号:8832857 上传时间:2019-07-14 格式:PPT 页数:34 大小:866.50KB
下载 相关 举报
第04章 选择结构程序设计.ppt_第1页
第1页 / 共34页
第04章 选择结构程序设计.ppt_第2页
第2页 / 共34页
第04章 选择结构程序设计.ppt_第3页
第3页 / 共34页
第04章 选择结构程序设计.ppt_第4页
第4页 / 共34页
第04章 选择结构程序设计.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、辽宁科技大学资源与土木工程学院测绘教研室,第4章选择结构程序设计,C语言程序设计(第2版),主要内容,4.1 条件判断 4.2 用if语句实现选择结构 4.3 用switch语句实现多分支选 择结构 4.4 程序综合举例,4.1 条件判断,选择结构的作用是:检查人们指定的条件是否满 足,决定在事先给定的两种操作中选定执行其中 一种操作。要实现选择结构,关键是判断给定的 条件是否满足。,如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 如果遇到红灯,要停车等待;(需要判断是否红灯) 如果ab,输出a (需要判断a是否大于b),4.1.1 条件判断的

2、含义,条件判断的结果是一个逻辑值:“是”或“否”,在计算机语言中用“真”和“假”来表示“是”和“否”。如果,判断 “ab” 条件是否满足。当ab时,就称条件“ab” 为 “真” ,如果ab,则不满足“ab”条件,就称此时条件“ab”为假。,在程序中,用选择结构来检查所指定的条件是否满足,并根 据判断的结果决定执行哪种操作(从给定的两组操作中选择 其一)。 如:If (x0)printf(“%d”,x);else printf(“%d”,-x);,4.1.2 关系运算符和关系表达式,1.关系运算符及其优先次序,优先级相同(高),优先级相同(低),1.关系运算符及其优先次序,说明: (1)前面4种

3、关系运算符(,=)的优先级相同,后面2种关系运算符(= =,!=)的优先级相同,并且前4种优先级高于后2种。如:ab= =c 等效于 (ab)= =c (2)关系运算符的优先级低于算术运算符。如:ca+b 等效于 c(a+b) (3)关系运算符的优先级高于赋值运算符。如:a=bc 等效于 a=(bc) (4)用关系运算符比较的数据类型有 :整型、字符型和实型,字符串则不能用关系运算符作比较;比较整型或实型数据时,按照数值的大小进行比较;比较字符型数据时,按照字符的ASCII码进行比较。,2. 关系表达式,关系表达式是用关系运算符将两个比较的对象连接起来的式子。这里比较的对象可以是最简单的常数、

4、变量,还可以是一个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式或字符表达式)。 如:a+bb+c 对象为算术表达式(a=3)(b=5) 对象为赋值表达式ab)(bc) 对象为关系表达式 表达式的结果是逻辑值“真”或“假”,C 语言中没有逻辑型数据,而用数值“1”和“0”分别代表“真”和“假”。例如:关系表达式“2=3”的结果为“假”,即表达式的值为0。又如:表达式“ab” 的结果为“真”,即表达式的值为1。,例4.1 关系表达式运算结果的演示。 #include void main( ) int a,b,c,d,f;a=3; b=2; c=1; d=ab; f=abc;printf(

5、“2210的值是:%dn“,2210);printf(“aA的值是:%dn“,aA);printf(“11=7的值是:%dn“,11=7);printf(“d的值是:%dn“,d);printf(“f的值是:%dn“,f); ,说明:由于用了1和0代表真和假,而1和0又都是数值, 所以在 C 程序中还允许把关系运算的结果(即1和0) 看做和其它数值型数据一样,可以参加数值运算或把 它赋值给数值型变量。,4.1.3 逻辑运算符和逻辑表达式,有时候需要判断的条件不是一个简单的条件,而是 一个复合的条件,如: 是中国公民,且在18岁以上才有选举权。这就要求 同时满足两个条件:中国公民;大于18岁。

6、5门课都及格,才能升级。这就要求同时满足5个条 件。 70岁以上的老人或10岁以下的儿童,入公园免票。 这就要求对入园者检查两个条件,看是否满足其一。,1.逻辑运算符及其优先次序,C语言提供了三种逻辑运算符: (1)& :逻辑“与”(相当于其他语言中的AND) (2)| :逻辑“或” (相当于其他语言中的OR) (3)! :逻辑“非” (相当于其他语言中的NOT),逻辑运算的真值表,说明: (1)三者的优先级由高到低为: !(非)&(与) |(或) (2)多种运算符同时出现时,优先级由低到高为赋值运算符|(或)&(与)关系运算符算术运算符!(非)。如:(12+330)&(a=b) 也可以写成:

7、12+330&a=b。 (3)“!”是“单目运算”,即只要求有一个运算对象(操作数),而“&”和“|”是双目运算符,它们要求有两个运算对象。,1.逻辑运算符及其优先次序,2.逻辑表达式,用逻辑运算符将关系表达式或逻辑量连接起来的式 子就是逻辑表达式。逻辑表达式的结果是逻辑值。 C语言编译系统在表示逻辑运算结果时,以数值1代 表“真”,以0代表“假”,但在判断一个量是否为 “真”时,以0代表“假”,以非0代表“真”。即 将一个非零的数值认作为“真”。 例如: (1)若a=4,则!a的值为0 (2)若a=4,b=5,则a&b的值为1 (3)若a=4,b=5,则a|b的值为1 (4)4&0|2的值为

8、1,4.2 用if语句实现选择结构,1.最基本的if语句,If语句的一般形式:if (表达式) 语句,例如:if (xy) printf(“d“,x);,说明: (1)if后面的括号中的“表达式”指定判断条 件,可以是关系表达式(xy)、逻辑表达式( x & y )。注意表达式必须用圆括号括起来。 (2)如果语句由一条以上语句组成,必须用花括号把这一组语句括起来构成复合语句。,1.最基本的if语句,4.2 输入正方形的边长,求正方形的周长。 #include void main( ) float x; printf(“请输入正方形的边长:“); scanf(“%f“, ,1.最基本的if语句,

9、运行结果: 请输入正方形的边长:5 正方形的周长是:20.000000,2.if else语句,if else语句的一般形式:if (表达式) 语句1;else语句2;,例如:if (xy) max=x;else max=y;,说明: (1)if语句和else语句属于同一个if语句。else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。 (2)当语句1和语句2为单条语句时,必须用分号作为结束符,这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。如果无此分号,则出现语法错误。 (3)在if和else后面可以只含一个内嵌的操作语句(如上例),也可以

10、有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。,2.if else语句,例4.3 完善例4.2。输入正方形的边长,求正方形的周长。 #include void main() float x; printf(“请输入正方形的边长:“); scanf(“%f”,运行结果: 请输入正方形的边长:5 正方形的周长是:20.000000 请输入正方形的边长:-8 数据输入错误!,2.if else语句,3. 多分支选择,格式1:if (表达式1)if(表达式2)语句1else语句2elseif(表达式2) 语句3else 语句4,例4.4:已知高斯平面上的点(x,y),判断该点落在哪

11、个象限。 #include void main() double x,y;printf(“请输入点的平面坐标:“);scanf(“%lf,%lf“, ,运行结果: 请输入点的平面坐标:-100,100 点在第二象限,格式2:if(表达式1)语句1else if(表达式2)语句2else if(表达式n)语句nelse 语句n1,3. 多分支选择,例4.5多分支选择 #include void main() double L; char XZ; int N; printf(“请输入经度L:“); scanf(“%lf“, ,运行结果: 请输入经度L:123.54 请选择3带或6带,3带请按S,6

12、带请按L S 您输入的经度在三度带中的带号为:41,编 写 程 序,例4.6:已知高斯平面上的点(x,y)不在坐标轴上,判断该点落在哪个象限。 #include void main() double x,y;printf(“请输入点的平面坐标:“);scanf(“%lf,%lf“, ,运行结果: 请输入点的平面坐标:-100,100 点在第二象限,4.条件运算符,若 if 语句中,在表达式为“真”和“假”时,且都只执行一个 赋值语句给同一个变量赋值时,可以用简单的条件运算符 来处理。 例如,若有以下if语句: if(ab) max=a; else max=b; 可以用下面的条件运算符来处理:

13、max = (ab)?a:b 其中“ (ab)?a:b”是一个“条件表达式”,条件运算符要求有3个操作对象,称三目(元)运算符,它是 C语言中唯一的一个三目运算符。条件表达式的一般形式为表达式1?表达式2:表达式3 说明: (1)条件运算符的执行顺序:先求解表达式1,若为非0(真) 则求解表达式2,此时表达式2的值就作为整个表达式的值。若 表达式1的值为0(假),则求解表达式3,表达式3的值就是整 个表达式的值。 (2)条件运算符优先于赋值运算符,比关系运算符和算术运 算符都低。 (3)条件运算符的结合方向为“自右至左”。 如:ab?a:cd?c:d 相当于 ab?a:(cd?c:d),4.条

14、件运算符,(4)条件表达式不能代替一般的if 语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替if语句。 (5)条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。,4.条件运算符,例4.7已知任意点的经度,计算出其所在中央子午线的经度 #include void main() char XZSL;int L0,N;float L;printf(“请进行三度带或六度带计算选择:三度带请输入S,六度带请输入L!n“);scanf(“%c“, ,4.3 switch语句,格式:switch (表达式) case 常量表达式1: 语句1 ;case 常量

15、表达式2: 语句2 ;case 常量表达式n: 语句n ;default : 语句n1,例如,要求按照考试成绩的等级输出百分制分数段, 可以用switch语句来实现: switch(grade) case A:printf(“85100n”);case B :printf(“7084n”);case C:printf(“6069n”);case D:printf(“60n”);default :printf(“errorn”); ,4.3 switch语句,说明: (1)ANSI允许switch后面括号内的“表达式”为任意类型。 (2)当表达式的值与某一个case后面的常量表达式的值相等时,就

16、执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 (3)每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。 (4)各个case和default的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“case D”,4.3 switch语句,(5)执行完一个case后面的语句后,流程控制转移到下一个 case 继续执行。“case 常量表达式”只是起语句标号作用 ,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值

17、找到匹配的入口标号 ,就从此标号开始执行下去,不再进行判断。例如,上面的例子中,若grade的值等于A,则将连续输出:851007084606969error,4.3 switch语句,因此,应该在执行一个case分支后,使流程跳出switch结构, 即终止switch语句的执行,可以用一个break语句达到此目的。 将上面的switch结构改写如下: switch(grade) case A:printf(“85100n”); break;case B :printf(“7084n”); break;case C:printf(“6069n”); break;case D:printf(“6

18、0n”); break;default :printf(“errorn”); 最后一个分支(default)可以不加break语句。,4.3 switch语句,(6)多个case可以共用一组执行语句,例如: switch(grade) case A:case B :case C:printf(“60n”); break;case D:printf(“60n”); break;default :printf(“errorn”); grade的值为A、B或C时都执行同一组语句。,4.3 switch语句,例4.7:根据输入的数据选择椭球。 #include void main() int num;double a,b;printf(“请选择椭球:n1.克拉索夫斯基椭球; 2.1975年国际椭球体; 3.WGS-84椭球体;n“);printf(“请选择数字后回车:“);scanf(“%d“, ,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报