第04章-选择结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章
选择结构程序设计
选择结构程序设计,要解决两个问题: (1)选择条件如何表示:关系/逻辑表达式 (2)实现选择结构语句: if、switch语句 教学目的: 掌握关系和逻辑运算,if语句、switch语句,选 择结构程序设计。
2014-5-5
1
教学内容: 4.1 关系运算及其表达式 4.2 逻辑运算及其表达式 4.3* if语句
2014-5-5 5
假设num1=3,num2=4,num3=5,则: (1) num1 > num2 := 0
(2) (num1 > num2) != num3: = 1
(3) num1 < num2 < num3 := 1 思考:任意改变num1或num2的值,会影响整个表 达式的值吗?为什么? x∈(1,100):1<x<100 ? [返回]
2014-5-5
10
3.非逻辑值运算对象的真/假判定──0和非0 逻辑运算的对象要求是逻辑值,而C语言中没有 逻辑型数据。 C语言约定:
0,判定为“逻辑假”
非逻辑值运算对象= 非0,判定为“逻辑真”
2014-5-5
11
假设num=12,则: (1)!num: =0 (2) (num >= 1) && (num <= 31) :=1 (3) num || (num > 31) := 1。
2014-5-5
13
②对于 逻辑或 运算,如果 第 1 个对象 被判定为 “逻辑真”,系统不再计算第2个对象。 思考:假设n1、n2、n3、n4、x、y的值分别为1、 2 、 3 、 4 、 1 、 1 ,求解表达式“ (x = n1 > n2) && (y = n3 > n4)”后,x、y的值=?
2014-5-5
3
4.1.1 关系运算符及其优先次序 1.关系运算符 <(小于), <=(小于等于), >(大于), >=(大于等于) ==(等于), !=(不等于)
不是 “= ”
2.与其它种类运算符的优先关系
算术运算符 → 关系运算符 → 赋值运算符 思考:在混合运算时,如何增强程序可读性(明 确运算的优先关系)?
2014-5-5
14
答案: x=0,y=1 分析: (1) n1 > n2: = 0 (2) x = n1 > n2 :x = 0
(3) (x = n1 > n2) := 0
(4) &&:(y = n3 > n4) 不再计算,y保持原值,即 y=1。 [返回]
2014-5-5
15
4.3*
if语句
4.4* switch语句
4.5 选择结构程序设计
本章要点
本章作业与上机实践
2014-5-5 2
4.1
关系运算及其表达式
关系运算——将两个数据进行比较,判定是否符 合给定的关系。 例如,“a > b”中的“>”,表示一个大于关系: ●如果a=5、b=3,则大于关系成立; ●如果a=2、b=3,则大于关系不成立。
/* max = max{num1, num2 } */
if (num3 > max) max = num3; printf("The three numbers are:%d,%d,%d\n",num1,num2,num3); printf("max=%d\n",max); getch(); }
2014-5-5
4
4.1.2 关系表达式 1.概念——用关系运算符,将两个表达式连接 起来的式子。 例如:a > b,'a' >= 'b' ,a + b > c - d 2.关系表达式的值——逻辑真 / 逻辑假 ●如果关系成立,则表达式的值为逻辑真; ●如果关系不成立,则表达式的值为逻辑假。
C语言没有逻辑型数据,用 整数1 表示 “逻辑 真”,用整数0表示“逻辑假”。
运算口诀:同时为假才为假,否则为真。
2014-5-5
8
(3) ! :当运算对象的值为“逻辑真”时,结果 为“逻辑假”;当运算对象的值为“逻辑假”时, 结果为“逻辑真”。 运算口诀:取反。
2014-5-5
9
4.2.2 逻辑表达式 1. 概念 —— 用 逻辑运算符 ,将若干表达式连接 起来的式子。 例如,逻辑表达式(year%4= =0) && (year%100!=0) || (year%400= =0),判断year是否闰年。 2.逻辑表达式的值——逻辑真 /逻辑假
2014-5-5
6
4.2
Байду номын сангаас
逻辑运算及其表达式
关系表达式只能描述单一条件。如果需要同时 描述多个条件时,就要借助于逻辑表达式。 4.2.1 逻辑运算及其优先次序 1.逻辑运算符 &&:逻辑与(相当于“同时”) || :逻辑或(相当于“或者”) ! :逻辑非(相当于“否定”) 例如:(x>=0) && (x<10) ,(x<1) || (x>5) ,! (x= =0),
(year%4= =0) && (year%100!=0) | | (year%400= =0)
2014-5-5 7
2. 运算规则 (1)&& :当且仅当两个运算对象的值都为“逻 辑真”时,结果为“逻辑真”,否则为“逻辑假”。 运算口诀:同时为真才为真,否则为假。 (2) || :当且仅当两个运算对象的值都为“逻辑 假”时,结果为“逻辑假”,否则为“逻辑真”。
[案例4.1] 输入3个整数num1、num2、num3, 求最大值。 算法设计要点: (1) 任取一个数预置为max(最大值); (2) 用其余的数num依次与max比较:如果num > max,则max ← num 。 比较完所有的数后,max中的数就是最大值。
2014-5-5
16
#include “stdio.h” #include “conio.h” void main() {int num1, num2, num3, max; printf(“Please input three numbers:”); scanf(“%d,%d,%d”, &num1, &num2, &num3); max = num1; if (num2 > max) max = num2;
2014-5-5
12
4.说明 (1)运算对象的数据类型:除整型外,也可以是实 型、字符型等其它任何类型数据。 (2)子表达式计算:只有在必须计算下一个子表达 式才能求解时,才计算;否则,不再计算。
换句话说:
①对 于 逻 辑 与 运算 , 如果 第 1 个 对 象 被判定 为 “逻辑假”,系统不再计算第2个对象(因为无论真假,都 不影响整个表达式的结果)。
选择结构程序设计
选择结构程序设计,要解决两个问题: (1)选择条件如何表示:关系/逻辑表达式 (2)实现选择结构语句: if、switch语句 教学目的: 掌握关系和逻辑运算,if语句、switch语句,选 择结构程序设计。
2014-5-5
1
教学内容: 4.1 关系运算及其表达式 4.2 逻辑运算及其表达式 4.3* if语句
2014-5-5 5
假设num1=3,num2=4,num3=5,则: (1) num1 > num2 := 0
(2) (num1 > num2) != num3: = 1
(3) num1 < num2 < num3 := 1 思考:任意改变num1或num2的值,会影响整个表 达式的值吗?为什么? x∈(1,100):1<x<100 ? [返回]
2014-5-5
10
3.非逻辑值运算对象的真/假判定──0和非0 逻辑运算的对象要求是逻辑值,而C语言中没有 逻辑型数据。 C语言约定:
0,判定为“逻辑假”
非逻辑值运算对象= 非0,判定为“逻辑真”
2014-5-5
11
假设num=12,则: (1)!num: =0 (2) (num >= 1) && (num <= 31) :=1 (3) num || (num > 31) := 1。
2014-5-5
13
②对于 逻辑或 运算,如果 第 1 个对象 被判定为 “逻辑真”,系统不再计算第2个对象。 思考:假设n1、n2、n3、n4、x、y的值分别为1、 2 、 3 、 4 、 1 、 1 ,求解表达式“ (x = n1 > n2) && (y = n3 > n4)”后,x、y的值=?
2014-5-5
3
4.1.1 关系运算符及其优先次序 1.关系运算符 <(小于), <=(小于等于), >(大于), >=(大于等于) ==(等于), !=(不等于)
不是 “= ”
2.与其它种类运算符的优先关系
算术运算符 → 关系运算符 → 赋值运算符 思考:在混合运算时,如何增强程序可读性(明 确运算的优先关系)?
2014-5-5
14
答案: x=0,y=1 分析: (1) n1 > n2: = 0 (2) x = n1 > n2 :x = 0
(3) (x = n1 > n2) := 0
(4) &&:(y = n3 > n4) 不再计算,y保持原值,即 y=1。 [返回]
2014-5-5
15
4.3*
if语句
4.4* switch语句
4.5 选择结构程序设计
本章要点
本章作业与上机实践
2014-5-5 2
4.1
关系运算及其表达式
关系运算——将两个数据进行比较,判定是否符 合给定的关系。 例如,“a > b”中的“>”,表示一个大于关系: ●如果a=5、b=3,则大于关系成立; ●如果a=2、b=3,则大于关系不成立。
/* max = max{num1, num2 } */
if (num3 > max) max = num3; printf("The three numbers are:%d,%d,%d\n",num1,num2,num3); printf("max=%d\n",max); getch(); }
2014-5-5
4
4.1.2 关系表达式 1.概念——用关系运算符,将两个表达式连接 起来的式子。 例如:a > b,'a' >= 'b' ,a + b > c - d 2.关系表达式的值——逻辑真 / 逻辑假 ●如果关系成立,则表达式的值为逻辑真; ●如果关系不成立,则表达式的值为逻辑假。
C语言没有逻辑型数据,用 整数1 表示 “逻辑 真”,用整数0表示“逻辑假”。
运算口诀:同时为假才为假,否则为真。
2014-5-5
8
(3) ! :当运算对象的值为“逻辑真”时,结果 为“逻辑假”;当运算对象的值为“逻辑假”时, 结果为“逻辑真”。 运算口诀:取反。
2014-5-5
9
4.2.2 逻辑表达式 1. 概念 —— 用 逻辑运算符 ,将若干表达式连接 起来的式子。 例如,逻辑表达式(year%4= =0) && (year%100!=0) || (year%400= =0),判断year是否闰年。 2.逻辑表达式的值——逻辑真 /逻辑假
2014-5-5
6
4.2
Байду номын сангаас
逻辑运算及其表达式
关系表达式只能描述单一条件。如果需要同时 描述多个条件时,就要借助于逻辑表达式。 4.2.1 逻辑运算及其优先次序 1.逻辑运算符 &&:逻辑与(相当于“同时”) || :逻辑或(相当于“或者”) ! :逻辑非(相当于“否定”) 例如:(x>=0) && (x<10) ,(x<1) || (x>5) ,! (x= =0),
(year%4= =0) && (year%100!=0) | | (year%400= =0)
2014-5-5 7
2. 运算规则 (1)&& :当且仅当两个运算对象的值都为“逻 辑真”时,结果为“逻辑真”,否则为“逻辑假”。 运算口诀:同时为真才为真,否则为假。 (2) || :当且仅当两个运算对象的值都为“逻辑 假”时,结果为“逻辑假”,否则为“逻辑真”。
[案例4.1] 输入3个整数num1、num2、num3, 求最大值。 算法设计要点: (1) 任取一个数预置为max(最大值); (2) 用其余的数num依次与max比较:如果num > max,则max ← num 。 比较完所有的数后,max中的数就是最大值。
2014-5-5
16
#include “stdio.h” #include “conio.h” void main() {int num1, num2, num3, max; printf(“Please input three numbers:”); scanf(“%d,%d,%d”, &num1, &num2, &num3); max = num1; if (num2 > max) max = num2;
2014-5-5
12
4.说明 (1)运算对象的数据类型:除整型外,也可以是实 型、字符型等其它任何类型数据。 (2)子表达式计算:只有在必须计算下一个子表达 式才能求解时,才计算;否则,不再计算。
换句话说:
①对 于 逻 辑 与 运算 , 如果 第 1 个 对 象 被判定 为 “逻辑假”,系统不再计算第2个对象(因为无论真假,都 不影响整个表达式的结果)。