1、 1 高三算法复习高三算法复习十十一一(解析算法解析算法程序实现程序实现) 解析算法的基本思想解析算法的基本思想 解析算法是指用解析的方法找出表示问题的前提条件与所求结果之间关系 的 ,并通过表达式的计算来实现问题的求解。用 VB 编制程序时,要注 意计算过程描述的正确性。很多数学、物理、化学等问题都可以用解析算法来实现。 解析算法的程序实现解析算法的程序实现 使用解析算法解决问题的关键是能找到 ,来描述问题的原始数据与 结果之间的数量关系。特别是把数学公式转换成 VB 程序表达式时,要注意这种转换的正确 性,否则容易发生犯错误。 1、计算月工资收入在 2500 元至 4000 元之间(含 4
2、000 元不含 2500 元)的个人所得税算法 如下: 输入月工资收入额 x 用公式计算所得税 y=5005%+(x-2500)10%, 输出所得税 y 上述算法属于( ) A枚举算法 B排序算法 C递归算法 D解析算法 2、已知半径求圆的面积,可以选用的算法是( ) A查找法 B解析法 C选择法 D二分查找 3、等差数列的求和,最合适的算法是( ) A查找法 B解析法 C选择法 D二分查找 4、鸡兔同笼问题:鸡与兔一同养在一个笼子里,已知头共 46,脚共 128,则鸡和兔各几只。 此问题的求解可以使用枚举算法外,还可以使用算法( ) A查找法 B排序法 C解析法 D递归法 5、把星期一记为
3、1,星期二记为 2,星期日记为 0,已知某月 1 日(即第 1 天)是星 期一,下列语句中,用于正确计算该月第 n 日星期数 w 的是 Aw=n Mod 7 Bw=(n+1) Mod 7 Cw=(n+1)7 Dw=n7 6、计算正数 a 的算术根(近似值)的算法公式如下: i=1,2,3, 计算开始时取 ax 1 ,运用上述算法公式计算 2 x ,然后由 2 x 计算 3 x ,直到相邻两 值差的绝对值小于设定的精度 0.0001 为止。应用程序界面中,自上而上两个文本框的名称分 别是 Text1 和 Text2, “计算”按钮的名称是 Command1。在 Text1 中输入 a 的值,单击
4、“计算” 按钮,在 Text2 中显示正数 a 的近似算术根。请将下列程序补充完整。并在空白处画出流程 图。 Private Sub Command1_Click() Const e = (1) Dim a As Double, x1 As Double, x2 As Double )( 2 1 1 i ii x a xx 2 a = Val(Text1.Text) x1 = 0 x2 = a Do While Abs(x2 - x1) = e x1 = x2 (2) Loop Text2.Text = Str(x2) End Sub 程序中划线处应填入 程序中划线处应填入 分析:分析:本题程
5、序的功能是计算正数 a 的算术根(近似值) 。计算开始时取 x1=a,运用题目告 知的算法公式计算 x2,然后由 x2 计算 x3,直到相邻两值差的绝对值小于设定的精度 0.0001 为止。程序中 e 是一个符号常量,用于存放相邻两值差的绝对值精度,题目要求小于 设定的精度 0.0001,故 e 的值为 0.0001,即 e=0.0001;第(2)个空依照计算公式由 x1 计算 x2 ,据已知算法公式 )( 2 1 1 i ii x a xx ,已知 x1,代入公式,可以得到 )( 2 1 1 12 x a xx , 转换成正确的 VB 表达式则为 x2=(x1+a/x1)/2 或 x2=1/
6、2*(x1+a/x1),这里要特别注意表达式 的正确书写:除号要用“/”表示,乘号要用“*”表示,不能省略。 7、 浙江省电网销售电价表中规定,不满 1 千伏“一户一表“居民用电价格,按以下标准计 算:月用电量在 50 千瓦时及以下部分,每千瓦时以 0.538 元计算;51200 千瓦时部分,则 每千瓦时按 0.568 元计算;200 千瓦时以上部分,每千瓦时按 0.638 元计算。设计一个程序, 根据用户的月用电量分段计算电费。 设某用户的当月用电量是 x 千瓦时, 当 x50 时,电费为 0.538x 元; 当 51x200 时,电费为 0.568(x-50)+0.53850 元; 当 x
7、200 时,电费为 0.638(x-200)+0.568150+0.53850 元; 在文本框 Text1 输入 x,在文本框 Text2 中输出相应的电费。 根据上述分析,相应的 Visual Basic 程序如下,在和划线处,填入合适的语句或表达式, 把程序补充完整。 Private Sub Command1_Click() 3 Dim x As Integer x = val(Text1.Text) If x 0 Then Text2.Text = “用电量不能是负的!“ ElseIf x = 50 Then Text2.Text = ElseIf Then Text2.Text = S
8、tr(0.568 * (x - 50) + 0.538 * 50) Else Text2.Text = Str(0.638 * (x - 200) + 0.568 * 150 + 0.538 * 50) End If End Sub 程序中划线处应填入 程序中划线处应填入 8、按下面公式计算 y 的值: 现要求编写 VB 程序(运行界面如图所示) ,实现如下功能:在文本框 Text1 中输入 x 的 值,单击“计算”按钮 Command1,在标签 Label3 中显示 y 的值。按此要求编写的程序如下, 其中函数 f(x)用于计算 y 的值,但下划线部分有错,请改正。 Function f(x
9、 As Single) As Single If x=0 Then f=(2*x*x+1)/(3*x-2) Else f=Sqr(3*x*x-2*x+1) End If End Function Private Sub Command1_Click( ) Dim x As Single,y As Single x=Val(text1.text) y=fx Label3.Caption=Str(y) End Sub 程序中划线处应改为 程序中划线处应改为 y= -x (x0) 123 2 xx (0=x100) 4 9、以下程序片断用于计算 s=1+ 4 1 3 1 2 1 10 1 的值,则划线部分应填 s=0 For i=1 to 10 Next i Text1.Text=Str(s) 10、以下程序片断用于计算 s=1!+2!+3! 10!,则划线部分应填 s=0:p=1 For i=1 to 10 s=s+p Next i Text1.Text=Str(s)