C语言-程序的控制结构-选择控制结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
carrying out a procedure or solving a problem, usually with the requirement that the procedure terminate at some point
2020/5/7
11/79
【例】计算两整数的最大值
Input
• num1 • num2
逻辑运算符与表达式 ( Logical Operators )
ch是大写英文字母
(ch >= 'A') && (ch <= 'Z')
判断某一年year是否是闰年的条件是满足下列二者之一 – 能被4整除,但不能被100整除; – 能被400整除;
year%4==0 && year%100!=0 || year%400==0 优先级: % == (!=) && ||
Sstep a
true
condition
false
Sstep m Sstep n
Sstteepp bx
22/79
if Statement
The structure is sim表i达lar式to非si0n为gl真e selection (flowchart)
Syntax: if (expression) statement;
a2 b5 c 15 d 17
2020/5/7
18/79
复合表达式(Compound Expression) 的值
Example:
(a >= 1) && (b++ == 5)
a0
( 0 >= 1 ) && ( b++ == 5 ) 0 && ( b++ == 5 ) 0
b5 c 15 d 17
尽量使用最少的操作数来确定表达式的值,这就 意味着表达式中的某些操作数可能不会被计算
2020/5/7
19/79
复合表达式(Compound Expression) 的值
Example:
(c >= ( b * 3 ) ) || (a == 3)
( c >= ( 5 * 3 ) ) || ( a == 3) ( 15 >= 15 ) || ( a == 3) 1 || ( a == 3 )
8. End
2020/5/7
4/79
‘Divide and Conquer’ Strategy
(分治策略)
Problem: 准备早餐( Prepare a Breakfast)
1. Start 2. 准备早餐 3. End
2020/5/7
5/79
‘Divide and Conquer’ Strategy
m_ ax = 20 _
2020/5/7
20>15?
a 2?0 b 1?5
max 12?50
25/79
【例】计算两整数的最大值
#include <stdio.h> void main() {
int a, b, max; printf(“Input a,b: “); scanf(“%d,%d”, &a, &b); if (a > b) max = a; if (a <= b) max = b; printf(“max = %d\n”, max);
}
Input a,b: 2_0 15
m_ ax = 20 _
2020/5/7
26/79
用于双分支控制的条件语句 ( Double Selection)
Y
N
条 件P
A
B
2020/5/7
27/79
用于双分支控制的条件语句( Double Selection)
Pseudocode Structure
Step a if <condition is true> start
Examples of Expression
6<9 5 <= 5 2>6 9 >= 5 7 == 5 6 != 5
Value
1 (true) 1 (true) 0 (false) 1 (true) 0 (false) 1 (true)
14/79
逻辑运算符与表达式 ( Logical Operators ) *
Step m Step n end_if else start Step x Step y end_else Step z
2020/5/7
Step a
true
condition
false
Step x Step y
Step z
Step m Step n
28/79
if - else Statement
– Be able to develop a program containing selection and
loop control structure
2020/5/7
2/79
选择结构——学习内容
算法的描述方法 用于单分支控制的if语句 用于双分支控制的if-else语句 用于多路选择的switch语句 break语句在switch语句中的作用 关系运算符 条件运算符 逻辑运算符 程序测试
Example:
!(c>a)
! ( 15 > 2 ) !(1) 0
a2 b5 c 15 d 17
2020/5/7
17/79
复合表达式(Compound Expression) 的值
Example:
(a >= 1) && (b == 5)
( 2 >= 1 ) && ( b == 5 ) 1 && ( b == 5 ) 1 && ( 5 == 5 ) 1 && 1 1
The structure is similar to double selection (flowchart)
Syntax: if (expression) statement1; else statement2;
2020/5/7
or
if (expression) {
statement1; statement3; }
((year%4==0) && (year%100!=0)) || (year%400==0)
2020/5/7
16/79
复合表达式(Compound Expression) 的值
Arithmetic, relational and mantic operators can be integrated/combined in one expression
a2 b5
1
c 15
d 17
2020/5/7
20/79
复合表达式(Compound Expression) 的值
Example:
! ( ( a < b ) || ( c > d ) )
! ( ( 2 < 5 ) || ( c > d ) ) ! ( 1 || ( c > d ) ) ! 1 0
2020/5/7
3/79
生活与计算机中的问题求解 (Problem Solving Process)
生活中的问题求解:
Problem: 烤蛋糕(Baking a Cake)
How to solve:
1. Start 2. 将烤箱预热 3. 准备一个盘子 4. 在盘子上抹上一些黄油 5. 将面粉、鸡蛋、糖和香精混合在一起搅拌均匀 6. 将搅拌好的面粉团放在盘子上 7. 将盘子放到烤箱内
or if (expression) { statement1; statement2; }
2020/5/7
复合语句 compound statement 被当作一条语句看待
23/79
if Statement
The structure is similar to single selection (flowchart)
2020/5/7
10/79
算法的概念及其描述方法
面向对象程序 = 对象 + 消息
面向过程的程序 = 数据结构 + 算法
计算机中的算法( Algorithm )
–为解决一个具体问题而采取的确定的有限的操作步
骤,仅指计算机能执行的算法
– A specific and step-by-step set of instructions for
Process
????
Output
max
2020/5/7
12/79
选择结构(分支结构) (Selection Structure)
Single
Multiple
Selection Double Selection Selection
if
2020/5/7
if – else - if if - else
(分治策略)
1. Start 2. 准备早餐
2.1 准备一个金枪鱼三明治 2.2 准备一些薯条 2.3 冲一杯咖啡 3. End
2020/5/7
6/79
‘Divide and Conquer’ Strategy
(分治策略)
1. Start 2.准备早餐
2.1 准备一个金枪鱼三明治 2.1.1 拿来两片面包 2.1.2 准备一些金枪鱼酱
【例】计算两整数的最大值
void main() {
int a, b, max; printf(“Input a,b: “); scanf(“%d,%d”, &a, &b); max = b; if (a > b)
max = a; printf(“max = %d\n”, max); }
Input a,b: 2_0 15
Syntax: if (expression) statement;
or if (expression) { statement1; statement2; }
2020/5/7
Don’t forget the parentheses !!
Don’t forget the braces !!
24/79
第4章 程序的控制结构
本章学习内容
算法的描述方法 – 常用算法(累加累乘、统计、递推迭代、穷举) 选择结构及相关控制语句 循环结构及相关控制语句 结构化程序设计的基本思想
Skill: – Map problem to solution in flowchart and pseudocode
forms
2.3 冲一杯咖啡
3. End
2020/5/7
8/79
‘Divide and Conquer’ Strategy
(分治策略)
1. Start
2.准备早餐
2.1 准备一个金枪鱼三明治
2.1.1 拿来两片面包
2.1.2 准备一些金枪鱼酱
2.2 准备一些薯片
2.2.1 将土豆切成片
2.2.2 油炸这些土豆片
a2 b5 c 15 d 17
2020/5/7
21/79
用于单分支控制的条件语句 (Single Selection)
Pseudocode Structure
step a if <condition is true> start
step m step n end_if step b
2020/5/7
else
{ statement2; statement4;
} 29/79
【例】计算两整数的最大值
Start Input a and b
max a
Yes
No
a > b?
max b
Output max
End
Flowchart: Calculate the Maximum
2020/5/7
30/79
【例】计算两整数的最大值
2.2 准备一些薯片 2.3 冲一杯咖啡
3. End
2020/5/7
7/79
‘Divide and Conquer’ Strategy
(分治策略)
1. Start 2.准备早餐
2.1 准备一个金枪鱼三明治 2.1.1 拿来两片面包 2.1.2 准备一些金枪鱼酱
2.2 准备一些薯片 2.2.1 将土豆切成片 2.2.2 油炸这些土豆片
2.3 冲一杯咖啡
2.3.1 烧些开水放入杯中 2.3.2 在水杯中加入一些咖啡和糖
2020/5/7 3. End
9/79
Something to ponder …
What is the connection between these real life processes and algorithm?
Symbol &&
|| !
a
0 0 1 1
2020/5/7
Description 与(AND)当且仅当两者都为真,则结果为真 或(OR) 只要两者中有一个为真,结果就为真 非(NOT)
b a && b a || b !a
0
0
0
1
1
0
1
1
0
0
1
0
1
1
1
0
百度文库
高 ! && || 低
!b
1 0 1 0
15/79
13/79
关系运算符与关系表达式√
Relational Operation
Description
<
Less than
<=
Less than or equal to
>
Greater than
>=
Greater than or equal to
==
Equal to
!=
Not equal to
2020/5/7
2020/5/7
11/79
【例】计算两整数的最大值
Input
• num1 • num2
逻辑运算符与表达式 ( Logical Operators )
ch是大写英文字母
(ch >= 'A') && (ch <= 'Z')
判断某一年year是否是闰年的条件是满足下列二者之一 – 能被4整除,但不能被100整除; – 能被400整除;
year%4==0 && year%100!=0 || year%400==0 优先级: % == (!=) && ||
Sstep a
true
condition
false
Sstep m Sstep n
Sstteepp bx
22/79
if Statement
The structure is sim表i达lar式to非si0n为gl真e selection (flowchart)
Syntax: if (expression) statement;
a2 b5 c 15 d 17
2020/5/7
18/79
复合表达式(Compound Expression) 的值
Example:
(a >= 1) && (b++ == 5)
a0
( 0 >= 1 ) && ( b++ == 5 ) 0 && ( b++ == 5 ) 0
b5 c 15 d 17
尽量使用最少的操作数来确定表达式的值,这就 意味着表达式中的某些操作数可能不会被计算
2020/5/7
19/79
复合表达式(Compound Expression) 的值
Example:
(c >= ( b * 3 ) ) || (a == 3)
( c >= ( 5 * 3 ) ) || ( a == 3) ( 15 >= 15 ) || ( a == 3) 1 || ( a == 3 )
8. End
2020/5/7
4/79
‘Divide and Conquer’ Strategy
(分治策略)
Problem: 准备早餐( Prepare a Breakfast)
1. Start 2. 准备早餐 3. End
2020/5/7
5/79
‘Divide and Conquer’ Strategy
m_ ax = 20 _
2020/5/7
20>15?
a 2?0 b 1?5
max 12?50
25/79
【例】计算两整数的最大值
#include <stdio.h> void main() {
int a, b, max; printf(“Input a,b: “); scanf(“%d,%d”, &a, &b); if (a > b) max = a; if (a <= b) max = b; printf(“max = %d\n”, max);
}
Input a,b: 2_0 15
m_ ax = 20 _
2020/5/7
26/79
用于双分支控制的条件语句 ( Double Selection)
Y
N
条 件P
A
B
2020/5/7
27/79
用于双分支控制的条件语句( Double Selection)
Pseudocode Structure
Step a if <condition is true> start
Examples of Expression
6<9 5 <= 5 2>6 9 >= 5 7 == 5 6 != 5
Value
1 (true) 1 (true) 0 (false) 1 (true) 0 (false) 1 (true)
14/79
逻辑运算符与表达式 ( Logical Operators ) *
Step m Step n end_if else start Step x Step y end_else Step z
2020/5/7
Step a
true
condition
false
Step x Step y
Step z
Step m Step n
28/79
if - else Statement
– Be able to develop a program containing selection and
loop control structure
2020/5/7
2/79
选择结构——学习内容
算法的描述方法 用于单分支控制的if语句 用于双分支控制的if-else语句 用于多路选择的switch语句 break语句在switch语句中的作用 关系运算符 条件运算符 逻辑运算符 程序测试
Example:
!(c>a)
! ( 15 > 2 ) !(1) 0
a2 b5 c 15 d 17
2020/5/7
17/79
复合表达式(Compound Expression) 的值
Example:
(a >= 1) && (b == 5)
( 2 >= 1 ) && ( b == 5 ) 1 && ( b == 5 ) 1 && ( 5 == 5 ) 1 && 1 1
The structure is similar to double selection (flowchart)
Syntax: if (expression) statement1; else statement2;
2020/5/7
or
if (expression) {
statement1; statement3; }
((year%4==0) && (year%100!=0)) || (year%400==0)
2020/5/7
16/79
复合表达式(Compound Expression) 的值
Arithmetic, relational and mantic operators can be integrated/combined in one expression
a2 b5
1
c 15
d 17
2020/5/7
20/79
复合表达式(Compound Expression) 的值
Example:
! ( ( a < b ) || ( c > d ) )
! ( ( 2 < 5 ) || ( c > d ) ) ! ( 1 || ( c > d ) ) ! 1 0
2020/5/7
3/79
生活与计算机中的问题求解 (Problem Solving Process)
生活中的问题求解:
Problem: 烤蛋糕(Baking a Cake)
How to solve:
1. Start 2. 将烤箱预热 3. 准备一个盘子 4. 在盘子上抹上一些黄油 5. 将面粉、鸡蛋、糖和香精混合在一起搅拌均匀 6. 将搅拌好的面粉团放在盘子上 7. 将盘子放到烤箱内
or if (expression) { statement1; statement2; }
2020/5/7
复合语句 compound statement 被当作一条语句看待
23/79
if Statement
The structure is similar to single selection (flowchart)
2020/5/7
10/79
算法的概念及其描述方法
面向对象程序 = 对象 + 消息
面向过程的程序 = 数据结构 + 算法
计算机中的算法( Algorithm )
–为解决一个具体问题而采取的确定的有限的操作步
骤,仅指计算机能执行的算法
– A specific and step-by-step set of instructions for
Process
????
Output
max
2020/5/7
12/79
选择结构(分支结构) (Selection Structure)
Single
Multiple
Selection Double Selection Selection
if
2020/5/7
if – else - if if - else
(分治策略)
1. Start 2. 准备早餐
2.1 准备一个金枪鱼三明治 2.2 准备一些薯条 2.3 冲一杯咖啡 3. End
2020/5/7
6/79
‘Divide and Conquer’ Strategy
(分治策略)
1. Start 2.准备早餐
2.1 准备一个金枪鱼三明治 2.1.1 拿来两片面包 2.1.2 准备一些金枪鱼酱
【例】计算两整数的最大值
void main() {
int a, b, max; printf(“Input a,b: “); scanf(“%d,%d”, &a, &b); max = b; if (a > b)
max = a; printf(“max = %d\n”, max); }
Input a,b: 2_0 15
Syntax: if (expression) statement;
or if (expression) { statement1; statement2; }
2020/5/7
Don’t forget the parentheses !!
Don’t forget the braces !!
24/79
第4章 程序的控制结构
本章学习内容
算法的描述方法 – 常用算法(累加累乘、统计、递推迭代、穷举) 选择结构及相关控制语句 循环结构及相关控制语句 结构化程序设计的基本思想
Skill: – Map problem to solution in flowchart and pseudocode
forms
2.3 冲一杯咖啡
3. End
2020/5/7
8/79
‘Divide and Conquer’ Strategy
(分治策略)
1. Start
2.准备早餐
2.1 准备一个金枪鱼三明治
2.1.1 拿来两片面包
2.1.2 准备一些金枪鱼酱
2.2 准备一些薯片
2.2.1 将土豆切成片
2.2.2 油炸这些土豆片
a2 b5 c 15 d 17
2020/5/7
21/79
用于单分支控制的条件语句 (Single Selection)
Pseudocode Structure
step a if <condition is true> start
step m step n end_if step b
2020/5/7
else
{ statement2; statement4;
} 29/79
【例】计算两整数的最大值
Start Input a and b
max a
Yes
No
a > b?
max b
Output max
End
Flowchart: Calculate the Maximum
2020/5/7
30/79
【例】计算两整数的最大值
2.2 准备一些薯片 2.3 冲一杯咖啡
3. End
2020/5/7
7/79
‘Divide and Conquer’ Strategy
(分治策略)
1. Start 2.准备早餐
2.1 准备一个金枪鱼三明治 2.1.1 拿来两片面包 2.1.2 准备一些金枪鱼酱
2.2 准备一些薯片 2.2.1 将土豆切成片 2.2.2 油炸这些土豆片
2.3 冲一杯咖啡
2.3.1 烧些开水放入杯中 2.3.2 在水杯中加入一些咖啡和糖
2020/5/7 3. End
9/79
Something to ponder …
What is the connection between these real life processes and algorithm?
Symbol &&
|| !
a
0 0 1 1
2020/5/7
Description 与(AND)当且仅当两者都为真,则结果为真 或(OR) 只要两者中有一个为真,结果就为真 非(NOT)
b a && b a || b !a
0
0
0
1
1
0
1
1
0
0
1
0
1
1
1
0
百度文库
高 ! && || 低
!b
1 0 1 0
15/79
13/79
关系运算符与关系表达式√
Relational Operation
Description
<
Less than
<=
Less than or equal to
>
Greater than
>=
Greater than or equal to
==
Equal to
!=
Not equal to
2020/5/7