第4章分支结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
① 设置相关环境 ② 定义实型变量x、y、z、max。(分别表示3个原始数据及其中的最大数) ③ 输入x、y、z。 ④ 如果x≥y,则转max=x,否则max=y。 ⑤ 如果z≥max,则max=z。 ⑥ 输出max,结束。
【融会贯通】输入三个数,找出其中最小数。试描述算法。
广东商学院华商学院·《C语言》
【学习重点】
用传统流程图描述分支程序的的处理过程;多条件时f/else的嵌 套用法if与switch的混合应用。
广东商学院华商学院·《C语言》
第4章 分支结构
第一节 分支程序逻辑 第二节 条件表述 第三节 分支结构实现:条件运算符 第四节 分支结构实现:if语句 第五节 分支结构实现:switch语句
第三节 分支结构实现:条件运算符
条件表达式的值赋给一个变量,即条件表达式语句的另一种形式: 变量名 = 条件成立 ? 表达式1 : 表达式2 ;
如前例可写成: c = a * b > 0 ? ( a + b) : ( a – b );
条件运算符是唯一的一个3目运算符,其优先级排名倒数第3,高于赋值 运算符,低于算术运算符和关系运算符。条件运算符的的结合方向是从 右向左
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法2:用传统流程图描述程序逻辑
开始
设置环境
定义high,weight,sex,standard
输入性别sex
输入high,weight
N
Y
sex=1?
standard=high-110
standard=high-105
N
Y
|standard-weight|≤2?
第一节 分支程序逻辑
【例4-3】 键盘输入某人身高(cm)和性别,判别其体重(kg)是 否属正常范围,并输出相应信息。男性的标准体重为:身高-105; 女性的标准体重为:身高-110。设与标准体重上、下偏差2kg均 属正常范围。
【简要分析】 “性别是男是女?”、“体重是否正常?”,本题 涉及的两个条件有一定的逻辑关系。因为性别决定正常体重的计算 公式,所以应先判断性别再判断体重是否正常。
*/ printf(“y=%f\n”, y);
}
广东商学院华商学院·《C语言》
第三节 分支结构实现:条件运算符
课堂练习4.3
请用条件运算符实现分支结构,试写源程序 1.找出三个数中的最小数 2.求分段函数之值。
x 1 (x 0)
y
0
(x 0)
x 1 (x 0)
广东商学院华商学院·《C语言》
广东商学院华商学院·《C语言》
第Fra Baidu bibliotek节 分支结构实现:if语句
对【例4-5】,也可用if语句构造分支。
/* 例 4-5,4-5_2.c */ #include <math.h> void main() {
float x, y; printf(“\nPlease input x: ”); scanf(“%f”, &x); if ( x >= 0 )
广东商学院华商学院·《C语言》
第三节 分支结构实现:条件运算符
【例4-5】计算分段函数的值。
y
x
x 1
(x 0) (x 0)
参考源代码1:用条件运算符实现判断。 /* 例 4-5,4-5_1.c */
#include <math.h>
void main()
{
float x, y; printf(“\nPlease input x: ”); scanf(“%f”, &x); y = x >= 0 ? sqrt(x) : fabs(x); /* 等价于:x>=0 ? (y=sqrt(x)) : (y=fabs(x));
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法2:用传统流程图描述的程序逻辑
开始 环境设置,定义变量x、y、z、max
输入数据x、y、z
Y
x≥y?
N
Y x≥z max=x
N max=z
Y y≥z max=y
N max=z
输出max 结束
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
换一个角度思考:先找出x、y中较大数赋给max,然后再从 max和z中找最大数赋给max,则要容易得多。 用自然语言描述该 逻辑:
输出“不正常!”
输出“正常!”
结束
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
课堂练习4.1
请分别用自然语言、流程图描述算法 1.有N位青年到外地旅游,汽车票单价M元/张,团体票
(至少一次性购票20张)每张打8折。问怎样购票才最合算呢? 2.笛卡尔直角坐标系由四象限、原点、四根坐标轴组成。任意
第四节 分支结构实现:if语句
二、带else的if语句
if ( 条件成立 ) {
语句块1; } else {
语句块2; }
N
Y
条件成立?
执行语句块2
执行语句块1
如果if括号内的条件成立,则执行语句块1,否则执行语句块2。
广东商学院华商学院·《C语言》
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法2:用传统流程图描述的程序逻辑
开始 设置环境 定义变量a,b,c
输入a,b,c
Y
a,b,c能构成三角形?
N
Y
构成等边三角形?
Y 输出“等边三角形”
N 构成等腰三角形?
输出“不能构成三角形” N
输出“等腰三角形”
输出“不能构成三角形”
结束
广东商学院华商学院·《C语言》
别、标准体重。 ③ 输入原始数据sex、high、weight。 ④计算标准体重。如果性别为男,standard=high-105;否则
standard=high-110。 ⑤ 判断体重是否属正常范围。如果|weight-standard|≤2,则输出“正常!”
字样,否则输出“不正常”字样。 ⑥ 结束。
提示:
这里所谓的if语句是指if(条件)及花括号内的语句块全部; if的条件必须放于紧靠其后的圆括号内,且右圆括号外不要有 分号; 当语句块只有一条语句时,花括号{}可省略不写; 语句块内可以含任意合法的C语句,包括if语句本身; if语句书写格式灵活,可写于一行,也可写于多行(此时,最 好保持钜齿形式)。
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
请先看三个实例。
【例4-1】从键盘输入3个数,如果这3个数能构成一个三角形,则输出该
三角形的形状信息(等边、等腰、任意三种情况)。
【简要分析】当实际问题中涉及的条件较多时,如何科学组织条件 和表述条件是正确编制程序的关键。
由数学知识可知,结论“a、b、c能构成三角形”包含的前提条件: a、b、c必须同时为正数。(a>0,b>0,c>0) a、b、c任意两数之和必须大于第三数。(a+b>c,b+c>a,a+c>b)
第一节 分支程序逻辑
【例4-2】输入三个数,找出其中最大数。 方法1:用自然语言描述的程序逻辑。
① 设置相关环境。 ② 定义实型变量x、y、z、max。(分别表示3个原始数据及其中的最大数) ③ 输入x、y、z。 ④ 如果x≥y,则转⑤,否则转⑥。 ⑤ 如果x≥z,则max=x,转⑦;否则max=z,转⑦。 ⑥ 如果y≥z,则max=y,转⑦;否则max=z,转⑦。 ⑦ 输出max,结束。
变量名
含
义
high 身高
weight 实际体重
sex 性别(设1表男性,0表女性)
standard 标准体重
类型 float float
int float
值 键盘输入 按性别计算求得
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法1:用自然语言描述程序逻辑。
① 设置相关环境。 ② 定义变量high、weight、sex、standard分别代表身高、实际体重、性
输入一对坐标(x,y),输出其对应点的位置信息。
广东商学院华商学院·《C语言》
第二节 条件表述
C语言提供了如下运算符:
关系运算符:==、!=、>、<、>=、<= 逻辑运算符:||、&&、! 1.表述单个条件用关系运算符。
关系运算符中,==、!=(等于、不等于)优先级相同; >、<、>=、<=(大于、小于、大于等于、小于等于)优先级相同; ==、!=的优先级低于>、<、>=、<=。
y = sqrt(x); if ( x < 0 )
y = fabs(x); printf(“y=%f\n”, y); }
if语句可以改写成单行形式,如: if ( x >= 0 ) y = sqrt(x); /* 或 if ( x >= 0) { y = sqrt(x); } */
广东商学院华商学院·《C语言》
第四节 分支结构实现:if语句
if语句有两种格式,即不带else形式和带else形式。 一、不带else的if语句
if ( 条件成立 ) {
语句块; }
N 条件成立?
Y 执行语句块
如果if括号内的条件成立,则执行语句块,否则跳过该if 语句,直接执行下一条语句。
广东商学院华商学院·《C语言》
第四节 分支结构实现:if语句
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法1:用自然语言描述程序逻辑。
①.设置相关环境。 ②.定义实型变量a、b、c。(分别表示三角形三边) ③.输入a、b、c的值。 ④.a、b、c能构成三角形否?若能转⑤,否则输出“不能构成三角形!” 字样转⑦。 ⑤.a、b、c能构成等边三角形否?若能则输出“等边三角形!”字样转 ⑦,否则转⑥。 ⑥.a、b、c能构成等腰三角形否?若能则输出“等腰三角形!”字样转 ⑦结束,否则输出“任意三角形!”字样转⑦。 ⑦.结束。
广东商学院华商学院·《C语言》
第二节 条件表述
2.表述多个条件用逻辑运算符。
逻辑运算符||、&&、!(或、与、非)的优先级依次递增。
!非 &&与 ||或 例如:数学式子a ≤ x ≤ b,可描述为:x >= a && x <= b
广东商学院华商学院·《C语言》
第二节 条件表述
逻辑运算符运算规则:
条件表达式的语句形式之一: 条件成立 ? 表达式1 : 表达式2 ;
条件表达式的功能:
当条件成立时,条件表达式的值取表达式1的值,否则取表达式 2的值。
例如,两数a、b同号求和异号求 差,放结果于变量c中。
a * b > 0 ? ( = a + b) : ( c = a – b );
广东商学院华商学院·《C语言》
!运算:改变操作数的逻辑值。(真假互换) &&运算:当两边均为真时,值为假,否则为假。 ||运算:当两边均为假时,值为假,否则为真。
短路规则: 计算机从左向右依次计算关系表达式的值,如果计算到某一个
关系表达式时已能得出整个条件表达式的值,则不再计算其后边的 关系表达式。
例如:设a = 1, b = 2,分析下面式子。 ( a == 1 ) || ( b = b + 5 ) || ( b = b + 3) 整个条件表达式值为1,执行后a=1, b=2。 (b = b + 5) && ( a == 0 ) && ( b = b + 3 ) 整个条件表达式值为0,执行后 a=1,b=7。
广东商学院华商学院·《C语言》
第二节 条件表述
3.条件表达式的值 C语言不提供布尔类型,条件表达式的值用整数0或1表示, 0表示条件不成立(假),1表示条件成立(真)。 为0为假,非0为真
广东商学院华商学院·《C语言》
第二节 条件表述
【例4-4】 采用多种方式,描述下列条件。 ① a、b两数同号。 ② a、b、c三数不全为零。 ③ x是字母
switch语句四川信息职业技术学院c语言第一节分支程序逻辑例41从键盘输入3个数如果这3个数能构成一个三角形则输出该三角形的形状信息等边等腰任意三种情况
第4章 分支结构
【内容提要】
怎样用自然语言或传统流程图描述程序的分支逻辑,以此加深对 程序的灵魂——算法的理解,为学习后续章节打下基础;其次,较 复杂条件的C语言表述;第三,C语言实现分支程序逻辑的三种方法: 条件运算符、if语句、switch语句
x>=97 && x<=122 || x>=65 && x<=90
广东商学院华商学院·《C语言》
第二节 条件表述
课堂练习4.2
1. 三位自然数x是完全平方数,并且它是2、3、5的倍数,但不是7的倍 数。试表述该条件。
2. 四位自然数各位数字中有且仅有两位数字相同。
广东商学院华商学院·《C语言》
第三节 分支结构实现:条件运算符
通过本例请理解如何把一个复杂的条件简单化。 ① 题可表述为:a>0 && b>0 || a<0 && b<0 或 a*b>0 ② 题可表述为:!(a==0 && b==0 && c==0) 或 a*a+b*b+c*c!=0或 a || b || c ③ 题可表述为:x>=’a’ && x<=’z’ || x>=’A’ && x<=’Z’ 或
【融会贯通】输入三个数,找出其中最小数。试描述算法。
广东商学院华商学院·《C语言》
【学习重点】
用传统流程图描述分支程序的的处理过程;多条件时f/else的嵌 套用法if与switch的混合应用。
广东商学院华商学院·《C语言》
第4章 分支结构
第一节 分支程序逻辑 第二节 条件表述 第三节 分支结构实现:条件运算符 第四节 分支结构实现:if语句 第五节 分支结构实现:switch语句
第三节 分支结构实现:条件运算符
条件表达式的值赋给一个变量,即条件表达式语句的另一种形式: 变量名 = 条件成立 ? 表达式1 : 表达式2 ;
如前例可写成: c = a * b > 0 ? ( a + b) : ( a – b );
条件运算符是唯一的一个3目运算符,其优先级排名倒数第3,高于赋值 运算符,低于算术运算符和关系运算符。条件运算符的的结合方向是从 右向左
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法2:用传统流程图描述程序逻辑
开始
设置环境
定义high,weight,sex,standard
输入性别sex
输入high,weight
N
Y
sex=1?
standard=high-110
standard=high-105
N
Y
|standard-weight|≤2?
第一节 分支程序逻辑
【例4-3】 键盘输入某人身高(cm)和性别,判别其体重(kg)是 否属正常范围,并输出相应信息。男性的标准体重为:身高-105; 女性的标准体重为:身高-110。设与标准体重上、下偏差2kg均 属正常范围。
【简要分析】 “性别是男是女?”、“体重是否正常?”,本题 涉及的两个条件有一定的逻辑关系。因为性别决定正常体重的计算 公式,所以应先判断性别再判断体重是否正常。
*/ printf(“y=%f\n”, y);
}
广东商学院华商学院·《C语言》
第三节 分支结构实现:条件运算符
课堂练习4.3
请用条件运算符实现分支结构,试写源程序 1.找出三个数中的最小数 2.求分段函数之值。
x 1 (x 0)
y
0
(x 0)
x 1 (x 0)
广东商学院华商学院·《C语言》
广东商学院华商学院·《C语言》
第Fra Baidu bibliotek节 分支结构实现:if语句
对【例4-5】,也可用if语句构造分支。
/* 例 4-5,4-5_2.c */ #include <math.h> void main() {
float x, y; printf(“\nPlease input x: ”); scanf(“%f”, &x); if ( x >= 0 )
广东商学院华商学院·《C语言》
第三节 分支结构实现:条件运算符
【例4-5】计算分段函数的值。
y
x
x 1
(x 0) (x 0)
参考源代码1:用条件运算符实现判断。 /* 例 4-5,4-5_1.c */
#include <math.h>
void main()
{
float x, y; printf(“\nPlease input x: ”); scanf(“%f”, &x); y = x >= 0 ? sqrt(x) : fabs(x); /* 等价于:x>=0 ? (y=sqrt(x)) : (y=fabs(x));
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法2:用传统流程图描述的程序逻辑
开始 环境设置,定义变量x、y、z、max
输入数据x、y、z
Y
x≥y?
N
Y x≥z max=x
N max=z
Y y≥z max=y
N max=z
输出max 结束
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
换一个角度思考:先找出x、y中较大数赋给max,然后再从 max和z中找最大数赋给max,则要容易得多。 用自然语言描述该 逻辑:
输出“不正常!”
输出“正常!”
结束
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
课堂练习4.1
请分别用自然语言、流程图描述算法 1.有N位青年到外地旅游,汽车票单价M元/张,团体票
(至少一次性购票20张)每张打8折。问怎样购票才最合算呢? 2.笛卡尔直角坐标系由四象限、原点、四根坐标轴组成。任意
第四节 分支结构实现:if语句
二、带else的if语句
if ( 条件成立 ) {
语句块1; } else {
语句块2; }
N
Y
条件成立?
执行语句块2
执行语句块1
如果if括号内的条件成立,则执行语句块1,否则执行语句块2。
广东商学院华商学院·《C语言》
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法2:用传统流程图描述的程序逻辑
开始 设置环境 定义变量a,b,c
输入a,b,c
Y
a,b,c能构成三角形?
N
Y
构成等边三角形?
Y 输出“等边三角形”
N 构成等腰三角形?
输出“不能构成三角形” N
输出“等腰三角形”
输出“不能构成三角形”
结束
广东商学院华商学院·《C语言》
别、标准体重。 ③ 输入原始数据sex、high、weight。 ④计算标准体重。如果性别为男,standard=high-105;否则
standard=high-110。 ⑤ 判断体重是否属正常范围。如果|weight-standard|≤2,则输出“正常!”
字样,否则输出“不正常”字样。 ⑥ 结束。
提示:
这里所谓的if语句是指if(条件)及花括号内的语句块全部; if的条件必须放于紧靠其后的圆括号内,且右圆括号外不要有 分号; 当语句块只有一条语句时,花括号{}可省略不写; 语句块内可以含任意合法的C语句,包括if语句本身; if语句书写格式灵活,可写于一行,也可写于多行(此时,最 好保持钜齿形式)。
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
请先看三个实例。
【例4-1】从键盘输入3个数,如果这3个数能构成一个三角形,则输出该
三角形的形状信息(等边、等腰、任意三种情况)。
【简要分析】当实际问题中涉及的条件较多时,如何科学组织条件 和表述条件是正确编制程序的关键。
由数学知识可知,结论“a、b、c能构成三角形”包含的前提条件: a、b、c必须同时为正数。(a>0,b>0,c>0) a、b、c任意两数之和必须大于第三数。(a+b>c,b+c>a,a+c>b)
第一节 分支程序逻辑
【例4-2】输入三个数,找出其中最大数。 方法1:用自然语言描述的程序逻辑。
① 设置相关环境。 ② 定义实型变量x、y、z、max。(分别表示3个原始数据及其中的最大数) ③ 输入x、y、z。 ④ 如果x≥y,则转⑤,否则转⑥。 ⑤ 如果x≥z,则max=x,转⑦;否则max=z,转⑦。 ⑥ 如果y≥z,则max=y,转⑦;否则max=z,转⑦。 ⑦ 输出max,结束。
变量名
含
义
high 身高
weight 实际体重
sex 性别(设1表男性,0表女性)
standard 标准体重
类型 float float
int float
值 键盘输入 按性别计算求得
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法1:用自然语言描述程序逻辑。
① 设置相关环境。 ② 定义变量high、weight、sex、standard分别代表身高、实际体重、性
输入一对坐标(x,y),输出其对应点的位置信息。
广东商学院华商学院·《C语言》
第二节 条件表述
C语言提供了如下运算符:
关系运算符:==、!=、>、<、>=、<= 逻辑运算符:||、&&、! 1.表述单个条件用关系运算符。
关系运算符中,==、!=(等于、不等于)优先级相同; >、<、>=、<=(大于、小于、大于等于、小于等于)优先级相同; ==、!=的优先级低于>、<、>=、<=。
y = sqrt(x); if ( x < 0 )
y = fabs(x); printf(“y=%f\n”, y); }
if语句可以改写成单行形式,如: if ( x >= 0 ) y = sqrt(x); /* 或 if ( x >= 0) { y = sqrt(x); } */
广东商学院华商学院·《C语言》
第四节 分支结构实现:if语句
if语句有两种格式,即不带else形式和带else形式。 一、不带else的if语句
if ( 条件成立 ) {
语句块; }
N 条件成立?
Y 执行语句块
如果if括号内的条件成立,则执行语句块,否则跳过该if 语句,直接执行下一条语句。
广东商学院华商学院·《C语言》
第四节 分支结构实现:if语句
广东商学院华商学院·《C语言》
第一节 分支程序逻辑
方法1:用自然语言描述程序逻辑。
①.设置相关环境。 ②.定义实型变量a、b、c。(分别表示三角形三边) ③.输入a、b、c的值。 ④.a、b、c能构成三角形否?若能转⑤,否则输出“不能构成三角形!” 字样转⑦。 ⑤.a、b、c能构成等边三角形否?若能则输出“等边三角形!”字样转 ⑦,否则转⑥。 ⑥.a、b、c能构成等腰三角形否?若能则输出“等腰三角形!”字样转 ⑦结束,否则输出“任意三角形!”字样转⑦。 ⑦.结束。
广东商学院华商学院·《C语言》
第二节 条件表述
2.表述多个条件用逻辑运算符。
逻辑运算符||、&&、!(或、与、非)的优先级依次递增。
!非 &&与 ||或 例如:数学式子a ≤ x ≤ b,可描述为:x >= a && x <= b
广东商学院华商学院·《C语言》
第二节 条件表述
逻辑运算符运算规则:
条件表达式的语句形式之一: 条件成立 ? 表达式1 : 表达式2 ;
条件表达式的功能:
当条件成立时,条件表达式的值取表达式1的值,否则取表达式 2的值。
例如,两数a、b同号求和异号求 差,放结果于变量c中。
a * b > 0 ? ( = a + b) : ( c = a – b );
广东商学院华商学院·《C语言》
!运算:改变操作数的逻辑值。(真假互换) &&运算:当两边均为真时,值为假,否则为假。 ||运算:当两边均为假时,值为假,否则为真。
短路规则: 计算机从左向右依次计算关系表达式的值,如果计算到某一个
关系表达式时已能得出整个条件表达式的值,则不再计算其后边的 关系表达式。
例如:设a = 1, b = 2,分析下面式子。 ( a == 1 ) || ( b = b + 5 ) || ( b = b + 3) 整个条件表达式值为1,执行后a=1, b=2。 (b = b + 5) && ( a == 0 ) && ( b = b + 3 ) 整个条件表达式值为0,执行后 a=1,b=7。
广东商学院华商学院·《C语言》
第二节 条件表述
3.条件表达式的值 C语言不提供布尔类型,条件表达式的值用整数0或1表示, 0表示条件不成立(假),1表示条件成立(真)。 为0为假,非0为真
广东商学院华商学院·《C语言》
第二节 条件表述
【例4-4】 采用多种方式,描述下列条件。 ① a、b两数同号。 ② a、b、c三数不全为零。 ③ x是字母
switch语句四川信息职业技术学院c语言第一节分支程序逻辑例41从键盘输入3个数如果这3个数能构成一个三角形则输出该三角形的形状信息等边等腰任意三种情况
第4章 分支结构
【内容提要】
怎样用自然语言或传统流程图描述程序的分支逻辑,以此加深对 程序的灵魂——算法的理解,为学习后续章节打下基础;其次,较 复杂条件的C语言表述;第三,C语言实现分支程序逻辑的三种方法: 条件运算符、if语句、switch语句
x>=97 && x<=122 || x>=65 && x<=90
广东商学院华商学院·《C语言》
第二节 条件表述
课堂练习4.2
1. 三位自然数x是完全平方数,并且它是2、3、5的倍数,但不是7的倍 数。试表述该条件。
2. 四位自然数各位数字中有且仅有两位数字相同。
广东商学院华商学院·《C语言》
第三节 分支结构实现:条件运算符
通过本例请理解如何把一个复杂的条件简单化。 ① 题可表述为:a>0 && b>0 || a<0 && b<0 或 a*b>0 ② 题可表述为:!(a==0 && b==0 && c==0) 或 a*a+b*b+c*c!=0或 a || b || c ③ 题可表述为:x>=’a’ && x<=’z’ || x>=’A’ && x<=’Z’ 或