第3章 选择结构

合集下载

第三节 选择结构

第三节 选择结构

第三节选择结构一、教材分析选择结构是VB程序设计的基本结构之一,在解决有条件选择问题上.具有自己的优势。

选择结构在数学分析中应用非常广,根据不同的可能性,设计不同的流程,执行不同的程序。

本节将通过一系列活动的实践使学生掌握实现选择结构的基本语句,了解控制选择结构程序执行的判断条件的构成。

本节的两个活动,在设计上具有一种递进关系,对同一个需要解决的问题采取条件变换的形式,实现由简单到多重选择结构程序语句的教学,然后通过多重选择结构程序与专用的多分支选择语句程序的对比分析和运行,让学生体验不同选择语句的适用情况。

存所有活动的实践过程中,对选择条件的处理贯穿始终,是学习选择结构的重要线索,能否对其充分理解,将直接关系到选择结构的学习效果。

活动一:用if语句实现简单选择结构。

本活动通过对书城发放购书券活动条件的分析,设计算法流程,根据流程完成程序编写,在设计的过程中使学生认识if语句,了解选择条件。

这样做旨在使学生通过算法分析与程序的执行情况,探究选择条件是如何控制程序的运行的。

活动二:用if语句的嵌套实现多重选择结构。

在日常生活中,我们经常涉及对复杂条件进行判断,本活动的设计就是使学生对活动一中条件进一步复杂化时也能分析设计,用if语句的嵌套实现多重选择结构,旨在让学生体验在程序中如何设计多重条件,学会如何利用多重条件控制选择结构程序的执行。

活动三:使用多重选择语句实现活动二的程序。

尽管用if语句能够实现多重选择结构,但是程序的可读性和效率较差,因此,VB提供了一种专用的多重选择语句,根据选择的条件,可以非常方便地进行多重选择程序设计,本活动通过学生阅读程序代码,了解该语句的使用过程及其相应的功能。

通过与活动二程序的对比分析,使学生了解每种语句的适用范围。

教学目标教学难点编者设计了三个活动,让学生对具体问题进行程序化设计,通过不同的选择语句实现对各种选择流程的控制。

学生能够使用选择语句实现各种选择流程的控制是本节的重点内容,其中,根据对问题的分析,设计决定选择程序执行不同流程的控制条件,是本节的难点。

第3章顺序和选择结构程序设计

第3章顺序和选择结构程序设计

3.3 C语句
1.表达式语句
任何一个表达式加上一个分号就可以组成一条
语句。

例如: 表达式 a=b+c*(d+3) a+b+c i++
表达式语句 a=b+c*(d+3); a+b+c; i++;

函数调用也是表达式,在其后加一个分 号,就变成了函数调用语句。
eg:printf函数调用语句和scanf函数调 用语句
-1.0 (x<0) y= 0 (x=0) 1.0 (x>0)
运行结果: -88 y=-1.000000
3.4.4
if语句的嵌套
条件语句的嵌套就是在if语句中包含另一 个if语句。 从语法上讲,if语句中所包含的语句是一 个语句或一个复合语句,这个语句当然也 可以是另一个if语句,即内嵌if语句。

3.1 程序设计概述




程序设计的最终目的是能在计算机上计算出正确的 结果来。 1969年,Dijkstra首先提出了结构程序设计的概念, 强调从程序的结构和风格上来研究和设计程序。 首先应从全局上把握系统所具备的功能是什么,并 将系统划分成几个相对独立的子系统,而每个子系 统只涉及局部的环境和条件。 然后,进入第二步的实现阶段,即进行编码。在第 一阶段,只要知道“做什么”,而在实现阶段,才 考虑“如何做”。
用交换变量值的方法按顺序输出这两个数


交换变量值的思想: 不改变变量名,但变量值可改变的性质。 若a的值大于b的值,则a与b的值不交换;若a的值 小于b的值,则两者互相交换值。从而使得无论何 时,变量a的值始终大于变量b的值。最后,按先a 后b的顺序输出,即可实现按由大到小的顺序输出 的功能。 实现方法: 为了能够进行相互交换,必须引进一个临时变量 t。用以下三个赋值语句可实现交换。 t=a; a=b;b=t; /*t=a,a=b,b=t;*/

语言选择结构文稿演示

语言选择结构文稿演示

int main() { int flag; //非0为真;0为假
上完体育课
scanf(“%d”,&flag); 是 if(flag!=0)
否 最后一节课
printf(“食堂吃饭”);
else
到食堂吃饭
进教室上课
printf(“进教室上课”);
return 0;
}
if语句的使用说明
if后面的表达式,一般为逻辑表达式或关系表达 式,也可以是一个变量、常量或函数调用。 if(a==b && x==y) /*逻辑表达式*/ printf(”a=b,x=y”);
单行书写
多行书写
有缩进
if(a>b) max=a; else max=b;
if(a>b) max=a; else max=b;
if(a>b) max=a;
else max=b;
推荐写法,这样层次 结构更清晰
【例】上完体育课,如果是上午最后一节课,下课
#i后nc去lu食de堂<s吃td饭io,.h否> 则进教室上课。
if(1) printf(”O.K.”); /*表达式为常量*/ if(a) printf(”%d”,a); /*表达式为变量*/ if(isprime(a)) … /*表达式为函数调用*/
if语句的使用说明
if语句各子句若仅有一条语句,则每个内嵌语句 遇分号结束。 if(x>0) printf(”%f”,x);建议:内嵌语句无 else printf(”%f”,-x); 论一条或多条,都 若内嵌语句包含多个语句时,必用须“用{}”花括括起号来。
return 0;
}
if语句实现的选择结构
if-else语句 if (表达式) 语句段1 else 语句段2

第3章 结构化程序设计语句

第3章  结构化程序设计语句

图3-16 程序运行界面
3.3.2 上机练习二:捉拿肇事司机 上机练习二:
【练习题目】 练习题目】 题目 一辆卡车违反交通规则,撞死行人, 一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃 当时有三个人目击这一车祸的发生, 跑。当时有三个人目击这一车祸的发生,但都没有看清卡 车的牌照号码,只记住牌照号码的部分特征, 车的牌照号码,只记住牌照号码的部分特征,甲记住牌照 号码的前两位数字是相同的, 号码的前两位数字是相同的,乙记住牌照号码的后两位数 字是相同的,丙是一位数学家,他说“ 字是相同的,丙是一位数学家,他说“车牌号码肯定是四 位数,而且恰好是一个整数的平方。 位数,而且恰好是一个整数的平方。”,并且丙已推导出 符合该条件的号码只可能有一个。 符合该条件的号码只可能有一个。根据这些信息来判定车 牌号并捉拿肇事司机。要求编写控制台应用程序。 牌号并捉拿肇事司机。要求编写控制台应用程序。
3.1 循序渐进学理论
3.1.1 if语句 语句
1.用if语句实现单分支选择结构 . 语句实现单分支选择结构 [格式 :(表达式 语句 格式]: 表达式 语句; 表达式) 格式
图3-1 单分支选择结构执行流 程图
编写一个程序实现如下功能: 【 例 3-1】 编写一个程序实现如下功能 : 输入一个成绩, 如果成绩大于等于60 60则输出 输入一个成绩 , 如果成绩大于等于 60 则输出 恭喜您,您通过了这次考试! “恭喜您,您通过了这次考试!”,否则不输 出任何信息。要求编写成控制台应用程序。 出任何信息。要求编写成控制台应用程序。
[格式2]:randomObj.Next(N) 格式2]: 2] 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(10 10) i=randomObj.Next(10); 其作用是产生一个0~9之间的随机整数并赋值给变量i 0~9之间的随机整数并赋值给变量 其作用是产生一个0~9之间的随机整数并赋值给变量i。 格式3] 3]: [格式3]:randomObj.Next(N,M) 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(5 10) i=randomObj.Next(5,10); 其作用是产生一个5~9之间的随机整数并赋值给变量i 5~9之间的随机整数并赋值给变量 其作用是产生一个5~9之间的随机整数并赋值给变量i。

C语言程序设计ppt课件-第3章-选择结构

C语言程序设计ppt课件-第3章-选择结构
1.表达式 2. if语句 3. switch语句 4. 选择结构的嵌套 5. 选择结构的应用
本章主要内容
1
选择结构
在解决大量的实际问题时,常常需要根据不同的 情况或条件,制定出不同的解决方案或对策。
选择结构是通过对条件 的判断来选择执行不同 的程序语句。
选择结构
一个程序若具有了判断和选择功 能,就具备了最基本的智能。
的完整的解题步骤。
void main() { int x,y,z,max;
printf("“\n Please input x,y,z: ");
➢将同影一响问到题算可法用乃不至同程算序法的解效决率,sifc(a。xm而n>afy(一一x)"=%x个个;d%算算d法法%d的的",&评质x价,量&y主优,&要z劣); 从时间复杂度和空间复杂度来els考e 虑。
max=y;
例从键盘输入三个不同的、无序if(mm的aaxx整<=zz)数; ,并分别存放 到变量x、y、z中,然后通过pr判int断f("输\n 出ma三x=%个d数\n"中,m的ax)最;
大数。要求将最大数存放在} 变量max中。
25
语法练习(单选题)
1.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中
switch语句的应用
关例键从语键句盘:上输入一个学生的总平均成 绩能用(i大f- e于ls0e且if来小替于换10吗0)? swi,tc按h(分(i数nt段)(评sc定or出e/成10绩.的0)相) 应等级,90以上为A级,80~
{89为caBs级e ,97:0~g7r9a为dCe=级'A,'6;0~br6e9a为k;D级,59以下为E级。 问题分ca析se:s8w:itchg语ra句de中='的B表';达b式re只ak能; 是整型或字符型,所 以可c用as成e 绩7的:高位gr数ad字e=来'C确';定b其re对a应k;的分数段,而每一个 分数c段as又e对6应:swigtrcha中de的='一D'路; 选br择ea。k;可用表达式“((int)(成 绩/1c0)a)s”e 计5算:出成绩的高位数字 ,其中,“(int)”的功能 是将c表as达e式的4:值强制转换成整数。

FORTRAN语言第3章(共8章)

FORTRAN语言第3章(共8章)

会再去执行。这一点同后面的SELECT CASE完
全不同。也就是说IF结构中的选择条件是允许重 叠的,但SELECT CASE语句不允许选择条件有 重叠。
第二节 块IF选择结构


1.ELSEIF语句其作用相当于将ELSE语句与其 后的ELSE块中的块IF语句连接在一起。 2.同块IF语句不同, ELSEIF语句与ENDIF语 句间不存在一一对应关系。 3.在这种IF结构中,允许使用多个ELSEIF语 句。在最后一个ELSEIF语句之后,可以有与 之对应的ELSE语句,也可以没有。当有 ELSE语句在最后时,表示如果前面所有的条 件都不成立,执行其后的ELSE块;如果没有 ELSE块,则表示如果前面所有的条件都不成 立时,流程转到ENDIF语句。
条 件 1 假 条 件 2 真 条 件 ...... 1 块 2 块 ...... 块 n 块 n +1 真 假 条 件 n 真 假 假
EN D IF 的 后 继 语 句
第二节 块IF选择结构
多重判断的IF结构中,判断条件的成立具有
唯一性。即一旦有判断条件成立,就去执行相应
的模块,如果其后仍有判断条件是成立的,也不
一个嵌套分支结构可使用若干个块 IF语句,相应就有若干个ENDIF语句,
每个块IF语句还可能使用一些ELSE
IF语句、ELSE语句,这就可能构成一 个复杂的IF-ELSEIF-THEN-ELSE结构。
当嵌套层次过多时,往往一时难以找
到同一层的块IF中的各语句,一般可 按以下方法确定: (1)从最内层的块IF语句开始,向下找到离它最近的ENDIF 语句,将它们用线括起来,这就是同一层次的块IF。 (2)由内向外重复这一个过程,直到遇见最外层块IF语句和 ENDIF语句为止。 (3)在书写嵌套分支结构时采取缩进方式进行程序书写,程 序的嵌套层次就容易确定。

C#第3章

C#第3章
单入口双分支 单入口三分支(如上面的if语句实现的选择结构) 单入口多分支(三个或三个以上的分支)
对于这些选择结构,除了可以利用if语句来实现以 外,还可以用switch语句来完成。
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
为表述方便,我们将if语句分为三种类型:
if…语句
C#程序设计教程——蒙祖强编著
Console.Write("请输入出行月份(1-12):"); 游客在其他月份出行,怎样出现提示信息? int mon = int.Parse(Console.ReadLine()); if (mon >= 5 && mon <= 10) { Console.WriteLine("旺季出行,机票不打折"); } else { Console.WriteLine("淡季出行,机票打折"); } Console.ReadLine();
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
【例3.3】 编写一个窗体应用程序,使之能够对给 定的实数进行四舍五入。 创建C#窗体应用程序Rounding,界面如下图:
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
——分段函数的实现
C#程序设计教程——蒙祖强编著
【例3.1】 构造一个C#控制台应用程序,使之实 现下列分段函数的功能:
3.1一个简单的选择结构程序
——分段函数的实现
C#程序设计教程——蒙祖强编著
3.1.1 创建C#控制台应用程序 创建一个控制台应用程序PiecewiseFunction:

选择与循环

选择与循环
• 观察example3_1.py和 question3_1.py程序运行结果的 异同。
• 并请思考:对于单分支结构的 程序,如何设计测试数据以验 证程序流程上没有错误。
3.1.2 双分支if/else语句
• 双分支if/else语句的语法形式如下所示:
if 条件表达式: 语句体1
else: 语句体2
#example3_1.py #coding=gbk import math r=input("请输入圆的半径:") r=eval(r)
if r>=0: d=2*math.pi*r s=math.pi*r**2 print('圆的周长=',d,'圆的面积=',s)
• 程序测试:运行程序 example3_1.py,请首先输入一个 大于等于0的半径,如5,观察程序 的运行结果。再次运行程序,请输 入一个小于0的半径,如-1,观察 程序的运行结果。
if t%400==0 or (t%4==0 and t%100!=0):
print(t,'年是闰年') else:
print(t,'年不是闰年')
• 例3-3:某金融企业为招聘职工,满足以下两个条件之一的求职者将会接到面试通知。
(1)25岁及以下且是重点大学“金融工程”专业的应届学生; (2)具备至少3年工作经验的“投资银行”专业人士。
if (age<=25 and college=="重点" and major=="金融工程" and jobtime==0) \ or (major=="投资银行" and jobtime>=3): print("欢迎您来参加面试!")
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南交通大学
单分支if语句 举例
【例3.1】比较a、b两个数的大小,将较大数赋给max。 法一: #include <stdio.h> 演示例3.1.1 int main(void) { int a,b,max; a=1;b=2; if(a>b) max=a; if(a<=b) max=b; printf("%d",max); return 0; } 该法思路较明确,接近我们平时的思维模式。
西南交通大学
单分支if语句 举例
法二: #include <stdio.h> int main(void) 演示例3.1.2 { int a,b,max; a=1;b=2; max=a; if(a<=b) max=b; printf("%d",max); return 0;} 该法的思路是: 假设max=a,判断if后的条件, 如果a<b,则执行max=b,输出的max为b的值; 如果a>b,则跳过max=b,直接执行print,输出max为a 的值。 西南交通大学
演示例3. 3
该题可用“条件运算”、“单分支if”、“双分支if”三种方法来做, 下面列出这几种语句的部分程序,请读者比较其语法结构上的区别: 用条件运算符做 max=(a>b)? a:b 用if单分支做 max=b; if(a>b) max=a; 用if双分支做 if(a>b) max=a; else max=b;
若 int a=3,b=2,c=1,f ;
表达式 a>b 结果 真 说明 a大于b,关系成立,即为真 先判断a>b,结果为真,即为1; 再判断1==c,关系成立,结果为真 先判断a>b,结果为真,即为1; 再判断1>c,关系不成立,结果为假 ,即为0; 最后将0赋给f
a>b==c

f=a>b>c printf(“%d”, 1>2);
西南交通大学
3.5.1 单分支if语句
1.语法格式 if(条件) 语句 2. 说明 (1)执行过程: 当条件为“真”时,执行语句; 为“假”时,跳过语句,而直接 执行整个if语句后的其它语句。 (2)条件中的结果为逻辑值。 (3)语句如果有多条语句,要用 一对花括号“{ }”将其括起来, 成为一个复合语句。
f=0
输出结果 1>2关系不成立,结果为假 为:0
西南交通大学
3.3 逻辑运算符与逻辑表达式
C语言提供了 三种逻辑运算符,分别为: ! 逻辑非 && 逻辑与 || 逻辑或
西南交通大学
3.3.1 逻辑表达式的值
逻辑表达式计算的结果为逻辑值,即“真”或“假”。 在C中表示逻辑运算结果, 1代表“真”;0代表“假”。 判断一个量是否为“真”时,非0为“真”; 0为“假”。 表达式 !a a&&b a||b 结果 当a为假时,结果为真;当a为真时,结果为假 当a和b都为真时,结果为真;其它情况都为假 当a和b都为假时,结果为假;其它情况都为真
西南交通大学
3.5.3 多分支if语句
1. 语法格式 if(条件1) 语句1 else if(条件2) 语句2 else if(条件3) 语句3 „„ else if(条件n) 语句n else语句n+1
西南交通大学
3.5.3 多分支if语句
2. 说明 (1)执行过程 当条件1成立时,执行语句1; 当条件1不成立时判断条件2; 当条件2成立时,执行语句2; 当条件2不成立时判断条件3; 以此类推;如果一直到条件n都不成立就执行语句n+1。 条件的判断有层级关系,是在前面条件不成立的情 况下才会判断后面的条件,比如当条件1成立后,执 行语句1,然后就直接跳出if语句,执行后面的其它 程序语句了,条件2、3等根本就不会被执行到。
如何用C语言的语句来描述呢? 借助关系表达式和逻辑表达式来实现:
(x>=30&&x<=100&&x%2==1)
如果x满足条件,整个表达式的的结果就为真; 如果x不满足条件,整个表达式的的结果就为假。
西南交通大学
3.2 关系运算符与关系表达式
1. C语言提供了六种关系运算符:
运算符 < <= 含义 小于 小于或等于 优先级相同 高 优先级
通过设计结构良好的程序,以程序的静态良好结构保 证程序动态执行的正确,使程序易理解、易调试、易 维护,以提高软件开发的效率,减少出错率。
2. 结构化程序设计的三个基本步骤 (1)分析问题
(2)画出程序的基本轮廓 (3)编写源码程序
西南交通大学
3.1 结构化程序设计
3.三种基本结构
西南交通大学
单分支if语句 举例
#include <stdio.h> int main(void) { int x0,x10,x100,x,t,max; printf("请输入一个三位数:"); scanf("%d",&x); x0=x%10,x10=x%100/10,x100=x/100; if(x100<x10) t=x100,x100=x10,x10=t; if(x100<x0) t=x100,x100=x0,x0=t; if(x10<x0) t=x10,x10=x0,x0=t; max=100*x100+10*x10+x0; printf("%d\n",max); return 0; }
西南交通大学
3.3.2 逻辑运算符的优先级和结合性
!→算术运算符→关系运算符→&&→||→赋值运算符 优先级相同时: &&和||从左向右算,即左结合; !为单目运算符,是右结合
例如: a=!b+2>=3||c+1<3 等效于 a=( ( ( (!b)+2)>=3) || ( (c+1)<3) ) 设b=3,c=1,则运算后a=1。
西南交通大学
3.5.2 双分支if语句
1. 语法格式 if(条件) 语句1 else 语句2 2. 说明 (1)执行过程: 当条件为“真”时, 执行语句1; 为“假”时,执行语 句2 。 (2)语句1和语句2都 可为复合语句。
西南交通大学
双分支if语句 举例
【例3.3】比较a、b两个数的大小,将较大数赋给max。 int a,b,max;a=1;b=2; if(a>b) max=a; else max=b; printf("%d",max);
3.关系运算符的结合性
优先级相同时,从左往右算,即左结合。如: a>b>c==d等效于((a>b)>c)==d
西南交通大学
3.2 关系运算符与关系表达式
4.关系表达式的值
关系表达式的结果为逻辑值,即“真”或“假”。
在C中表示逻辑值,1代表“真”;0代表“假”。
西南交通大学
3.2.3 举例
西南交通大学
3.4 条件运算符和条件表达式
条件运算符 ? : 是C语言中唯一的三目运算符。 表达式形式为: 表达式1? 表达式2: 表达式3 例如: 两个数a、b求最大,将较大数赋给max。 表达式为:max=(a>b)? a:b
西南交通大学
3.4.2 条件运算符的优先级和结合性
1. 条件运算符优先级高于赋值、逗号运算符, 低于其它运算符 。 例如: (1)m<n ? x : a+3 等效于: (m<n) ? x :(a+3) (2)a++>=10 && b-->20 ? a : b 等效于: (a++>=10 && b-->20) ? a : b (3)x=3+a>5 ? 100 : 200 等效于: x= (( 3+a>5 ) ? 100 : 200 )
有缩进 if(a>b) max=a; else max=b;
推荐写法,这样层次 结构更清晰
西南交通大学
双分支if语句 举例
【例3.4】判断用变量year表示的某年是否为闰年。
#include <stdio.h> 演示例3. 4 int main(void) if{ 后的条件可以不用写==1,直接写成: int year; if(year%4==0&&year%100!=0||year%400==0) printf("请输入年份:"); scanf("%d",&year); if((year%4==0&&year%100!=0||year%400==0)==1) printf("是闰年\n"); else printf("不是闰年\n"); return 0; }
西南交通大学
3.3.3 举例
用C语言表达式表示下列条件: (1)x的取值区间为[a,b] 表达式:(x>=a&&x<=b)==1 (2)变量c不是数字字符 表达式:(c<‘0’||c>‘9’)==1 (3)a是大于30,且不大于100的奇数 表达式:(a>30&&a<=100&&a%2!=0)==1 (4)year为闰年 表达式: ((year%4==0&&year%100!=0)||(year%400==0))==1
本章介绍选择结构。
选择结构也叫分支结构,它的作用是根据给定的条 件是真还是假,决定后面的操作或做进一步的判断。
相关文档
最新文档