第章选择结构程序设计.ppt
《第章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第章选择结构程序设计.ppt(64页珍藏版)》请在三一文库上搜索。
1、,第3章 选择结构程序设计,顺序结构程序由各种基本语句组成,并严格按照语句的书写顺序执行。在解决实际问题的过程中,常常需要程序根据对某个特定条件的测试来决定下一步要进行的操作。为此,C 语言提供了可以进行程序流程选择控制的语句,这些语句构成的程序结构称为选择结构,也称为分支结构,是结构化程序设计的三种基本结构之一。本章主要介绍选择结构语句。,3.1 选择结构的概念 3.2 if语句 3.3 switch 语句 3.4 程序举例,第 3 章,第3章 选择结构程序设计,3.1 选择结构的概念,到目前为止,所介绍的程序都属于顺序结构,顺序结构程序中的所有语句都将被按照书写的顺序执行一次。但是在实际应
2、用中,常常需要根据不同情况选择不同的执行语句,这时需要设计分支结构。 例如,在前面我们介绍了用海伦公式求三条边长分别为 3、4、5 的三角形的面积。该程序的局限性很大,它不能判别三边长度是否满足构成三角形的条件。为此,将该问题的算法用流程图和N-S图描述,如图3-1所示。,图3-1 使用海伦公式求三角形面积的流程图和N-S图描述,3.1 选择结构的概念,#include #include void main() float a,b,c,p,s; /* 定义单精度实型变量a,b,c,p,s */ printf(“input a,b,c=“); /* 输出提示信息 */ scanf(“%f,%f,
3、%f“, ,3.1 选择结构的概念,程序运行结果: input a,b,c=3,4,5 s=6.00 input a,b,c=0,2,3 data error! input a,b,c=9,2,4 data error!,此程序在执行时,由用户键入三角形的三边长度,通过程序第7行“if()”判断输入数据是否满足构成三角形的条件:所有的边长大于0,并且所有两边之和均要大于第三边。若满足,则计算并输出结果;反之,只要其中有一个条件不满足,就不能构成三角形,程序输出“data error!”出错信息。 在C语言中,当需要根据选择条件来确定程序的执行流程,选择某一个分支来执行,这样的程序结构被称为选择
4、结构(分支、结构)。C语言提供了两种控制语句来实现这种选择结构:if条件语句和switch开关语句。,3.1 选择结构的概念,3.2 if 语句,选择结构程序设计中条件语句的作用是,使程序按某种条件有选择地执行一条或多条语句。用if语句可以构成选择(分支)结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C语言的if语句有三种基本形式。,3.2 if语句,3.2.1 if语句的三种形式 1. 第一种形式(单分支选择结构) 语句格式如下: if(表达式) 语句; 语句功能:首先计算表达式的值,若表达式的值为真(非0),则执行语句;若表达式的值为假(0),则该语句不起作用,继续执行下面的语
5、句。其流程图和N-S图描述,如图3-2所示。,例3.1 任意输入两个整数,输出其中的大数。,(a) 流程图描述,(b) N-S图描述,3.2 if语句,程序运行结果: input a,b=5,3 max=5,#include void main() int a,b,max; /* 定义整型变量a,b,max */ printf(“input a,b=“); /* 输出提示信息 */ scanf(“%d,%d“, /* 输出max的值 */ ,3.2 if语句,例3.2 输入一个成绩,当成绩60时,输出“Pass!”,否则什么都不输出。,#include void main() float sc
6、ore; /* 定义整型变量score,用以表示成绩 */ printf(“input score:“); /* 输出提示信息 */ scanf(“%f“, /* 成绩大于等于60分,输出Pass! */ ,程序运行结果: input score:75 Pass! /* 成绩大于等于60分输出Pass! */ input score:55 /* 成绩小于60分什么都不输出 */ input score:95 Pass! /* 成绩大于等于60分输出Pass! */,3.2 if语句,2第二种形式(双分支选择结构) 语句格式: if(表达式) 语句1; else 语句2; 语句功能:首先计算表达
7、式的值,若表达式的值为真(非0),则执行语句1,否则执行语句2。流程图和NS图描述如图所示。,(a) 流程图描述,(b) N-S图描述,3.2 if语句,例3.3 任意输入两个整数,输出其中的大数。,(a) 流程图描述,(b) N-S图描述,3.2 if语句,#include void main() int a,b; /* 定义整型变量a,b */ printf(“input a,b=“); /* 输出提示信息 */ scanf(“%d,%d“, /*若a=b,则把b赋给max并输出*/ ,程序运行结果: input a,b=33,55 max=55,3.2 if语句,例3.4 输入一个成绩,
8、当成绩60时,输出“Pass!”,否则输出“Fail!”。,#include void main() float score; /* 定义整型变量score,用以表示成绩 */ printf(“input score:“); /* 输出提示信息 */ scanf(“%f“, /* 成绩小于60分,输出Fail! */ ,程序运行结果: input score:75 Pass! input score:55 Fail!,3.2 if语句,3第三种形式(多分支选择结构) 前两种形式的if语句一般用于两个分支的情况。当有多个分支选择时,可采用下列多分支选择结构。 语句格式: if(表达式1) 语句
9、1; else if(表达式2) 语句 2; else if(表达式3) 语句 3; else if(表达式n) 语句 n; else 语句 n+1;,语句功能:首先计算表达式1的值,若表达式1的值为真(非0),则执行语句1,否则计算表达式2的值,若表达式2的值为真(非0),则执行语句2,否则计算表达式3的值,若表达式3的值为真(非0),则执行语句3,所有的表达式的值都是0时,执行语句n+1。,3.2 if语句,(a) 流程图描述,3.2 if语句,图3-6 多分支选择结构的执行过程,(b) N-S图描述,3.2 if语句,例3.5 输入一个成绩,当成绩60时,输出“Fail!”;当成绩在60
10、69之间时,输出“Pass!”;当成绩在7079之间时,输出“Good!”;当成绩80时,输出“Very Good!”。,(a) 流程图描述,(b) N-S图描述,3.2 if语句,#include void main() float score; printf(“input score:“); scanf(“%f“, /*成绩大于等于80分,输出Very Good! */ ,程序运行结果: input score:55 Fail! input score:65 Pass! input score:95 Very Good!,3.2 if语句,关于if语句的说明和注意事项: 表达式一般为关系表
11、达式或逻辑表达式,C语言在进行判断时,只要表达式的值不为0,就认为是真。因此,表达式可以是任意类型的表达式(整型、实型、字符型等)。例如: if(c=getchar( ) printf(“%c“,c); 输入一个字符,赋给变量c,只要输入的不是0,就输出输入的字符。,3.2 if语句,关于if语句的说明和注意事项: 当条件表达式是一个简单变量时,常用如下两种简 化形式。 例如: if(x!=0) 可简化成 if(x) if(x=0) 可简化成 if(!x) if语句中的“语句”从语法上讲只能是一条语句,而不能有多条语句。如果有多条语句的话,就要用花括号括起来组成一个复合语句。,3.2 if语句
12、,例3.6 任意输入2个整数,按代数值从小到大的顺序输出这2个整数。,#include void main() int a,b,t; /* 定义整型变量a,b,t */ printf(“input a,b=“); /* 输出提示信息 */ scanf(“%d,%d“, /* 输出a,b的值 */ ,程序运行结果: input a,b=55,33 33 55,3.2 if语句,在程序中,如果将 if(ab) t=a; a=b; b=t; 写成: if(ab) t=a; a=b; b=t; 当a=55、b=33时,执行后可得到a=55和b=33。 当a=33、b=55时,执行ab为假,t=a不被执
13、行,但a=b和b=t要执行,若t没有赋过值,则会出错。,#include void main() int a,b,t; printf(“input a,b=“); scanf(“%d,%d“,例3.6 任意输入2个整数,按代数值从小到大的顺序输出这2个整数。,3.2 if语句,在 if 语句中又包含一个或多个if语句,称为 if 语句的嵌套。其一般形式如下: if(表达式1) if(表达式2) 语句1; else 语句2; else if(表达式3) 语句3; else 语句4;,3.2.2 if 语句的的嵌套,3.2 if语句,3.2 if语句,在嵌套的if语句中规定,else总是与它上面最
14、近的尚未与else配对的if配对。因此,在使用if语句嵌套的时候,应当注意if与else的配对关系。例如,对于下面的形式: if(表达式1) if(表达式2) 语句1; else if(表达式2) 语句2; else 语句3;,程序设计者希望第三行的else与第一行的if对应,但实际上else总是与它前面最近的未配对的if配对,因此第三行的else是与第二行的if配对,因为它们相距最近。所以内嵌套的if语句也包含else部分,如果if与else的数目不能一致,为实现程序设计者的意图,可以加花括号来确定配对关系。例如: if(表达式1) if(表达式2) 语句1; else 语句2;,3.2 i
15、f语句,例3.7 修改例3.4,排除不可能的分数。 例 3.4 并不是一个完整的程序,它要求输入的分数应该是 0100 之间,否则不能给出正确结果。例如输入 -5 或 101 ,都将被认为是不正确的。使用嵌套的 if 语句则可以排除不可能的分数。,3.2 if语句,#include void main() float score; /* 定义整型变量score,用以表示成绩 */ printf(“input score:“); /* 输出提示信息 */ scanf(“%f“, /*提示输入数据有误*/ ,程序运行结果: input score:75 Pass! input score:155
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选择 结构 程序设计
链接地址:https://www.31doc.com/p-2541847.html