2.編寫VB程序,功能是根據A城和B城同一時間段內的溫度數據,計算兩城溫差(A城溫度-B城溫度)A城數據和B城數據分別為包含若干個記錄的序列,其中,A城每個記錄包含溫度及其截止時間,B城每個記錄包含溫度及其持續(xù)時長。兩城溫差計算結果表示為若干個記錄的序列,每個記錄包含溫差及其持續(xù)時長。持續(xù)時長是指同一溫度(或溫差)保持不變的最大時長。示例見下表。
時間 |
第1小時 |
第2小時 |
第3小時 |
第4小時 |
第5小時 |
第6小時 |
第7小時 |
A城溫度 |
30 |
30 |
33 |
33 |
31 |
31 |
32 |
A城數據 |
溫度 |
30 |
33 |
31 |
32 |
截止時間 |
2 |
4 |
6 |
7 |
B城溫度 |
20 |
20 |
20 |
22 |
21 |
21 |
22 |
B城數據 |
溫度 |
20 |
22 |
21 |
22 |
持續(xù)時長 |
3 |
1 |
2 |
1 |
計算結果 |
溫差 |
10 |
13 |
11 |
10 |
持續(xù)時長 |
2 |
1 |
1 |
3 |
(時間單位:小時,溫度單位:攝氏度)
表中,A城數據有4個記錄,其中第1個記錄為(溫度30,截止時間2),第2個記錄為(溫度33,截止時間4),這表明從開始到第2小時的溫度都是30,此后到第4小時的溫度都是33.B城數據有4個記錄,其中第3個記錄為(溫度21,持續(xù)時長2),這表明第5、第6這2個小時的溫度都是21.兩城溫差計算結果的第4個記錄為(溫差10,持續(xù)時長3),這表明第5、第6、第7這3個小時的溫差都是10。
(1)若將示例中A城數據修改為3個記錄,依次是(溫度30,截止時間4)、(溫度31,截止時間6)、(溫度32,截止時間7),B城數據不變,則兩城溫差計算結果中第1個記錄為(溫差10,持續(xù)時長
)(填數值)。
(2)實現上述功能的VB程序如下,請在橫線處填入合適的代碼。
Const m=1000'溫度數據和溫差數據包含的記錄數都少于1000
Dim na As Integer,nb as integer'A、B城數據分別有na和nb個記錄
Dim ha(m)As Integer'ha(i)存儲A城第i個記錄中的溫度
Dim ta(m)As Integer'ta(i)存儲A城第i個記錄中的截止時間
Dim hb(m)As Integer'hb(i)存儲B城第i個記錄中的溫度
Dim tb(m)As Integer'tb(i)存儲B城第i個記錄中的持續(xù)時長
Dim h(m)As Integer'h(i)存儲計算結果第i個記錄中的溫差
Dim t(m)As Integer't(i)存儲計算結果第i個記錄中的持續(xù)時長
Private Sub Command l _Click ( )
Dim i As Integer,j As Integer
Dim p0 As Integer,p1 As Integer,diff As Integer
Dim n As Integer'兩城溫差數據的記錄個數
'讀取兩城數據,存入變量na,nb及數組ha,ta,hb,tb中,代碼略
For i=2 To nb
tb(i)=
①'將B城第i個記錄中的持續(xù)時長轉換為截止時間
Next i
i=1:j=1
n=0
p0=0
Do While i<na And i<=nb
diff ha(i)-hb(j)
pl=ta(i)
If
②Then i=i+1
If p1>=tb (j) Then
pl=tb(i)
j=j+1
End if
If n=0 Or diff<>h(n) Then
n=n+l
h(n)=diff
t(n)=pl-p0
Else
③End If
p0=pl
Loop
'輸出兩城溫差數據,代碼略
End Sub