第5章 选择控制结构

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
25/53
5.4用于单分支控制的条件语句
选择结构如图5-3所示,当条件P成立(为真)时,执行A操作 ,否则执行B操作。 如果B操作为空,则为单分支选择结构;B操作不为空,则 为双分支选择结构;B操作又包含另一个选择结构,则构成 多分支选择结构。

T
P
F B T
P
A
F
A
图5-3 选择结构
B
26/53

13/53
2.流程图描述
流程图是一个描述程序的控制流程和指令执行 情况的有向图,比较直观。 优点:可直接转化为程序,形象直观,各种操 作一目了然,不会产生歧义,易于理解和发现 算法设计中存在的错误。 不足:所占篇幅较大,允许使用流程线,使用 者可使流程任意转向,有可能造成程序阅读和 修改上的困难。
24/53
< <= > >= == !=
第5章 选择控制结构





5.1 生活中与计算机中的问题求解方法 5.2 算法的概念及其描述方法 5.3 关系运算符与关系表达式 5.4 用于单分支控制的条件语句 5.5 用于双分支控制的条件语句 5.6 条件运算符和条件表达式 5.7 用于多分支控制的条件语句 5.8 用于多路选择的switch语句 5.9 逻辑运算符和逻辑表达式

9/53
5.2.1 算法的概念(续)
算法大致可分为如下两类: (1)数值算法,主要用于解决数值求解问题

(2)非数值算法,主要用于解决需要用逻辑 推理才能解决的问题,如人工智能中的许多问 题、搜索、分类等问题。
10/53
5.2.1 算法的概念(续)
怎样衡量一个算法的正确性呢?一般的,可用 如下基本特征来衡量。 (1)有穷性。算法在合理的时间内完成。 (2)确定性。所有操作步骤都是确定的。 (3)有效性。所有操作步骤能有效执行。 (4)允许没有输入或者多个输入。 (5)必须有一个或者多个输出。





5.1 生活中与计算机中的问题求解方法 5.2 算法的概念及其描述方法 5.3 关系运算符与关系表达式 5.4 用于单分支控制的条件语句 5.5 用于双分支控制的条件语句 5.6 条件运算符和条件表达式 5.7 用于多分支控制的条件语句 5.8 用于多路选择的switch语句 5.9 逻辑运算符和逻辑表达式

27/53
【例5.1】使用单分支的条件语 句编程,计算两整数的最大值
#include <stdio.h> 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); } _ 15 Input a,b: 20

33/53
例5.3 使用条件运算符编程,输 出两个整数的最大值
#include <stdio.h> main() { int a, b, max; 表达式1 ? 表达式2 : 表达式3
printf("Input a, b:"); scanf("%d,%d", &a, &b);
if
(a > b) max = a; else max = b;

11/53
5.2.2 算法的描述方法



算法的描述方法主要有如下几种: 1.自然语言描述 2.流程图描述 3.NS结构化流程图描述 4.伪码描述
12/53
1.自然语言描述
用自然语言描述算法时,可以使用汉语、英语 和数学符号等。 优点:通俗易懂,比较符合人们的日常思维习 惯 不足:描述文字显得冗长,内容表达上容易引 起理解上的歧义,不易直接转化为程序, 适用于算法较简单的情况

14/53
2.流程图描述(续)
符号 含义 开始/结束 处理框
输入/输出
判断框 连接符 流程线
图5-1 流程图中的常用符号
15/53
3.NS结构化流程图描述
完全取消了流程线,迫使算法只能从上到下顺 序执行。 优点:避免了算法流程的任意转向,保证了程 序的质量。形象、直观、节省篇幅。 不足:略。
(a)用传统流程图表示的选择结构
(b)用NS图表示的选择结构
5.4用于单分支控制的条件语句(续)
单分支选择结构,可用下面的if语句实 现: F if(表达式P) P { T 语句A A } 单分支语句的流程图如图5-4所示,即 如果表达式P的值为真,则执行语句A ,否则不做任何操作,直接执行if语句 图5-4 单分支选择结构 后面的语句。
第5章 选择控制结构
本章学习内容
算法的描述方法 用于单分支控制的if语句 用于双分支控制的if-else语句 用于多路选择的switch语句 break语句在switch语句中的作用 关系运算符 条件运算符 逻辑运算符 程序测试
2/53
第5章 选择控制结构


表5-1 C语言中的关系运算符及其优先级
21/53
5.3 关系运算符与关系表达式(续)
用关系运算符将两个操作数连接起来组成的表 达式,称为关系表达式。 关系表达式通常用于表达一个判断条件,而一 个条件判断只能有两种可能:“真”或者“假 ”。 由于标准C(C89)没有提供布尔数据类型,所以 ,C语言中,用非0值表示“真”,用0值表示 “假”。5?-5? 只要表达式的值为0,就表示表达式的值为假 ,这个表达式所表示的判断条件不成立;反之 ,表达式所表示的判断条件成立。 22/53
max _ = 20 _
28/53
第5章 选择控制结构





5.1 生活中与计算机中的问题求解方法 5.2 算法的概念及其描述方法 5.3 关系运算符与关系表达式 5.4 用于单分支控制的条件语句 5.5 用于双分支控制的条件语句 5.6 条件运算符和条件表达式 5.7 用于多分支控制的条件语句 5.8 用于多路选择的switch语句 5.9 逻辑运算符和逻辑表达式

A
B
(a)传统流程图
A B
(b)NS流程图
16/53
图5-2 顺序结构的流程图表示
4.伪码描述
伪码是指介于自然语言和计算机语言之间的一 种代码。 优点:与计算机语言比较接近,易于转换为计 算机程序。书写无固定格式和规范,比较灵活


初学者不应该急于写代码,而应该养成“先画 程序流程图,然后再编写代码”的好习惯。
29/53
5.4用于单分支控制的条件语句
双分支选择语句的一般形式为: if(表达式P) {

T 表达式 语句1
F 语句2
语句1
} else {
语句2
}
图5-5 双分支选择结构

if-else语句的流程图如图5-5所示
30/53
【例5.2】使用双分支条件语句 ,计算两整数的最大值
#include <stdio.h> main() { int a, b, max;

4/53
5.1生活中与计算机中的问题求解方法
(续)

与现实生活不同,计算机执行特定任务是通过 执行预定义的指令集来实现的。这些预定义的 指令集就是所谓的计算机程序。按照一定的算 法编写计算机程序实际上就是在告诉计算机做 什么怎么做。
5/53
5.1生活中与计算机中的问题求解方法
(续)

计算机能“理解”的唯一语言就是机器语言, 是由一系列二进制的0和1组成的。 程序设计语言不是机器语言,是一种高级语言 ,虽然看上去很像英语,但它不是英语,而是 介于机器语言和英语之间语言。 把指令从高级语言形式转换成计算机能理解的 机器语言形式,是由编译器来完成的。
3/53
5.1生活中与计算机中的问题求解方法
日常生活中, 人们做任何事情都需要遵循一 定的程序,即按一定的顺序来操作,其中某些 步骤的顺序是不能改变的,就像“先穿袜子、 后穿鞋”一样。这是生活中的“算法”。 如果问题很复杂,还要使用分治策略将原始问 题逐步分解为一些易于解决的子问题,以便各 个击破。
17/53
4.伪码描述(续)

伪码描述举例:
18/53
第5章 选择控制结构




ቤተ መጻሕፍቲ ባይዱ
5.1 生活中与计算机中的问题求解方法 5.2 算法的概念及其描述方法 5.3 关系运算符与关系表达式 5.4 用于单分支控制的条件语句 5.5 用于双分支控制的条件语句 5.6 条件运算符和条件表达式 5.7 用于多分支控制的条件语句 5.8 用于多路选择的switch语句 5.9 逻辑运算符和逻辑表达式
7/53
5.2.1 算法的概念

所谓算法,简单的说,就是为解决一个具体问 题而采取的确定、有限、有序、可执行的操作 步骤。 程序设计是一门艺术,主要体现在算法设计和 结构设计上。如果说结构设计是程序的肉体, 那么算法设计就是程序的灵魂。

8/53
5.2.1 算法的概念(续)
著名计算机科学家沃思提出一个经典公式: 数据结构+算法=程序 说明一个程序应由两部分组成: (1)数据结构,是计算机存储、组织数据的 方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 (2)算法,是对操作或操作步骤的描述。不 同的算法可能用不同的时间、空间或效率来完 成同样的任务。
6/53


第5章 选择控制结构





5.1 生活中与计算机中的问题求解方法 5.2 算法的概念及其描述方法 5.3 关系运算符与关系表达式 5.4 用于单分支控制的条件语句 5.5 用于双分支控制的条件语句 5.6 条件运算符和条件表达式 5.7 用于多分支控制的条件语句 5.8 用于多路选择的switch语句 5.9 逻辑运算符和逻辑表达式
printf("Input a, b:"); scanf("%d,%d", &a, &b);
if
(a > b) max = a; else max = b;
}
}
if if
(a > b) max = a; (a <= b) max = b;
printf("max = %d", max);
31/53
第5章 选择控制结构

5.3 关系运算符与关系表达式(续)
注意: <=, >=, !=, ==之间没有空格; 不要将关系运算“==”写成赋值运算“=”;
23/53
5.3关系运算符与关系表达式举例
Relational Operation Description Less than Less than or equal to Greater than Greater than or equal to Equal to Not equal to 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)




5.1 生活中与计算机中的问题求解方法 5.2 算法的概念及其描述方法 5.3 关系运算符与关系表达式 5.4 用于单分支控制的条件语句 5.5 用于双分支控制的条件语句 5.6 条件运算符和条件表达式 5.7 用于多分支控制的条件语句 5.8 用于多路选择的switch语句 5.9 逻辑运算符和逻辑表达式
32/53
5.6 条件运算符和条件表达式
条件运算符是C语言中唯一的一个三元运算符 ,运算时需要三个操作数。 由条件运算符及其相应的操作数构成的表达式 ,称为条件表达式,一般形式如下: 表达式1?表达式2:表达式3 含义:若表达式1的值非0,则该条件表达式的 值是表达式2的值,否则是表达式3的值。


这就要用到本章介绍的选择结构,也称为分支 控制结构。
20/53
5.3 关系运算符与关系表达式(续)
选择结构需要解决以下两个问题: (1)如何描述判断条件? (2)如何改变执行顺序?

对于简单的判断条件可用关系表达式来表示, 对于复杂一些的条件可用逻辑表达式表示。 关系运算实质上是比较运算。
19/53
5.3 关系运算符与关系表达式
顺序结构是最常见的程序结构,在这种结构中 ,只能自顶向下、按照代码书写的先后顺序来 执行程序。 在实际问题中,常常需要根据不同的情况或条 件来选择不同的操作步骤去执行。例如 计算一元二次方法ax2+bx+c=0的根。需要先判断 b2-4ac与0的关系,再选择计算步骤。
相关文档
最新文档