16.擠牛奶問題:如有三個農民每天清晨5點起床,然后去牛棚分別給3頭牛擠 奶。第一個農民在300時刻(從5點開始計時,秒為單位)給他的牛擠奶,一直到1000時刻(總共擠了700個時刻),第二個農民在700時刻開始,在1200時刻結束(總共擠了500個時刻)。第三個農民在1500時刻開始2100時刻結束(總共擠了600個時刻)。期間最長擠奶的連續時間為900秒(從300時刻到1200時刻),而最長的無人擠奶的連續時間為300時刻(因第二個農民在1200時刻已結束,而第三個農民從1500時刻才開始,中間有300時刻沒有人在擠牛奶)。相應時刻如圖所示: 下面提供的程序是,從N個農民(1<N<=5000)擠N頭牛的工作時間列表,計算出最長有人在擠牛奶的時間段與最長的無人擠牛奶的時間段。 如圖為兩組不同數據程序運行后界面; 請在橫線處填入相應的代碼,使程序功能 完善。 Dim a(1 To 100)As Integer'存放農民 擠牛奶開始時刻 Dim b(1 To 100)As Integer'存放農民擠牛奶結束時刻 Dim n As Integer'存放農民人數 Private Sub Form_Load ( ?。?br />‘獲取農民的人數與各個農民開始擠牛奶與結束擠牛奶的時間,并在list1中輸出‘相應的代碼略 End Sub Private Sub Command1_Click ( ?。?br />Dim i As Integer,j As Integer Dim t As Integer,ymax As Integer,nmax As Integer Dim btime As Integer,etime As Integer,flag As Boolean flag=True:i=1 Do While i<= 1 And flag flag=False For j=1 To n-i If a(j)>a(j+1)Then t=a(j):a(j)=a(j+1):a(j+1)=t t=b(j):b(j)=b(j+1):b(j+1)=t flag=True End If Next j i=i+1 Loop btime=a(1):etime=b(1) ymax=etime-btime:nmax=0 For i=2 To n If 2 Then etime=b(i) If etime-btime>ymax Then ymax=etime-btime ElseIf etime<a(i) Then If a(i)-etime>nmax Then nmax=a(i)-etime btime=a(i):etime=b(i) End If Next i Label2.Caption=“最長擠牛奶時間為:“+Str(ymax)+“時刻“ Label3.Caption=“最長無人擠牛奶時間為:“+Str(nmax)+“時刻“ End Sub
(2)請在橫線處填入合適的代碼。 Dim sName(1 To 50)As String'存放學生姓名 Dim sScore(1 To 50)As Integer'存放學生分數 Dim recCount As Integer'存放學生人數 Private Sub Form_Load ( ?。?br />'本過程從數據庫中讀取學生數據,存儲在相應的變量中,并在List1中顯示 '代碼略 End Sub Function ads(x As Integer,n As Integer) As String'整數轉換成長度固定的字符串 Dim sx As String,nx As Integer,i As Integer sx=Str(x):nx=Len(sx) For i=1 To n-nx sx=““+sx Next i 1 End Function Private Sub Command1_Cl ick ( ?。?br /> Dim A(0 To 100)As Integer'存放每個分數的個數 Dim B(0 To 100)As Integer'存放每個分數的名次 Dim mc As Integer,score As Integer,i As Integer For i=0 To 100 A(i)=0 Next i For i=1 To recCount'計算每個分數的個數 2 Next i mc=1 For i=100 To 0 Step-1'計算每個分數的名次 I f A(i)<>0 Then B(i)=mc 3 End If Next i List2.Clear List2.AddItem“姓名 分數 名次“ List2.AddItem“
“ For i=1 To recCount score=sScore(i) mc=B(sScore(i)) List2.AddItem sName(i)+ads(score,5)+“第“+ads(mc,3)+“名“ Next i End Sub