第3章 选择结构
第三节 选择结构
第三节选择结构一、教材分析选择结构是VB程序设计的基本结构之一,在解决有条件选择问题上.具有自己的优势。
选择结构在数学分析中应用非常广,根据不同的可能性,设计不同的流程,执行不同的程序。
本节将通过一系列活动的实践使学生掌握实现选择结构的基本语句,了解控制选择结构程序执行的判断条件的构成。
本节的两个活动,在设计上具有一种递进关系,对同一个需要解决的问题采取条件变换的形式,实现由简单到多重选择结构程序语句的教学,然后通过多重选择结构程序与专用的多分支选择语句程序的对比分析和运行,让学生体验不同选择语句的适用情况。
存所有活动的实践过程中,对选择条件的处理贯穿始终,是学习选择结构的重要线索,能否对其充分理解,将直接关系到选择结构的学习效果。
活动一:用if语句实现简单选择结构。
本活动通过对书城发放购书券活动条件的分析,设计算法流程,根据流程完成程序编写,在设计的过程中使学生认识if语句,了解选择条件。
这样做旨在使学生通过算法分析与程序的执行情况,探究选择条件是如何控制程序的运行的。
活动二:用if语句的嵌套实现多重选择结构。
在日常生活中,我们经常涉及对复杂条件进行判断,本活动的设计就是使学生对活动一中条件进一步复杂化时也能分析设计,用if语句的嵌套实现多重选择结构,旨在让学生体验在程序中如何设计多重条件,学会如何利用多重条件控制选择结构程序的执行。
活动三:使用多重选择语句实现活动二的程序。
尽管用if语句能够实现多重选择结构,但是程序的可读性和效率较差,因此,VB提供了一种专用的多重选择语句,根据选择的条件,可以非常方便地进行多重选择程序设计,本活动通过学生阅读程序代码,了解该语句的使用过程及其相应的功能。
通过与活动二程序的对比分析,使学生了解每种语句的适用范围。
教学目标教学难点编者设计了三个活动,让学生对具体问题进行程序化设计,通过不同的选择语句实现对各种选择流程的控制。
学生能够使用选择语句实现各种选择流程的控制是本节的重点内容,其中,根据对问题的分析,设计决定选择程序执行不同流程的控制条件,是本节的难点。
第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-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章-选择结构
本章主要内容
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章)
会再去执行。这一点同后面的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章
对于这些选择结构,除了可以利用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:
选择与循环
• 并请思考:对于单分支结构的 程序,如何设计测试数据以验 证程序流程上没有错误。
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("欢迎您来参加面试!")
Fortran教程第三章 选择结构程序设计
所作的处理在其后的块语句中完成。
(3)case default与其后的默认块,是缺省情况,可有可无。
如果加入它,则代表前面所有选择表达式的值皆非的情况下 执行该块。 (4)end select为case结构结束的标志。
例3.3、设计程序,完成小学加、减、乘、除四则运算, 即输入两个数,再输入一个运算符号,做对应的运算,
program exam
implicit none integer n
read *, n
if ( mod(n,3)==0.and.mod(n,5)==0 ) then print *,’该数能同时被3和5整除。’
else
print *,’该数不能同时被3和5整除。’ endif end
块IF结构的组成
program exam3 real g read *,g if (g>=90) then print *,“优秀”
else if( g>=80) then
print *,"良好" else if( g>=60) then
print *, "通过"
else print *,"不及格" endif end
FORTRAN所用的基本逻辑运算有:
.AND.
.EQV.
.OR.
.NEQV.
.NOT.
.XOR.
(1)逻辑与,运算符.AND. 当连接的两个逻辑操作数为真时, 逻辑表达式取值为真,只要一个为假则取假。例如数学表达式 1<X<2,在FORTRAN中应写成逻辑表达式:X>1.AND.X<2。
(2)逻辑或,运算符为.OR. 连接的两个逻辑操作数只要有一个 为真时,逻辑表达式取值为真,全部为假时才为假。例如|X|>5,
VB6.0教程第3章
Data是3的倍数 是 的倍数
3.1 选择结构-If条件语句 If条件语句
2. If <表达式 Then <语句 Else <语句 表达式> 语句1> 语句2> 表达式 语句 语句
例如, 例如, Data = InputBox("请输入成绩:") 请输入成绩: 请输入成绩 If Data >= 90 Then Print "优秀" Else Print "合格" 优秀" 合格" 优秀 合格 Print "计算完毕 计算完毕" 计算完毕
B = InputBox("B值") 值 Print A, B If A < B Then T=A:A=B: B=T End If Print A, B
返回目录
3.1 选择结构-If条件语句 选择结构-If条件语句
4. If语句嵌套 语句嵌套
If语句嵌套使用可形成多分支的条件语句结构 语句嵌套使用可形成多分支的条件语句结构 If <条件表达式 Then 条件表达式1> 条件表达式 <语句 语句1> 语句 ElseIf <条件表达式 Then 条件表达式2> 条件表达式 <语句 语句2> 语句 Else 说明: 说明: <语句 语句3> 语句 ElseIf 之间不要加空格 End If Else和位于其上方的最近的 If 配对 和位于其上方的最近的Fra bibliotek工作原理
Yes
循环变量=初值 循环变量 初值
循环变量超出范围? 循环变量超出范围? No 循环体 循环变量增加一个步长
返回目录
3.2 循环语句-For…Next循环 循环语句-For…Next循环
VB第3章第3节2-Select语句
第3章 面向对象程序设计——第3节 2 选择结构语句
程序: Dim Num1 As Integer, Num2 As Integer Dim SExp As String Dim Result Dim NOk%, NError%
'两个操作数 '计算结果
'统计计算正确与错误数
Private Sub Button2_Click(……) Handles Button2.Click
Txtoutput.Text = "---------------"
Txtoutput.Text = Txtoutput.Text & vbCrLf & “一共计算 ” & _
(NOk + NError) & " 道题" Txtoutput.Text = Txtoutput.Text & vbCrLf & “得分: ” & _ Int(NOk / (NOk + NError) * 100) & "分"
第3章 面向对象程序设计——第3节 2 选择结构语句
(7)计算机执行Select Case语句的过程: 计算测试表达式的值并与语句中各Case子句中 表达式的值进行比较。如果相等,就执行与该 Case相关联的语句。
若没有一个Case子句的值与测试表达式的值相
等,则执行Case Else部分的语句。 若无Case Else部分,则直接执行Select Case语句的后 继语句。
No
Case ② Yes 语句块2
No
Case ③ Yes 语句块3
No (Case Else)
语句块4
第三章 pascal选择结构程序设计
第三章 选择结构程序设计在许多情况下,语句执行的顺序依赖于输入的数据或中间运行结果。
在这种情况下,必须根椐某个变量或表达式的值作出判断,最后决定执行哪些语句或跳过不执行哪些语句。
我们称这种程序结构为选择结构。
PASCAL 中可实现选择功能的语句有if 语句和case 语句。
本章主要介绍这两个语句的应用。
在某种情况下,当满足某个条件时,我们需要连续执行多个语句,在PASCAL 语言中为了让结构清晰,允许我们把多个语句组成一个复合语句,这样一个复合语句的使用就可看作一个语句使用。
在PASCAL 中复合语句组成的一般形式及语法图如下:begin <语句1>; <语句2>; . . . . . . <语句n>; end 1.if 语句的一般形式及语法图如下:if <布尔表达式> then <语句1> else <语句2> ;例3.1 编程实现读入两个数,求第一个数除以第二个数的值。
程序如下: program rzy8; var a ,b ,begin if end .1.if 语句主要用于处理两条分支的情况,有些情况下会遇到多条分支的情况,这时使用if 语句就显得非常不方便,程序结构变得混乱,为此PASCAL 语言提供了case 语句。
case 语句的一般形式及语法图如下:N-S 框图描述case <表达式> of<常量表1> :<语句1>; . . . . . .<常量表n> :<语句n>;else <语句n+1> ; end ;例3.2 某校对学生的学科成绩评定分为A ,B ,C ,D 四个级别,分级方法是:100至90为A 级,89至80为B 级,79至60为C 级,59至0分为D 级,其它分数即显示输入错case 语句误。
试编程序,实现从键盘输入学生成绩,则可输该成绩的评级。
第3章_结构化程序设计
• 2. if-else语句
• 语法形式:
if (<条件>) <语句1> else <语句2>
如果“条件”为 “真”,则执行 “语句1”;否则 执行“语句2”
条件
假(0)
真(非0)
语句1 语句2
如图3-2所示
图3-2 if-else语句的执行过程
例如:
if(a+b>c && b+c >a && a+c>b)//判定合法性 { //求三角形面积 p = (a+b+c)/2; s = Math.sqrt(p*(p-a)*(p-b)*(p-c)); } else Console.WriteLine(“三角形的三边数据有 错!”);
//在条件表达式中实现改变循环控制变量之值
int digit=0;
while(digit++<=9) { Console.WriteLine(“{0}”,digit); } //在Console.WriteLine()语句中实现改变循环控制变量之值 int digit=0;
while(digit<=9)
• switch表达式必须是sbyte、byte、ushort、uint、 long、ulong、char和sting(或基于这些类型之一的 一个enum)类型(或隐式地转移到这些类型) • 必须对每个case语句提供一个跳转语句(break语句) ,包括最后的case语句 • 对每个switch语句来说,只能有一个default语句。 而当所有的case语句都不执行,且又没有default语 句时,则控制转移到switch语句的闭花括号之后的 第一行代码,即switch整个语句都不执行
【精品】3判断与决策_选择程序设计(1)
问题
让成绩合格的学生通过
判断成绩是否合格
给定的一个整数是偶数吗?
奇偶判断
按成绩把学生分成两组:合格与不合格
判断成绩是大于等于60还是小于60
按成绩把学生分成多组
判断成绩落在那个范围
判断某年是否为闰年
返回
三种基本结构
顺序结构、选择结构、循环结构 已经证明,任何程序均可只用这三种结
重复—使用循环
当条件为真时,不仅输出信息,还要计 数
复合语句/语句块
#include<stdio.h> int main(void) { int grade; int nopassed = 0;
while( scanf("%d",&grade) != EOF) //循环
{
if ( grade < 60 )
if (grade >= 60)后面没有;号
也可以写成单行
if (grade >= 60) printf("good! you passed!\n");
再看几个例子: 例1 .比较两个整数的大小
输入样例1:2 3 输出样例1:
测试用例2:3 2 测试用例3:3 3
例2:判断整数是偶数吗?
期望条件为真时输出信息 条件为假时也输出信息
经过判断之后选择不同的分支进行处理, 得到不同的打印结果
算法设计
1 求和变量aNum,bNum初始化为0; 2 输入学生成绩; 3 如果输入结束,执行(8); 4 如果成绩大于或等于60,输出分到A 组的信
息,aNum加1, 5 执行(2); 6 如果成绩小于60,输出分到B组信息,bNum
第三章Matlab的选择结构
第三章Matlab的选择结构第三章 Matlab的选择结构3.1 程序编写的⼀般步骤3.2 关系运算符 1) 0表⽰假,⾮0表⽰真; 2) ~=:不等于; 3) sin(pi) ~= 0:为1,⽐较a、b两个数是否相等⽅法:abs(a - b)<1.0e-143.3 逻辑运算 1) 先与&后或|3.4 逻辑函数与短路运算 1) 短路运算:&&、||;⾮短路运算:&、| 2) ischar(x)、isempty(x)、isinf(x)、isnan(x):是否不是数、isnumeric(x):是否是数 3) 1/0 = Inf 是数;0/0 = NaN 不是数3.5 if语句1) 语句结构:”if"开始,"end"结束if exp_1 block_1elseif exp_2 block_2... ...else block_nend3.6 流程图的绘制3.7 if语句的嵌套3.8 switch1)switch(value) case{1,3,5,7,9}, block_1; case{2,4,6,8}, block_2; ... ... otherwise, block_nend3.9 try_catch结构try block_1catch block_2end3.10 多个图像窗⼝与⼦窗⼝ 1) figure(n):图像窗⼝命令; 2) subplot(m,n,p):图像窗⼝中有m*n个⼦窗⼝,p是当前操作窗⼝;3.11 图像的增强控制 1) plot(x1,y1,LineSpec,...,xn,yn,LineSpec) 2) plot(x1,y1,LineSpec,'PropertyName',PropertyValue) 3) LineWidth:⽤来指定线的宽度 4) MarkerEdgeColor:⽤来指定标识表⾯的颜⾊ 5) MarkerFaceColor:填充标识的颜⾊ 6) MarkerSize:指定标识的⼤⼩例:x = -pi:pi/10:pi;y = tan(sin(x)) - sin(tan(x));plot(x,y,'--rs','LineWidth',3,...‘MarkerEdgeColor','k',...‘MarkerFaceColor','g',...‘MarkerSize',10)3.12 ⽂本的⾼级控制...。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
本章介绍选择结构。
选择结构也叫分支结构,它的作用是根据给定的条 件是真还是假,决定后面的操作或做进一步的判断。