1、 1 高三算法复习十二(枚举算法程序实现) 基本思想是把问题所有可能的解,逐一罗列出来并加以验证,若是问题的真正 解,予以采纳,否则就抛弃它 1、用辗转相除法求最大公约数。 已知用辗转相除法求两个正整数m、 n的最大公约数的算法如下: (用num1, num2, r分别表示被除数m、除数n和余数) 求num1/num2的余数r; 若r=0,则执行第步; 将num2的值放在num1中,将r的值放在num2中; 重新执行第步; 输出最大公约数num2。 下列Visual Basic程序用于求三个正整数的最大公约数。程序界面如图所示, 在文本框Text1、Text2和Text3中分别输入三个数a、b
2、和c,单击“求最大公约数 “按钮(Command1)后,在文本框Text4中输出a、b、c的最大公约数y。 Function temp(num1 as Integer, num2 as Integer) as Integer Dim r as Integer 此函数用于计算两个正整数的最大公约数 r = num1 Mod num2 Do While num1 = num2 num2 = r r = num1 Mod num2 Loop 2 temp = num2 End Function Private Sub Command1_Click() Dim a as Integer, b as I
3、nteger, c as Integer, x as Integer, y as Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) x = y = temp(x, c) Text4.Text = Str(y) End Sub (1)解决此问题的算法是 。 (选填:解析法 或 枚举法) 在程序和划线处,填入适当的语句或表达式,把程序补充完整: (2)程序中划线处应填入_。 (3)程序中划线处应填入_。 2、王敏的E-Mail邮箱密码忘记了,但她需要收一封很重要的来信,请你帮她尽 可能找出密码。她零星记得自己密码
4、信息: 密码是六位数字,前面两位为31; 最后两位数字相同; 能被16和46整除。 程序界面如图所示,单击 “帮助找回密码“按钮(Command1)后,可能的密码显 示在列表框List1中。 解决此问题的相应程序如下: Private Sub Command1_Click() Dim a As Integer, s As long, b As Integer, i As Integer For i = 0 To 9999 s = 310000 + i If s Mod 46 = 0 Then 3 b = (s Mod 100) 10 If a = b Then List1.AddItem St
5、r(s) End If End If Next i End Sub (1) 解决此问题的算法是_。 (选填: 枚举算法 或 排序算法) 在程序和划线处,填入适当的语句或表达式,把程序补充完整: (2)程序中划线处应填入_。 (3)程序中划线处应填入_。 3、团体总分统计。下列程序的功能是根据输入的班级编号,统计该班的团体总 分。每个运动员的编号、所属班级编号、得分情况分别保存在数组a、b、c中, a(i)保存第i位运动员的编号,b(i)保存第i位运动员所属班级编号,c(i)保存 第i位运动员得分。 程序界面如图VB-1所示, 在文本框Text1中输入班级编号, 单击“开始统计“ 按钮(Comm
6、and1),程序统计该班的团体总分并在文本框Text2中显示。 解决此问题的算法流程图如图VB-2所示,相应的程序如下,程序中变量n 表示总的运动员人数,在程序(1)和(2)划线处,填入适当的语句或表达式,把 程序补充完整。 Private Sub Command1_Click() Dim x As String, i As Integer, s As Integer x = Text1.Text s = 0 For i = 1 To n n 保存运动员总人数 If (1) Then s = s + c(i) (2) Next i Text2.Text = Str(s) End Sub 程序中
7、(1)划线处应填入 _ 程序中(2)划线处应填入 _ 4 4、有一道趣味题,张老师问李老师:“你今年几岁?你爱人今年几岁?“李老师 笑笑说: “我年龄的平方与我爱人年龄之和恰好等于1053。 而我爱人年龄的平方 与我的年龄之和却等于873。你计算一下吧!“ 设李老师年龄为x岁,他爱人年龄为y岁,由题意可得x,y满足的数学式为: x2 + y = 1053 x + y2 = 873 解决此问题的流程图如VB-1所示。根据流程图VB-1编写的Visual Basic程序如 下,在(1)和(2)划线处,填入合适的语句或表达式,把程序补充完整。 Private Sub Command1_Click() Dim x As Integer, y As Long x = 1 y = 1053 - x * x Do While (1) (2) y = 1053 - x * x Loop Text1.Text = Str(x) Text2.Text = Str(y) End Sub 程序中划线处(1)应填入 程序中划线处(2)应填入