第04章 分支结构.ppt
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 用伪代码表示算法。 介于自然语言和计算机语言之间的文字和符 号来描述算法。
5. 用计算机语言表示算法。 算法的最终实现。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
流程图的基本图形符号:
图形符号
名称
代表的操作
输出/输入 数据的输入与输出
处理
各种形式的数据处理
2) 复合语句内通常有多个语句,但它整体 上是作为一个语句看待。
3) 在程序中凡是可以出现语句的地方都可 以使用复合语句。它通常出现在控制语 句(选择、循环)中作为子句或循环体。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
4. 函数调用语句:由一个函数调用加上一 个分号组成,如:
例3:
if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);}; else {printf(“%d\n”,b); printf(“%d\n”,a);}
错误!
相当于多 了一个空 语句,从 而else没有 if配对。
若在此处添加一个 “ ;” 号 , 则 没 有 影响 。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
运行结果:
①请输入24小时制时间:18:30 12小时制时间为4:30P ②请输入24小时制时间:8:14 12小时制时间为8:14A
因为输入的24小时制时间为18:30,使得 hour=18,minute=30,则if的条件表达式 hour>12为真,条件成立,所以进行时间 转换。
||year%400==0) printf(”%d是闰年”,year); }
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
判断闰年的两个条件是用一个逻辑表达式来表 示的,若表达式的值为真,则year为闰年,否 则为平年。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
第 4章
分支结构
语句概述 问题的引出 if语句 件语句形式: if (<表达式>) <语句1>
执行过程:如果<表达式>的值不为零, 执行<语句1>,否则什么也不执行,跳 到if语句的下面,继续执行程序中的其 它语句。缺省else时的条件分支语句, 也 经常使用。
【例4.1】给出圆的半径r、高度h,求圆柱体体
积和圆柱体全面积 。
#include <stdio.h>
main()
{ float r,h,v,s;
r=1.5; h=2;
执
v=3.14*r*r*h;
行 顺
s=2*3.14*r*(h+r);
序
printf(”圆柱体体积为%8.2f \n圆柱体全面
积为%8.2f\n”,v,s);
不同于
if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);}
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
例2:
if (a>b) printf(“%d\n”,a); printf(“%d\n”,b); else printf(“%d\n”,b); printf(“%d\n”,a);
C语言提供两种分支判断语句:
if语句
switch语句
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
算法和流程图
沃思: 程序=数据结构+算法
实际上:程序=算法+数据结构+程序设计方法+ 语言工具和环境
➢算法:广义地说,为解决一个问题而 采取的方法和步骤。 ➢计算机算法分类:数值运算算法、非 数值运算算法。
if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);} else {printf(“%d\n”,b); printf(“%d\n”,a);}
编 译 出 错 ! ( else 没有if配对)
正确!
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
4.4 if语句的嵌套
4.4.1 嵌套的引出 4.4.2 算法和流程图 4.4.3 if语句嵌套形式的多样性 4.4.4 if与else的配对规则 4.4.5 嵌套举例
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【例4.6】猜数程序,和预定的数比较,并给出相应的提示
5. 有效性:每一个步骤应当能有效地执行,并 得到确定的结果。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
算法的表示方法:
1. 用自然语言表示算法。
2. 用流程图表示算法。 基本流程图符号
3. 用N—S流程图表示算法。 全部算法写在一个矩形框内,没有流程线, 框内还可包含其它的框。
if语句的一般形式: if (<表达式>) <语句1> [else <语句2>]
注:[ ]内的表示是可选的 。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
流程图:
T
F
表达式
语句1
语句2
作用:实现二分支结构
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
}
运行结果:
圆柱体积为 14.13
圆柱全面积为 32.97
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
此结构属于顺序结构,程序自上而下执行,
程序中的每一个语句都被执行一次,而且只能
被执行一次。 然而,只有顺序结构,无法编制出更复杂、
功能更强的程序,计算机经常要根据某些条件 进行逻辑判断,以决定进行不同的处理。这种 结构叫选择结构或分支结构。为此,C语言提供 了进行分支判断的语句。
(计算机什么也不做) 3.复合语句:由“{”和“}”把一些变量说明
和 语句组合在一起 ,又称语句块。如:
{int a=3,b=10,sum;
sum=a+b; printf(”%d”,sum); }
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
注:
1) 复合语句本身是一个完整的语句,它不 以分号作为结束符。“}”后加了分号相 当于多了一个空语句。对这种情况,有 时对程序流程没有影响,但有时会改变 程序流程。
处理B
选择结构和循环结构的流程图后面陆续介绍。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
4.3 if语句
4.3.1 if语句的一般形式 4.3.2 if语句的缺省形式 4.3.3 较复杂的条件表达式
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
#include <stdio.h> main() {
int hour,minute; char noon; noon=’A’; printf(“请输入24小时制时间:”); scanf(“%d:%d”,&hour,&minute); if(hour>12)
{hour-=12; noon=’P’;
} printf(“12小时制时间为:%d:%d%c”, hour,minute,noon); }
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【例4.4】判断某一年是否为闰年。 判断闰年的条件:
或
程序:
能被4整除,但不能被100整除 能被400整除
#include ”stdio.h” main() { int year; scanf(”%d”,&year); if (year%4==0&&year%100!=0
if语句嵌套的一般形式:
if( ) if( )语句1 else 语句2
else if( )语句3 else 语句4
由if子句和else子句是否是if语句,可形成多 种形式的if语句嵌套。如:if-else-if形式、if-ifelse形式。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
流程图:
表达 式 T 语句1
实际上是二分支中 的另一分支为空
F
作用:实现单分支
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【例4.3】编程将用户输入的24小时制时间转换成12小时制 输出。
}
语句
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
程序中供选择的情况多于两个时使用两个 以上if语句来进行判断。 if语句的嵌套:在一个if语句中
包含另一个if语句 内嵌的if语句既可以嵌套在if子句中, 也可以嵌套在else子句中。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
printf(”This is a function call”);
5. 控制语句,共有9种,即:
⑴if语句 ⑵switch语句 ⑶while语句 ⑷do-while语句 ⑸for语句 ⑹break语句 ⑺continue语句 ⑻goto语句 ⑼return语句
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
判断
判断选择,根据条件满 足与否选择不同的路径
起止
流程的起点与终点
特定过程 流程线 连接点
一个定义过的过程, 如函数
连接各个图框,表示执 行顺序
表示与流程图其它部分 相连接
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
程序设计有三种基本结构: 顺序结构、选择结构、循环结构 顺序结构的流程图: 处理A
if (n>=50) amount=price*n*0.9; /* 语句A*/
else amount=price*n; /* 语句B*/
printf(”amount=%.2f”,amount);
}
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
该程序执行的过程是: 判断商品数量, 数量大于等于50,执行语句A; 数量小于50,执行语句B。
【例4.2】某种商品单价2.5元,买50个以上可 以打9折。输入购买的数量,计算出总价格。
#include <stdio.h>
main() { int n;/*商品数量*/
float price,amount;/*单价和总价*/
price=2.5; printf(”请输入商品数量:”); scanf(”%d”,&n);
子句是由多个语句组成,必须写成复合 语句(用{ }括住),“}”后不能再加 “;” (5)if语句的表达式可以是任意类型的 C语言的合法的表达式
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
例1: if (a>b) printf(“%d\n”,a); printf(“%d\n”,b);
#include <stdio.h>
main()
{
int number=200;
int i;
scanf(“%d”,&i);
if(i>number)
printf(“It’s large.”);
else
if(i<number)
printf(“It’s small.”);
一个
else
完整
printf(“It’s correct.”); 的if
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
C语言的语句可以分为五大类: 1. 表达式语句: 表达式的后面加一个分号
⑴ 赋值语句。 ⑵ 自加减运算符构成的表达式语句。 ⑶ 逗号表达式语句 注:有些表达式语句是没有意义的。如: x+y;a>b?a:b;
2. 空语句: 只有一个分号,作为语句结束符
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
算法的特性:
1. 有穷性:操作步骤有限、计算机执行用时合 理。
2. 确定性:每一步骤不能含糊、不能模棱两可。
3. 有零个或多个输入。程序的功能实际上是: 数据输入→数据处理→数据输出
4. 有一个或多个输出。没有输出的算法是没有 意义的。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【注意】 (1)if后面的<表达式>一定要有括号。 (2)if和else同属于一个if语句,程序中不可
以没有if而只有else。 (3)if语句与else语句不可能同时执行。 (4) if语句中的各子句必须用分号结束,若
5. 用计算机语言表示算法。 算法的最终实现。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
流程图的基本图形符号:
图形符号
名称
代表的操作
输出/输入 数据的输入与输出
处理
各种形式的数据处理
2) 复合语句内通常有多个语句,但它整体 上是作为一个语句看待。
3) 在程序中凡是可以出现语句的地方都可 以使用复合语句。它通常出现在控制语 句(选择、循环)中作为子句或循环体。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
4. 函数调用语句:由一个函数调用加上一 个分号组成,如:
例3:
if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);}; else {printf(“%d\n”,b); printf(“%d\n”,a);}
错误!
相当于多 了一个空 语句,从 而else没有 if配对。
若在此处添加一个 “ ;” 号 , 则 没 有 影响 。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
运行结果:
①请输入24小时制时间:18:30 12小时制时间为4:30P ②请输入24小时制时间:8:14 12小时制时间为8:14A
因为输入的24小时制时间为18:30,使得 hour=18,minute=30,则if的条件表达式 hour>12为真,条件成立,所以进行时间 转换。
||year%400==0) printf(”%d是闰年”,year); }
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
判断闰年的两个条件是用一个逻辑表达式来表 示的,若表达式的值为真,则year为闰年,否 则为平年。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
第 4章
分支结构
语句概述 问题的引出 if语句 件语句形式: if (<表达式>) <语句1>
执行过程:如果<表达式>的值不为零, 执行<语句1>,否则什么也不执行,跳 到if语句的下面,继续执行程序中的其 它语句。缺省else时的条件分支语句, 也 经常使用。
【例4.1】给出圆的半径r、高度h,求圆柱体体
积和圆柱体全面积 。
#include <stdio.h>
main()
{ float r,h,v,s;
r=1.5; h=2;
执
v=3.14*r*r*h;
行 顺
s=2*3.14*r*(h+r);
序
printf(”圆柱体体积为%8.2f \n圆柱体全面
积为%8.2f\n”,v,s);
不同于
if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);}
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
例2:
if (a>b) printf(“%d\n”,a); printf(“%d\n”,b); else printf(“%d\n”,b); printf(“%d\n”,a);
C语言提供两种分支判断语句:
if语句
switch语句
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
算法和流程图
沃思: 程序=数据结构+算法
实际上:程序=算法+数据结构+程序设计方法+ 语言工具和环境
➢算法:广义地说,为解决一个问题而 采取的方法和步骤。 ➢计算机算法分类:数值运算算法、非 数值运算算法。
if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);} else {printf(“%d\n”,b); printf(“%d\n”,a);}
编 译 出 错 ! ( else 没有if配对)
正确!
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
4.4 if语句的嵌套
4.4.1 嵌套的引出 4.4.2 算法和流程图 4.4.3 if语句嵌套形式的多样性 4.4.4 if与else的配对规则 4.4.5 嵌套举例
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【例4.6】猜数程序,和预定的数比较,并给出相应的提示
5. 有效性:每一个步骤应当能有效地执行,并 得到确定的结果。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
算法的表示方法:
1. 用自然语言表示算法。
2. 用流程图表示算法。 基本流程图符号
3. 用N—S流程图表示算法。 全部算法写在一个矩形框内,没有流程线, 框内还可包含其它的框。
if语句的一般形式: if (<表达式>) <语句1> [else <语句2>]
注:[ ]内的表示是可选的 。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
流程图:
T
F
表达式
语句1
语句2
作用:实现二分支结构
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
}
运行结果:
圆柱体积为 14.13
圆柱全面积为 32.97
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
此结构属于顺序结构,程序自上而下执行,
程序中的每一个语句都被执行一次,而且只能
被执行一次。 然而,只有顺序结构,无法编制出更复杂、
功能更强的程序,计算机经常要根据某些条件 进行逻辑判断,以决定进行不同的处理。这种 结构叫选择结构或分支结构。为此,C语言提供 了进行分支判断的语句。
(计算机什么也不做) 3.复合语句:由“{”和“}”把一些变量说明
和 语句组合在一起 ,又称语句块。如:
{int a=3,b=10,sum;
sum=a+b; printf(”%d”,sum); }
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
注:
1) 复合语句本身是一个完整的语句,它不 以分号作为结束符。“}”后加了分号相 当于多了一个空语句。对这种情况,有 时对程序流程没有影响,但有时会改变 程序流程。
处理B
选择结构和循环结构的流程图后面陆续介绍。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
4.3 if语句
4.3.1 if语句的一般形式 4.3.2 if语句的缺省形式 4.3.3 较复杂的条件表达式
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
#include <stdio.h> main() {
int hour,minute; char noon; noon=’A’; printf(“请输入24小时制时间:”); scanf(“%d:%d”,&hour,&minute); if(hour>12)
{hour-=12; noon=’P’;
} printf(“12小时制时间为:%d:%d%c”, hour,minute,noon); }
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【例4.4】判断某一年是否为闰年。 判断闰年的条件:
或
程序:
能被4整除,但不能被100整除 能被400整除
#include ”stdio.h” main() { int year; scanf(”%d”,&year); if (year%4==0&&year%100!=0
if语句嵌套的一般形式:
if( ) if( )语句1 else 语句2
else if( )语句3 else 语句4
由if子句和else子句是否是if语句,可形成多 种形式的if语句嵌套。如:if-else-if形式、if-ifelse形式。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
流程图:
表达 式 T 语句1
实际上是二分支中 的另一分支为空
F
作用:实现单分支
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【例4.3】编程将用户输入的24小时制时间转换成12小时制 输出。
}
语句
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
程序中供选择的情况多于两个时使用两个 以上if语句来进行判断。 if语句的嵌套:在一个if语句中
包含另一个if语句 内嵌的if语句既可以嵌套在if子句中, 也可以嵌套在else子句中。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
printf(”This is a function call”);
5. 控制语句,共有9种,即:
⑴if语句 ⑵switch语句 ⑶while语句 ⑷do-while语句 ⑸for语句 ⑹break语句 ⑺continue语句 ⑻goto语句 ⑼return语句
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
判断
判断选择,根据条件满 足与否选择不同的路径
起止
流程的起点与终点
特定过程 流程线 连接点
一个定义过的过程, 如函数
连接各个图框,表示执 行顺序
表示与流程图其它部分 相连接
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
程序设计有三种基本结构: 顺序结构、选择结构、循环结构 顺序结构的流程图: 处理A
if (n>=50) amount=price*n*0.9; /* 语句A*/
else amount=price*n; /* 语句B*/
printf(”amount=%.2f”,amount);
}
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
该程序执行的过程是: 判断商品数量, 数量大于等于50,执行语句A; 数量小于50,执行语句B。
【例4.2】某种商品单价2.5元,买50个以上可 以打9折。输入购买的数量,计算出总价格。
#include <stdio.h>
main() { int n;/*商品数量*/
float price,amount;/*单价和总价*/
price=2.5; printf(”请输入商品数量:”); scanf(”%d”,&n);
子句是由多个语句组成,必须写成复合 语句(用{ }括住),“}”后不能再加 “;” (5)if语句的表达式可以是任意类型的 C语言的合法的表达式
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
例1: if (a>b) printf(“%d\n”,a); printf(“%d\n”,b);
#include <stdio.h>
main()
{
int number=200;
int i;
scanf(“%d”,&i);
if(i>number)
printf(“It’s large.”);
else
if(i<number)
printf(“It’s small.”);
一个
else
完整
printf(“It’s correct.”); 的if
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
C语言的语句可以分为五大类: 1. 表达式语句: 表达式的后面加一个分号
⑴ 赋值语句。 ⑵ 自加减运算符构成的表达式语句。 ⑶ 逗号表达式语句 注:有些表达式语句是没有意义的。如: x+y;a>b?a:b;
2. 空语句: 只有一个分号,作为语句结束符
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
算法的特性:
1. 有穷性:操作步骤有限、计算机执行用时合 理。
2. 确定性:每一步骤不能含糊、不能模棱两可。
3. 有零个或多个输入。程序的功能实际上是: 数据输入→数据处理→数据输出
4. 有一个或多个输出。没有输出的算法是没有 意义的。
第 4章
分支结构
语句概述 问题的引出 if语句 if语句的嵌套 switch语句
【注意】 (1)if后面的<表达式>一定要有括号。 (2)if和else同属于一个if语句,程序中不可
以没有if而只有else。 (3)if语句与else语句不可能同时执行。 (4) if语句中的各子句必须用分号结束,若