第04章 选择结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在程序中,用选择结构来检查所指定的条件是否满足,并根 据判断的结果决定执行哪种操作(从给定的两组操作中选择 其一)。 如: If (x>0) printf(“%d”,x); else printf(“%d”,-x);
4.1.2 关系运算符和关系表达式
1.关系运算符及其优先次序
关系运算符 含义
> >=
2.if else语句
例4.3 完善例4.2。输入正方形的边长,求正方形的周长。
#include<stdio.h> 运行结果: void main() 请输入正方形的边长:5↙ { float x; 正方形的周长是:20.000000 printf("请输入正方形的边长:"); 请输入正方形的边长:-8↙ scanf(“%f”,&x); 数据输入错误! if(x>0) { x=x*4; printf("正方形的周长是:%f\n",x); } else printf("数据输入错误!\n"); }
说明:由于用了1和0代表真和假,而1和0又都是数值, 所以在 C 程序中还允许把关系运算的结果(即1和0) 看做和其它数值型数据一样,可以参加数值运算或把 它赋值给数值型变量。
4.1.3 逻辑运算符和逻辑表达式
有时候需要判断的条件不是一个简单的条件,而是 一个复合的条件,如: 是中国公民,且在18岁以上才有选举权。这就要求 同时满足两个条件:中国公民;大于18岁。 5门课都及格,才能升级。这就要求同时满足5个条 件。 70岁以上的老人或10岁以下的儿童,入公园免票。 这就要求对入园者检查两个条件,看是否满足其一。
3. 多分支选择
格式1: if (表达式1) if(表达式2) 语句1 else 语句2 else if(表达式2) 语句3 else 语句4
例4.4:已知高斯平面上的点(x,y),判断该点落在哪个象 运行结果: 限。
请输入点的平面坐标:-100,100↙ #include<stdio.h> 点在第二象限 void main() { double x,y; printf("请输入点的平面坐标:"); scanf("%lf,%lf",&x,&y); if (x>0) if(y>0) printf("点在第一象限\n"); else printf("点在第四象限\n"); else if(y>0) printf("点在第二象限\n"); else printf("点在第三象限\n"); }
2.if else语句
if else语句的一般形式: if (表达式) 语句1; else 语句2;
2.if else语句
例如:
if (x>y) max=x; else max=y; 说明: (1)if语句和else语句属于同一个if语句。else子句不能作为语 句单独使用,它必须是if语句的一部分,与if配对使用。 (2)当语句1和语句2为单条语句时,必须用分号作为结束符, 这是由于分号是C语句中不可缺少的部分,这个分号是if语句中 的内嵌语句所要求的。如果无此分号,则出现语法错误。 (3)在if和else后面可以只含一个内嵌的操作语句(如上例),也 可以有多个操作语句,此时用花括号“{}”将几个语句括起来成 为一个复合语句。
2. 关系表达式
关系表达式是用关系运算符将两个比较的对象连接起来的 式子。这里比较的对象可以是最简单的常数、变量,还可 以是一个表达式(算术表达式、关系表达式、逻辑表达式 、赋值表达式或字符表达式)。 如:a+b>b+c 对象为算术表达式 (a=3)>(b=5) 对象为赋值表达式 ‟a‟<„z‟ 对象为字符表达式 (a>b)>(b<c) 对象为关系表达式 表达式的结果是逻辑值“真”或“假”,C 语言中没有逻 辑型数据,而用数值“1”和“0”分别代表“真”和“假” 。例如:关系表达式“2==3”的结果为“假”,即表达式的 值为0。又如:表达式“’a‟<‟b‟” 的结果为“真”,即表 达式的值为1。
1.最基本的if语句
4.2 输入正方形的边长,求正方形的周长。 #include<stdio.h> 运行结果: void main( ) 请输入正方形的边长:5↙ { 正方形的周长是:20.000000 float x; printf("请输入正方形的边长:"); scanf("%f",&x); if (x>0) { x=x*4; printf("正方形的周长是:%f\n",x); } }
如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 如果遇到红灯,要停车等待;(需要判断是否红灯)
如果a>b,输出a
(需要判断a是否大于b)
4.1.1 条件判断的含义
条件判断的结果是一个逻辑值:“是”或“否”, 在计算机语言中用“真”和“假”来表示“是”和 “否”。如果,判断 “a>b” 条件是否满足。当a>b 时,就称条件“a>b” 为 “真” ,如果a≤b,则不满 足“a>b”条件,就称此时条件“a>b”为假。
4.2 用if语句实现选择结构
1.最基本的if语句
If语句的一般形式: if (表达式) 语句
例如: if (x>y) printf("%d",x);
真 语句
表达 式

1.最基本的if语句
说明: (1)if后面的括号中的“表达式”指定判断条 件,可以是关系表达式(x>y)、逻辑表达 式( x && y )。注意表达式必须用圆括号 括起来。 (2)如果语句由一条以上语句组成,必须 用花括号把这一组语句括起来构成复合语 句。
例4.1 关系表达式运算结果的演示。
#include<stdio.h> void main( ) { int a,b,c,d,f; a=3; b=2; c=1; d=a>b; f=a>b>c; printf("22>10的值是:%d\n",22>10); printf("a<A的值是:%d\n",'a'<'A'); printf("11<=7的值是:%d\n",11<=7); printf("d的值是:%d\n",d); printf("f的值是:%d\n",f); }
第4章选择结构程序设计
辽宁科技大学资源与土木工程学院测绘教研室
主 要 内 容
4.1 条件判断 4.2 用if语句实现选择结构 4.3 用switch语句实现多分支选 择结构 4.4 程序综合举例
4.1 条件判断
选择结构的作用是:检查人们指定的条件是否满 足,决定在事先给定的两种操作中选定执行其中 一种操作。要实现选择结构,关键是判断给定的 条件是否满足。
< <=
大于 大于或等于
小于 小于或等于 优先级相同(高)
==
!=
等于
不等于
优先级相同(低)
1.关系运算符及其优先次序
说明: (1)前面4种关系运算符(<,<=,>,>=)的优先级相同, 后面2种关系运算符(= =,!=)的优先级相同,并且前4种 优先级高于后2种。 如:a>b= =c 等效于 (a>b)= =c (2)关系运算符的优先级低于算术运算符。 如:c>a+b 等效于 c>(a+b) (3)关系运算符的优先级高于赋值运算符。 如:a=b>c 等效于 a=(b>c) (4)用关系运算符比较的数据类型有 :整型、字符型和实 型,字符串则不能用关系运算符作比较;比较整型或实型 数据时,按照数值的大小进行比较;比较字符型数据时, 按照字符的ASCII码进行比较。
1.逻辑运算符及其优先次序
C语言提供了三种逻辑运算符: (1)&& :逻辑“与”(相当于其他语言中的AN D) (2)|| :逻辑“或” (相当于其他语言中的OR) (3)! :逻辑“非” (相当于其他语言中的NOT)
逻辑运算的真值表
a 真 真 假 假
b 真 假 真 假
!a 假 假 真 真
wenku.baidu.com
!b 假 真 假 真
4.条件运算符
(4)条件表达式不能代替一般的if 语句,只有在if语句中内嵌 的语句为赋值语句(且两个分支都给同一变量赋值)时才能代 替if语句。 (5)条件表达式中,表达式1的类型可以与表达式2和表达式3 的类型不同。
例4.6:已知高斯平面上的点(x,y)不在坐标轴上,判断该 运行结果: 点落在哪个象限。 请输入点的平面坐标:-100,100↙
#include<stdio.h> 点在第二象限 void main() { double x,y; printf("请输入点的平面坐标:"); scanf("%lf,%lf",&x,&y); if (x>0 && y>0) printf("点在第一象限\n"); else if(x<0 && y>0) printf("点在第二象限\n"); else if(x<0 && y<0) printf("点在第三象限\n"); else printf("点在第四象限\n"); }
4.条件运算符
条件运算符要求有3个操作对象,称三目(元)运算符,它是 C语言中唯一的一个三目运算符。条件表达式的一般形式为 表达式1?表达式2:表达式3 说明: (1)条件运算符的执行顺序:先求解表达式1,若为非0(真) 则求解表达式2,此时表达式2的值就作为整个表达式的值。若 表达式1的值为0(假),则求解表达式3,表达式3的值就是整 个表达式的值。 (2)条件运算符优先于赋值运算符,比关系运算符和算术运 算符都低。 (3)条件运算符的结合方向为“自右至左”。 如:a>b?a:c>d?c:d 相当于 a>b?a:(c>d?c:d)
a&&b 真 假 假 假
a||b 真 真 真 假
1.逻辑运算符及其优先次序
说明: (1)三者的优先级由高到低为: !(非)→&&(与) → ||(或) (2)多种运算符同时出现时,优先级由低到高为赋值 运算符→||(或)→&&(与)→关系运算符→算术运 算符→!(非)。如:(12+3<30)&&(a==b) 也可以写成 :12+3<30&&a==b。 (3)“!”是“单目运算”,即只要求有一个运算对象 (操作数),而“&&”和“||”是双目运算符,它们要 求有两个运算对象。
3. 多分支选择
格式2: if(表达式1) 语句1 else if(表达式2) 语句2 ┆ else if(表达式n) 语句n else 语句n+1
例4.5多分支选择
运行结果:
#include<stdio.h> 请输入经度L:123.54 void main() 请选择3°带或6°带,3°带请按S,6°带请按L { double L; S char XZ; int N; 您输入的经度在三度带中的带号为:41 printf("请输入经度L:"); scanf("%lf",&L); printf("\n请选择3°带或6°带,3°带请按S,6°带请按L\n"); scanf("%s",&XZ); 编 if(XZ=='S'||XZ=='s') 写 { 程 N=(int)(L/3.+0.5); printf("您输入的经度在三度带中的带号为:%d\n",N); 序 } else if(XZ=='L'||XZ=='l') { N=(int)((L+3)/6.+0.5); printf("您输入的经度在六度带中的带号为:%d\n",N); } else printf("您选择了错误的字母!!!\n"); }
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的值为1
4.条件运算符
若 if 语句中,在表达式为“真”和“假”时,且都只执行一个 赋值语句给同一个变量赋值时,可以用简单的条件运算符 来处理。 例如,若有以下if语句: if(a>b) max=a; else max=b; 可以用下面的条件运算符来处理: max = (a>b)?a:b 其中“ (a>b)?a:b”是一个“条件表达式”
相关文档
最新文档