第17 题图c 算法思路如下:
①首先按边距离升序排序;
②找到边距离最小值1,以及相应的两个节点V1 和V3;
③以V1 或V3 作为起点,搜寻连接新节点且距离最小的边,发现(V1,V4)边最小为4; ④以V1、V3、V4 作为起点,搜寻连接新节点且距离最小的边,发现(V4,V5)边最小为2; ⑤以V1、V3、V4、V5 作为起点,搜寻连接新节点且距离最小的边,发现(V2,V5)边最小为3;因此可知,连通5 个村庄的最短管道距离是1+4+2+3=10,效果如第17 题图b 所示。 现设计了如下VB 程序,界面如第17 题图c 所示,请回答下列问题:
(1)V2 到V5 的边距离若为6,则连通5 个村庄的最短管道距离是____________。 (2)请在划线处填入合适的代码。 Const n = 5 '村庄数 Const m = 8 '管道线路数
Dim pointAB(1 To 2 * m) As Integer '存储连接的两个村庄节点 Dim length(1 To m) As Integer '存储两个村庄之间的距离 Dim res(1 To 100) As Integer '存储管道规划结果 Private Sub Form_Load()
'村庄节点数据存储在pointAB 数组,两个村庄的距离数据存储在length 数组。 '如第17 题图c 所示,(V1,V3)边距离为1,则pointAB(1)=1,pointAB(2)=3,length(1)=1; (V1,V2)边距离为6,则pointAB(3)=1,pointAB(4)=2,length(2)=6;其他依次类推,代码略。 End Sub
Function check(x As Integer) As Integer '判断x 节点是否已在规划中 check = 0 For i = 1 To 100
If x = res(i) Then check = 1: Exit Function Next i End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer, tmp As Integer Dim total As Integer, sum As Integer For i = 1 To m - 1 For j = m To i + 1 Step -1 If ______①______ Then
tmp= pointAB(2 * j - 1) :pointAB(2 * j - 1) = pointAB(2 * j - 3) :pointAB(2 * j - 3) = tmp tmp = pointAB(2 * j) : pointAB(2 * j) = pointAB(2 * j - 2) :pointAB(2 * j - 2) = tmp tmp = length(j): length(j) = length(j - 1): length(j - 1) = tmp End If Next j Next i '开始规划管道 total = 1
res(1) = pointAB(1): res(2) = pointAB(2) sum = length(1)
Do While total < ______②______ For i = 2 To m
If ______③______ Then total = total + 1
res(2 * total - 1) = pointAB(2 * i - 1) res(2 * total) = pointAB(2 * i) sum = sum + length(i) Exit For End If Next i Loop
'输出连通结果res 以及管道总长度sum,代码略。 End Sub
杭高2019学年第二学期高三5月学科测试
(信息技术)答案
一、选择题
1 D
2 B 3 A 4 C 5 C 6 B 7 B 8 A 9 D 10 C 11 C 12 A 二、非选择题(本大题共4小题,第13小题4分,第14小题8分,第 15小题7分,第16小题7分,共26分)
13.(1) B
(2) =E3*$M$3+F3*$M$4 (3) AD 14.(1)AD (2) 4 (3) A
(4) fscommand(“quit”) (5) CDE 15.(1)C
(2)① d((i - 1) * n + 1) = (i - 1) ^ 2 + 1 ② d((i - 1) * n + j) = d((i - 1) * n + j - 1) + 1 (3)ElseIf j > i Then 16.(1)12
(2)① length(j) ③ check(pointAB(2*i-1))+check(pointAB(2*i))=1
相关推荐: