内容正文:
第三章 程序设计的三大结构
--分支结构
1
C语言
知识树
My First Template
CONTENTS
目录
01
02
分支结构的嵌套
分支结构的应用
03
多分支结构的应用
04
多分支switch结构的应用
分支结构的嵌套
C语言程序设计
4
C语言程序设计—分支结构的嵌套
C语言
任务回顾
分支结构的应用
—输入1个年份,判断是否为闰年。
闰年
#include <stdio.h>
void main()
{
int year;
printf("
请输入年份:");
scanf("%d",&year);
if((year % 4 ==0 && year % 100 != 0) || (year % 400 == 0))
{
printf("
%d 年是闰年
", year);
}
else
{
printf("
%d 年不是闰年
", year);
}
}
任务实现
如果(条件1或者条件2)
{
则输出该年份是闰年
}
否则
{
则输出该年份是平年
}
自然语言
My First Template
条件1:普通年能被4整除且不能被100整除的
条件2:世纪年能被400整除的是闰年
C语言
我该走哪条路?
多分支
多分支
C语言程序设计—分支结构的嵌套
My First Template
C语言
本次任务
学生BMI 计算器
输入1个学生身高、体重判断健康指数
C语言程序设计—分支结构的嵌套
My First Template
CONTENTS
内容
01
02
相关知识
03
任务完成与总结
任务分析
C语言
任务分析
分支结构的嵌套—任务分析
学生健康指数(BMI)检测
—输入1个学生身高、体重判断健康指数。
1、信息采集
2、核心算法
3、流程结构
4、信息输出
程序框架
获取身高、体重
输出健康指数
(偏瘦、正常、微胖或者肥胖)
bmi=体重(kg)/身高2(m)
单分支、双分支、
分支嵌套
体重(kg)/身高(m)的平方 <18.5 偏瘦
体重(kg)/身高(m)的平方 >=18.5且<24.0 正常
体重(kg)/身高(m)的平方 >=24.0且<27.0 微胖
体重(kg)/身高(m)的平方 >=27.0 肥胖
My First Template
C语言
分支语句的嵌套
如果(条件)
{
如果(条件) 语句1;
否则 语句2;
}
否则
{
如果(条件) 语句3;
否则 语句4;
}
自然语言的分支嵌套
如果(条件)
{
语句1;
}
否则
{
语句2;
}
自然语言的分支
分支结构的嵌套—任务分析
My First Template
C语言
格式一:
if( )
if( )语句1
else语句2
else
if()语句3
else 语句4
格式二:
if ()
{ if()语句1 }
else
if()语句2
else 语句3
分支语句的嵌套
缺省{ }时,else总是和它上面离它最近的未配对的if配对
注意if与else
的配对关系。
分支结构的嵌套—相关知识
My First Template
C语言
例: if (a= =b)
if(b= =c) printf(“a==b==c”);
else
printf(“a!=b”);
修改: if (a= =b)
if(b= =c)
printf(“a==b==c”);
else
printf(“a!=b”);
缺省{ }时,else总是和它上面离它最近的未配对的if配对
实现if ~ else 正确配对方法:加{ }
{
}
if ~ else 配对原则
分支结构的嵌套—相关知识
My First Template
C语言
任务再分析
如果(bmi<18.5)
{
输出偏瘦
}
否则
{
如果(bmi<24.0) 输出正常;
否则
{
如果(bmi<27.0) 输出微胖;
否则
{
输出肥胖;
}
}
}
自然语言的分支嵌套
学生健康指数(BMI)检测
—输入1个学生身高、体重判断健康指数。
体重(kg)/身高(m)的平方 <18.5 偏瘦
体重(kg)/身高(m)的平方 >=18.5且<24.0 正常
体重(kg)/身高(m)的平方 >=24.0且<27.0 微胖
体重(kg)/身高(m)的平方 >=27.0 肥胖
分支结构的嵌套—任务再分析
My First Template
C语言
任务实现
0--18.4
18.5--∞
18.5—23.9
24.0—∞
24.0—26.9
27.0—∞
分支结构的嵌套—任务实现
My First Template
C语言
小组
BMI健康指数管理系统
写任务
小组
输入学生成绩划分等级
用任务
根据出生年份判断多名学生属相
读任务
个人
布置任务
分支结构的嵌套—布置任务
My First Template
总结
1. 提出任务(BMI计算器)
2. 任务分析(单双分支无法实现)
3. 相关知识(分支嵌套)
4. 任务实现(边界与分段)
多分支结构的应用
C语言程序设计
17
C语言程序设计—多分支结构的应用
C语言
分支结构回顾
条件
语句
N
Y
条件
语句块1
语句块2
Y
N
if (<条件>)
<语句块>
单分支
if (<条件>)
{
<语句块1 >
}
else
{
<语句块2 >
}
双分支
My First Template
C语言
本次任务
输入1个学生成绩根据分数段划分等级
C语言程序设计—多分支结构的应用
My First Template
CONTENTS
内容
01
02
相关知识
03
任务完成与总结
任务分析
C语言
任务分析
百分变等级
—输入1个学生成绩,为其划分等级。
大于等于90分 A
大于等于80分小于90分 B
大于等于60分小于80分 C
小于60分 D
A
C
C
D
D
B
多分支结构的应用—任务分析
My First Template
C语言
分支语句的嵌套
如果(条件)
{
如果(条件) 语句1;
否则 语句2;
}
否则
{
如果(条件) 语句3;
否则 语句4;
}
自然语言的分支嵌套
如果(条件)
{
语句1;
}
否则
{
语句2;
}
自然语言的分支
多分支结构的应用—相关知识
My First Template
C语言
格式一:
if( )
if( )语句1
else语句2
else
if()语句3
else 语句4
格式二:
if ()
{ if()语句1 }
else
if()语句2
else 语句3
分支语句的嵌套
缺省{ }时,else总是和它上面离它最近的未配对的if配对
注意if与else
的配对关系。
多分支结构的应用—相关知识
My First Template
C语言
多分支结构
如果(条件1)
{
语句1;
}
否则 如果(条件2)
{
语句2;
}
否则 如果(条件3)
{
语句3;
}
否则
{
语句4;
}
自然语言
if (表达式1) 语句 1
else if(表达式2) 语句2
else if(表达式3) 语句3
else 语句4
C语言的多分支
多分支结构的应用—相关知识
My First Template
C语言
表达式1
语句1
表达式2
语句2
表达式3
语句3
语句4
T
F
F
F
T
T
多分支流程结构
多分支结构的应用—相关知识
My First Template
C语言
任务实现
90--100
80—89
60—79
0—59
多分支结构的应用—任务实现
My First Template
C语言
grade>=90
A
grade>=80
B
>=60
C
D
T
F
F
F
T
T
任务流程结构
多分支结构的应用—任务实现
My First Template
C语言
个人
输入学生成绩划分等级
写任务
小组
BMI健康指数管理系统
用任务
个人所得税征收系统
读任务
个人
布置任务
多分支结构的应用—布置任务
My First Template
总结
1. 提出任务(百分变等级)
2. 任务分析(分支嵌套解决麻烦)
3. 相关知识(多分支结构)
4. 任务实现(边界与分段)
多分支结构(Switch)的应用
C语言程序设计
30
C语言
C语言程序设计—多分支结构switch的应用
程序:为了使用计算机解决某些问题而编写的一系列有序指令的集合。
解决问题
计算机中的程序
My First Template
C语言
学生健康指数检测
—输入1个学生身高、体重判断健康指数。
任务回顾
体重(kg)/身高(m)的平方 <=18.4 偏瘦
体重(kg)/身高(m)的平方 18.5-23.9 正常
体重(kg)/身高(m)的平方 24.0-27.9 微胖
体重(kg)/身高(m)的平方 >=28.0 肥胖
0--18.4
18.5--∞
18.5—23.9
24.0—∞
24.0—26.9
27.0—∞
C语言程序设计—多分支结构switch的应用
My First Template
C语言
学生健康指数检测
—输入1个学生身高、体重判断健康指数。
任务回顾
体重(kg)/身高(m)的平方 <=18.4 偏瘦
体重(kg)/身高(m)的平方 18.5-23.9 正常
体重(kg)/身高(m)的平方 24.0-27.9 微胖
体重(kg)/身高(m)的平方 >=28.0 肥胖
0--18.4
18.5—23.9
24.0—26.9
27.0—∞
C语言程序设计—多分支结构switch的应用
My First Template
C语言
本次任务
输入1个人的出生年份判断其属相
C语言程序设计—多分支结构switch的应用
My First Template
CONTENTS
内容
01
02
相关知识
03
任务完成与总结
任务分析
C语言
任务分析
1、信息采集
2、核心算法
3、流程结构
4、信息输出
程序框架
获取出生年份
输出属相
出身年份%12
分支嵌套
属相判断
—输入1个人的出生年份判断其属相。
年份%12余0 猴 年份%12余6 虎
年份%12余1 鸡 年份%12余7 兔
年份%12余2 狗 年份%12余8 龙
年份%12余3 猪 年份%12余9 蛇
年份%12余4 鼠 年份%12余10 马
年份%12余5 牛 年份%12余11 羊
多分支switch语句
可以用分支的嵌套实现,C语言又提供了另外一种方式
多分支结构switch的应用—任务分析
My First Template
C语言
printf(“这是迈克尔,身高 180cm,加利福尼亚第 12 大街”);
printf(“这是丹尼尔,身高 193cm,现居住地不明,2016 年 12 月 12 日在佛罗里达被捕”);
printf(“这是吉姆,身高 175cm,
墨西哥州海鸥路弗罗拉公寓,于 2017 年 9 月 19 日在新泽西因抢银行被捕”);
default:
printf(“未发现匹配项。对不起!”);
停止搜索
停止搜索
停止搜索
停止搜索
警察记录
嫌疑犯照片
不是
这是吉姆,身高 175cm,
墨西哥州海鸥路弗罗拉公寓,
于 2017 年 9 月 20日在新泽西因抢银行被捕
不是
是
Switch语句
多分支结构switch的应用—相关知识
My First Template
C语言
一般形式:
switch ( 表达式 )
{
case 常量表达式1: 语句1 break;
case 常量表达式2: 语句2 break;
… …
case 常量表达式n: 语句n break;
default: 语句n+1 break;
}
整型或字符型
各常量表达式值不能相等
Switch语句
switch语句的功能就是计算switch后面的括号内的表达式的值,并逐一和case后面的常量比较,等于哪个常量表达式的值就执行对应语句,不等于任何case的值就执行default后面的语句。
多分支结构switch的应用—相关知识
My First Template
C语言
输出
“猴”
输出
“error”
输出
“…”
year%12
输出
“狗”
输出
“鸡”
其他
‘…’
‘2’
‘1’
‘0’
Switch语句执行流程
多分支结构switch的应用—相关知识
My First Template
C语言
如: ……
case ‘A’:
case ‘B’ :
case ‘C’ :printf(“我是一个好人
”);break;
default ……..
多个case可共用一组执行语句。
default的功能:当所有的常量表达式的值都不能和switch后的表达式的值匹配时,就执行default后面的语句。
break的作用:跳出switch语句。
Switch语句说明
多分支结构switch的应用—相关知识
My First Template
C语言
任务实现
多分支结构switch的应用—任务实现
My First Template
C语言
小组
根据出生年份判断多名学生属相
写任务
小组
输入学生成绩划分等级
用任务
读任务
个人
布置任务
BMI健康指数管理系统
多分支结构switch的应用—布置任务
My First Template
总结
1. 提出任务(判断属相)
2. 任务分析(除分支嵌套有其他实现)
3. 相关知识(switch语句)
4. 任务实现(逐个比较)
$$