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