题型:填空题 题类:模拟题 难易度:困难
浙江省杭州市2015年高考模拟命题比赛信息技术(1)
第一步:设两数为a、b,且令a>b;
第二步:a÷b,令r为所得余数,若r=0,算法结束,b 即为最大公约数;若r>0则a←b,b←r,并返回第二步;
第三步: 即为 约分后的最简形式。
编写VB程序,程序运行界面如图1所示,请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Dim a As Integer, b As Integer, r As Integer 'a、b为分子和分母,r为最大公约数
a = Val(Text1.Text)
b = Val(Text2.Text)
If b = 0 Then c = MsgBox("分母不能为0"): Exit Sub
'如果分母为0,则提示“分母不能为0”并退出该过程
r =
Text3.Text = Str(a / r)
Text4.Text = Str(b / r)
End Sub
Function gys(ByVal m As Integer, ByVal n As Integer) As Integer
'gys函数用于求最大公约数
Dim s As Integer
If m < n Then
t = m: m = n: n = t
End If
Do While n <> 0
s = m Mod n
m = n
n = s
Loop
End Function
假如我们用数组表示上述大根堆:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
9 |
6 |
8 |
5 |
3 |
4 |
7 |
2 |
1 |
现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。
数组存储为:
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
6 |
8 |
5 |
3 |
4 |
7 |
2 |
1 |
8 |
具体操作方法如下:
第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;
数组存储为:
第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;
数组存储为:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
9 |
8 |
8 |
5 |
6 |
4 |
7 |
2 |
1 |
3 |
第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。
试题篮