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