算法和程序设计 第4课 分支结构的算法设计 •
用流程图和伪代码描述输入两个数输出它们的和的算法 用流程图表示 输入 a 开始 输入 b suma+b 输出 sum 结束 用伪代码表示 输入 a 输入 b Sum a+b 输出 sum
算法的执行流程 顺序模式: 输入 n 输出 n2 输入 n a n2 输出 a 如:输入一个数,输出这个数的平方 用伪代码表示 Step1 Step2 输入n 或: 输入 n a n2 输出 a 输出 n2
例 求两不等数中大者的算法 a>b 1、用自然语言描述算法: 2、用流程图来描述算法 输出a 输出b 结束 开始 Y N 算法开始 1、输入两个不同的数a, b 2、若a>b条件成立 a>b 3、输出a的值,跳到5 4、否则(a<b) 输出b的值 5、退出
选择模式:(分为单分支与双分支两种) 双分支: 用伪代码表示 if(条件) then A框 else B框 End if
单分支: 用伪代码表示 if(条件) then A框 End if 出门带伞问题:如果下雨,带伞后出门,否则直接出门。
语句组 EndIf 相对于单分支结构,在VB6.0中有2种相应的语句格式: 格式1:If 条件 Then 语句 格式2:If 条件 Then 语句组 EndIf 细心的同学可能已经发现,这2种单分支语句格式不仅从占用的行数上看是不一样的,另外还有一个重要的区别在于,格式1的关键字Then后面只能写一条操作语句,格式2的关键字Then下面能够写多条操作语句(即语句组)。但是,格式1中可以省略“End If”行,而格式2中却必须写上该行,否则VB6.0系统会提示用户语法出错。
选择模式: 双分支选择: 单分支选择: If (条件) then step1 If (条件) then else step1 step2 双分支选择: 单分支选择: 条件 step1 y n step2 y n 条件 step1 If (条件) then step1 else step2 End if step3 step2 If (条件) then step1 End if
【练习1】打印出从键盘输入的两个不相等的数中较大的数。(双分支结构) 算法一 输入 a, b IF a>b THEN 输出a ELSE 输出b END IF
算法二: 输入二个不相等的数a, b,将最大数赋值给变量max并输出。 max a y n max b 输出max 输入a、b 输入 a,b If a>b then max a else max b End if 输出 max
【练习2】求分段函数值 输入 x IF x>3 THEN y=x*x ELSE y=2*x+1 END IF 输出 y
【练习3】输入一个数到变量a,输出它的绝对值(不用绝对值函数,要求用单分支和双分支结构分别设计算法,并画出流程图)
【练习4】输入两个不相等的数a,b,比较大小,将大数放在a中,小数放在b中,然后输出a,b。(单分支结构)
【练习5】某超市促销苹果,购买一斤苹果,为每斤3元,购买5斤以下每斤原价;超过5斤部分每斤打8折,输入购买的斤数,输出应付款额。(双分支结构)
【练习6】求分段函数值 1 x>0 0 x=0 -1 x<0 Y= 用伪代码描述: 输入 x if(x<0) then else if(x=0) then y=0 y=1 end if End if 输出 y
多选择(分支)结构(一) If<条件1>Then <语句组1> Elseif<条件2>Then <语句组2> Elseif<条件3>Then <语句组3> ………… Elseif<条件n>Then <语句组n> Else <语句组n+1> End If
多选择(分支)结构(二) 2、选择语句 Select Case<表达式> Case<值1> <语句组1> Case<值2> <语句组2> Case<值3> <语句组3> ………… Case<值n> <语句组n> Case Else <语句组n+1> End Select 二
【练习7】购买地铁车票:乘1-4 站 3元/位;5-9站 4元/位;9站以上5元/位;输入人数person、站数n,输出应付款pay
拓展练习题: 1、编一程序,从输入的三个数中找出并显示其中最大者。 开始 算法一 输入a,b,c y n a>b y n n a>c b>c y 输出a 输出c 输出b 输出c 结束 拓展练习题:
输入三个不相等的数a,b,c ,将最大数赋值给变量max并输出。 算法二
编一程序,从输入的三个数中找出并显示其中最大者。 开始 算法三 输入a,b,c y n a>b maxa maxb n C> max y maxc 输出max 结束
2、判断一元二次方程ax2 +bx+c=0(其中a≠0)是否有实数解的算法框图。(有,则输出“有实解”;无,则输出“无实解”) root 2、判断一元二次方程ax2 +bx+c=0(其中a≠0)是否有实数解的算法框图。(有,则输出“有实解”;无,则输出“无实解”) root.exe
VB常用函数 系统内部标准函数 取整:Int(x) 求余数:a Mod b 求平方根:Sqr(x) 绝对值:Abs(x) 四舍五入:Round(x,n) 其它...
3、设计一个一元二次方程求解的通用算法 用流程图来描述 开始 用伪代码表示 输入 a,b,c 输入 a,b,c d<0 输入 a,b,c db2-4ac 输出 “无实根” d=0 输出 –b/2/a 输出 (-b+d)/2/a, (-b-d)/2/a 结束 y n 用流程图来描述 dsqr (d) 用伪代码表示 输入 a,b,c d = b * b - 4 * a * c If (d < 0) Then 输出 "无实根“" Else If (d = 0) Then 输出 "x1=x2="; -b / 2 / a d = Sqr(d) 输出 "x1="; (-b + d) / 2 / a 输出 "x2="; (-b - d) / 2 / a End If
4、某手机话费套餐规定:每月60元,可通话300分钟,超过300分钟的部分,另按每分钟0 4、某手机话费套餐规定:每月60元,可通话300分钟,超过300分钟的部分,另按每分钟0.4元计算。键盘输入当月通话时间(分钟),计算当月实际需付的手机费。如果输入的通话时间小于0,则应输出“输入数据有误”的提示信息。
例5:判断一个一元二次方程是否有实数解的算法。 5.exe Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer, d As Integer a = InputBox("a="): b = InputBox("b=") :c = InputBox(“c=") d=b*b-4*a*c If (d >= 0) Then Print “有实数解" Else Print “无实数解" End If End Sub
超市打折器的算法 某超市为了提高经济效率、优惠顾客,展开购物打折活动,活动规则如下: 1、购物金额大于等于500元,打8折; 1、购物金额大于等于500元,打8折; 2、购物金额大于等于300元,小于500元,打9折; 3、购物金额大于等于100元,小于300元,打9.5折; 4、购物金额不足100的,不参与打折活动。 请同学们根据超市管理层给出的活动规则,帮助超市设计一个打折器的算法,并编写出相应的执行程序。
设计一个算法,能够判定某年是否为闰年。(判定闰年的条件是“年份能被4整除但是不能被100整除”或者“年份能被400整除”) 算法1
算法2