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

上传人:gsy****95 文档编号:85133842 上传时间:2023-04-10 格式:PPT 页数:34 大小:866.50KB
返回 下载 相关 举报
第04章 选择结构程序设计.ppt_第1页
第1页 / 共34页
第04章 选择结构程序设计.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《第04章 选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第04章 选择结构程序设计.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、辽宁科技大学资源与土木工程学院测绘教研室辽宁科技大学资源与土木工程学院测绘教研室第4章选择结构程序设计 主要内容4.1 4.1 条件判断条件判断4.2 4.2 用用if if语句实现选择结构语句实现选择结构4.3 4.3 用用switchswitch语句实现多分支选语句实现多分支选 择结构择结构4.4 4.4 程序综合举例程序综合举例4.1 条件判断条件判断选择结构的作用是:检查人们指定的条件是否满选择结构的作用是:检查人们指定的条件是否满足,决定在事先给定的两种操作中选定执行其中足,决定在事先给定的两种操作中选定执行其中一种操作。要实现选择结构,关键是判断给定的一种操作。要实现选择结构,关键

2、是判断给定的条件是否满足。条件是否满足。如果你在家,我去拜访你;如果你在家,我去拜访你;(需要判断你是否在家)(需要判断你是否在家)如果考试不及格,要补考;如果考试不及格,要补考;(需要判断是否及格)(需要判断是否及格)如果遇到红灯,要停车等待;(需要判断是否红灯)如果遇到红灯,要停车等待;(需要判断是否红灯)如果如果ab,输出,输出a (需要判断(需要判断a是否大于是否大于b)4.1.1 条件判断的含义条件判断的含义条件判断的结果是一个逻辑值:条件判断的结果是一个逻辑值:“是是”或或“否否”,在,在计算机语言中用计算机语言中用“真真”和和“假假”来表示来表示“是是”和和“否否”。如果,判断。

3、如果,判断“ab”条件是否满足。当条件是否满足。当ab时,时,就称条件就称条件“ab”为为“真真”,如果,如果ab,则不满足,则不满足“ab”条件,就称此时条件条件,就称此时条件“ab”为假。为假。在程序中,用选择结构来检查所指定的条件是否满足,并根在程序中,用选择结构来检查所指定的条件是否满足,并根据判断的结果决定执行哪种操作(从给定的两组操作中选择据判断的结果决定执行哪种操作(从给定的两组操作中选择其一)。其一)。如:如:If(x0)printf(“%d”,x);else printf(“%d”,-x);4.1.2 关系运算符和关系表达式关系运算符和关系表达式1.1.关系运算符及其优先次序

4、关系运算符及其优先次序关系运算符关系运算符含义含义大于大于=大于或等于大于或等于小于小于=小于或等于小于或等于=等于等于!=不等于不等于优先级相同(高)优先级相同(高)优先级相同(低)优先级相同(低)1.关系运算符及其优先次序关系运算符及其优先次序说明:说明:(1)前面)前面4种关系运算符(种关系运算符(,=)的优先级相同,)的优先级相同,后面后面2种关系运算符(种关系运算符(=,!=)的优先级相同,并且前)的优先级相同,并且前4种种优先级高于后优先级高于后2种。种。如:如:ab=c 等效于等效于(ab)=c(2)关系运算符的优先级)关系运算符的优先级低于低于低于低于算术运算符。算术运算符。如

5、:如:ca+b 等效于等效于 c(a+b)(3)关系运算符的优先级)关系运算符的优先级高于高于高于高于赋值运算符。赋值运算符。如:如:a=bc 等效于等效于 a=(bc)(4)用关系运算符比较的数据类型有)用关系运算符比较的数据类型有:整型、字符型和实:整型、字符型和实 型,字符串则不能用关系运算符作比较;比较整型或实型型,字符串则不能用关系运算符作比较;比较整型或实型 数据时,按照数值的大小进行比较;比较字符型数据时,数据时,按照数值的大小进行比较;比较字符型数据时,按照字符的按照字符的ASCII码进行比较。码进行比较。2.关系表达式关系表达式关系表达式是用关系运算符将两个比较的对象连接起来

6、的关系表达式是用关系运算符将两个比较的对象连接起来的式子。式子。这里比较的对象可以是最简单的常数、变量,还可这里比较的对象可以是最简单的常数、变量,还可以是一个表达式(算术表达式、关系表达式、逻辑表达式、以是一个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式或字符表达式)。赋值表达式或字符表达式)。如:如:a+bb+c 对象为算术表达式对象为算术表达式 (a=3)(b=5)对象为赋值表达式对象为赋值表达式 ab)(bc)对象为关系表达式对象为关系表达式表达式的结果是逻辑值表达式的结果是逻辑值“真真”或或“假假”,C 语言中没有逻语言中没有逻辑型数据,而用数值辑型数据,而用数值“1”和和

7、“0”分别代表分别代表“真真”和和“假假”。例如:关系表达式。例如:关系表达式“2=3”的结果为的结果为“假假”,即表达,即表达式的值为式的值为0。又如:表达式。又如:表达式“ab”的结果为的结果为“真真”,即表达式的值为,即表达式的值为1。例4.1 关系表达式运算结果的演示。#includevoid main()int a,b,c,d,f;a=3;b=2;c=1;d=ab;f=abc;printf(2210的值是:的值是:%dn,2210);printf(aA的值是:的值是:%dn,aA);printf(11=7的值是:的值是:%dn,11=7);printf(d的值是:的值是:%dn,d)

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

9、举权。这就要求岁以上才有选举权。这就要求同时满足两个条件:中国公民;大于同时满足两个条件:中国公民;大于18岁。岁。5门课都及格,才能升级。这就要求同时满足门课都及格,才能升级。这就要求同时满足5个条个条件。件。70岁以上的老人或岁以上的老人或10岁以下的儿童,入公园免票。岁以下的儿童,入公园免票。这就要求对入园者检查两个条件,看是否满足其一。这就要求对入园者检查两个条件,看是否满足其一。1.逻辑运算符及其优先次序逻辑运算符及其优先次序 C语言提供了语言提供了三种逻辑运算符三种逻辑运算符:(1)&:逻辑:逻辑“与与”(相当于其他语言中的(相当于其他语言中的AND)(2)|:逻辑:逻辑“或或”(

10、相当于其他语言中的(相当于其他语言中的OR)(3)!:逻辑:逻辑“非非”(相当于其他语言中的(相当于其他语言中的NOT)ab!a!ba&ba|b真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假逻辑运算的真值表逻辑运算的真值表说明:说明:(1)三者的优先级由高到低为:)三者的优先级由高到低为:!(非)(非)&(与)(与)|(或)(或)(2)多种运算符同时出现时,优先级由低到高为赋值)多种运算符同时出现时,优先级由低到高为赋值运算符运算符|(或)(或)&(与)(与)关系运算符关系运算符算术运算术运算符算符!(非)。如:(非)。如:(12+330)&(

11、a=b)也可以写成:也可以写成:12+3y)、逻辑表达)、逻辑表达 式(式(x&y)。)。注意表达式必须用圆括号注意表达式必须用圆括号 括起来。括起来。(2)如果语句由一条以上语句组成,必须)如果语句由一条以上语句组成,必须 用花括号把这一组语句括起来构成复合语用花括号把这一组语句括起来构成复合语 句。句。1.最基本的最基本的if语句语句 4.2 输入正方形的边长,求正方形的周长。输入正方形的边长,求正方形的周长。#includevoid main()float x;printf(请输入正方形的边长:请输入正方形的边长:);scanf(%f,&x);if(x0)x=x*4;printf(正方形

12、的周长是:正方形的周长是:%fn,x);1.最基本的最基本的if语句语句 运行结果:运行结果:请输入正方形的边长:5正方形的周长是:20.0000002.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为单条语

13、句时,必须用分号作为结束符,为单条语句时,必须用分号作为结束符,这是由于分号是这是由于分号是C语句中不可缺少的部分,这个分号是语句中不可缺少的部分,这个分号是if语句中语句中的内嵌语句所要求的。如果无此分号,则出现语法错误。的内嵌语句所要求的。如果无此分号,则出现语法错误。(3)在)在if和和else后面可以只含一个内嵌的操作语句后面可以只含一个内嵌的操作语句(如上例如上例),也,也可以有多个操作语句,此时用花括号可以有多个操作语句,此时用花括号“”将几个语句括起来将几个语句括起来成为一个复合语句。成为一个复合语句。2.if else语句语句例例4.3 完善例完善例4.2。输入正方形的边长,求

14、正方形的周长。输入正方形的边长,求正方形的周长。#includevoid main()float x;printf(请输入正方形的边长:请输入正方形的边长:);scanf(“%f”,&x);if(x0)x=x*4;printf(正方形的周长是:正方形的周长是:%fn,x);else printf(数据输入错误!数据输入错误!n);运行结果:运行结果:请输入正方形的边长:请输入正方形的边长:5 5正方形的周长是:正方形的周长是:20.00000020.000000请输入正方形的边长:请输入正方形的边长:-8-8数据输入错误!数据输入错误!2.if else语句语句3.多分支选择多分支选择 格式格

15、式1:if(if(表达式表达式表达式表达式1)1)if(if(表达式表达式表达式表达式2)2)语句语句语句语句1 1 else else 语句语句语句语句2 2 else else if(if(表达式表达式表达式表达式2)2)语句语句语句语句3 3 else else 语句语句语句语句4 4例例4.4:已知高斯平面上的点:已知高斯平面上的点(x,y),判断该点落在哪个象限。,判断该点落在哪个象限。#includevoid main()double x,y;printf(请输入点的平面坐标:请输入点的平面坐标:);scanf(%lf,%lf,&x,&y);if(x0)if(y0)printf(点

16、在第一象限点在第一象限n);else printf(点在第四象限点在第四象限n);else if(y0)printf(点在第二象限点在第二象限n);else printf(点在第三象限点在第三象限n);运行结果:请输入点的平面坐标:-100,100 点在第二象限格式格式格式格式2 2:if if(表达式(表达式(表达式(表达式1 1)语句语句语句语句1 1 else if else if(表达式(表达式(表达式(表达式2 2)语句语句语句语句2 2 else if else if(表达式(表达式(表达式(表达式n n)语句语句语句语句n n else else 语句语句语句语句n n1 13.

17、多分支选择多分支选择 例例4.5多分支选择多分支选择#includevoid main()double L;char XZ;int N;printf(请输入经度请输入经度L:);scanf(%lf,&L);printf(n请选择请选择3带或带或6带,带,3带请按带请按S,6带请按带请按Ln);scanf(%s,&XZ);if(XZ=S|XZ=s)N=(int)(L/3.+0.5);printf(您输入的经度在三度带中的带号为:您输入的经度在三度带中的带号为:%dn,N);else if(XZ=L|XZ=l)N=(int)(L+3)/6.+0.5);printf(您输入的经度在六度带中的带号为:

18、您输入的经度在六度带中的带号为:%dn,N);elseprintf(您选择了错误的字母!您选择了错误的字母!n);运行结果:运行结果:请输入经度请输入经度L:123.54请选择请选择3带或带或6带,带,3带请按带请按S,6带请按带请按LS您输入的经度在三度带中的带号为:您输入的经度在三度带中的带号为:41编编写写程程序序例例4.6:已知高斯平面上的点:已知高斯平面上的点(x,y)不在坐标轴上,判断该点不在坐标轴上,判断该点落在哪个象限。落在哪个象限。#includevoid main()double x,y;printf(请输入点的平面坐标:请输入点的平面坐标:);scanf(%lf,%lf,

19、&x,&y);if(x0&y0)printf(点在第一象限点在第一象限n);else if(x0)printf(点在第二象限点在第二象限n);else if(x0&yb)max=a;else max=b;可以用下面的条件运算符来处理:可以用下面的条件运算符来处理:max=(ab)?a:b其中其中“(ab)?a:b”是一个是一个“条件表达式条件表达式”条件运算符要求有条件运算符要求有3个操作对象,称三目(元)运算符,它是个操作对象,称三目(元)运算符,它是C语言中唯一的一个三目运算符。条件表达式的一般形式为语言中唯一的一个三目运算符。条件表达式的一般形式为 表达式表达式1?表达式?表达式2:表达

20、式:表达式3说明:说明:(1)条件运算符的执行顺序:先求解表达式)条件运算符的执行顺序:先求解表达式1,若为非,若为非0(真)(真)则求解表达式则求解表达式2,此时表达式,此时表达式2的值就作为整个表达式的值。若的值就作为整个表达式的值。若表达式表达式1的值为的值为0(假),则求解表达式(假),则求解表达式3,表达式,表达式3的值就是整的值就是整个表达式的值。个表达式的值。(2)条件运算符优先于赋值运算符,比关系运算符和算术运)条件运算符优先于赋值运算符,比关系运算符和算术运算符都低。算符都低。(3)条件运算符的结合方向为)条件运算符的结合方向为“自右至左自右至左”。如:如:ab?a:cd?c

21、:d 相当于相当于 ab?a:(cd?c:d)4.条件运算符条件运算符(4)条件表达式不能代替一般的)条件表达式不能代替一般的if 语句,只有在语句,只有在if语句中内嵌语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替替if语句。语句。(5)条件表达式中,表达式)条件表达式中,表达式1的类型可以与表达式的类型可以与表达式2和表达式和表达式3的类型不同。的类型不同。4.条件运算符条件运算符 例例4.7已知任意点的经度,计算出其所在中央子午线的经度已知任意点的经度,计算出其所在中央子午线的经度#includevoid main

22、()char XZSL;int L0,N;float L;printf(请进行三度带或六度带计算选择:三度带请输入请进行三度带或六度带计算选择:三度带请输入S,六度带请,六度带请输入输入L!n);scanf(%c,&XZSL);printf(请输入经度:请输入经度:);scanf(%f,&L);L0=(XZSL=L|XZSL=l)?(N=(int)(L+3)/6.+0.5)*6-3):(N=(int)(L/3.+0.5)*3);printf(所输入的经度所在的中央子午线经度为所输入的经度所在的中央子午线经度为%dn,L0);4.3 switch语句语句格式:格式:switch(switch(表

23、达式表达式表达式表达式)case case常量表达式常量表达式常量表达式常量表达式1:1:语句语句语句语句1;1;case case常量表达式常量表达式常量表达式常量表达式2:2:语句语句语句语句2;2;case case常量表达式常量表达式常量表达式常量表达式n:n:语句语句语句语句n;n;default:default:语句语句语句语句n n1 1 例如,要求按照考试成绩的等级输出百分制分数段,例如,要求按照考试成绩的等级输出百分制分数段,可以用可以用switch语句来实现:语句来实现:switch(grade)case A:printf(“85100n”);case B:printf(“

24、7084n”);case C:printf(“6069n”);case D:printf(“60n”);default :printf(“errorn”);4.3 switch语句语句说明:说明:(1)ANSI允许允许switch后面括号内的后面括号内的“表达式表达式”为任意为任意 类型。类型。(2)当表达式的值与某一个)当表达式的值与某一个case后面的常量表达式后面的常量表达式 的值相等时,就执行此的值相等时,就执行此case后面的语句,若所有的后面的语句,若所有的 case中的常量表达式的值都没有与表达式的值匹配中的常量表达式的值都没有与表达式的值匹配 的,就执行的,就执行default

25、后面的语句。后面的语句。(3)每一个)每一个case的常量表达式的值必须互不相同,的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个否则就会出现互相矛盾的现象(对表达式的同一个 值,有两种或多种执行方案)。值,有两种或多种执行方案)。(4)各个)各个case和和default的出现次序不影响执行结果。的出现次序不影响执行结果。例如,可以先出现例如,可以先出现“default:”,再出现,再出现“case D”4.3 switch语句语句(5)执行完一个)执行完一个case后面的语句后,流程控制转移后面的语句后,流程控制转移到下一个到下一个 case 继续执行。继续执行。

26、“case 常量表达式常量表达式”只是只是起语句标号作用起语句标号作用,并不是在该处进行条件判断。在,并不是在该处进行条件判断。在执行执行switch语句时,根据语句时,根据switch后面表达式的值找到后面表达式的值找到匹配的入口标号匹配的入口标号,就从此标号开始执行下去,不再,就从此标号开始执行下去,不再进行判断。例如,上面的例子中,若进行判断。例如,上面的例子中,若grade的值等于的值等于A,则将连续输出:,则将连续输出:851007084606969error4.3 switch语句语句因此,应该在执行一个因此,应该在执行一个case分支后,使流程跳出分支后,使流程跳出switch结

27、构,结构,即终止即终止switch语句的执行,可以用一个语句的执行,可以用一个break语句达到此目的。语句达到此目的。将上面的将上面的switch结构改写如下:结构改写如下:switch(grade)case A:printf(“85100n”);break;case B:printf(“7084n”);break;case C:printf(“6069n”);break;case D:printf(“60n”);break;case D:printf(“60n”);break;default :printf(“errorn”);grade的值为的值为A、B或或C时都执行同一组语句。时都执行

28、同一组语句。4.3 switch语句语句例例4.7:根据输入的数据选择椭球。:根据输入的数据选择椭球。#includevoid main()int num;double a,b;printf(请选择椭球:请选择椭球:n1.克拉索夫斯基椭球克拉索夫斯基椭球;2.1975年国际椭球体年国际椭球体;3.WGS-84椭球体椭球体;n);printf(请选择数字后回车:请选择数字后回车:);scanf(%d,&num);switch(num)case 1:/*克拉索夫斯基椭球体克拉索夫斯基椭球体*/a=6378245.0000000000;b=6356863.0187730473;printf(您选择的是克拉索夫斯基椭球您选择的是克拉索夫斯基椭球!n);break;case 2:/*1975年国际椭球体年国际椭球体*/a=6378140.0000000000;b=6356755.2881575287;printf(您选择的是您选择的是1975年国际椭球体年国际椭球体!n);break;case 3:/*WGS-84椭球体椭球体*/a=6378137.0000000000;b=6356752.3142;printf(您选择的是您选择的是WGS-84椭球体椭球体!n);break;default:printf(您选择了错误的数字您选择了错误的数字n);

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁