中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2020版算法與程序設計 專項測試十 區間問題

資源下載
  1. 二一教育資源

2020版算法與程序設計 專項測試十 區間問題

資源簡介

專項測試十 區間問題
1.進入2016年7月以來,浙江省氣溫連續高溫,為了研究氣溫的變化情況,小明用VB編寫了一個最高氣溫連續運行天數的統計軟件。小明采集了杭州市7~8月的每日最高氣溫,并存放在ACCESS數據庫中。
程序運行時,讀取日期和最高氣溫并顯示在列表框List1中,在文本框Text1中輸入溫度值,單擊統計按鈕Command1,程序自動統計運行在該溫度值以上的最長連續天數,并顯示在Text3中,同時在Text2中顯示日期區間,運行界面如圖所示。
實現上述功能的VB代碼如下,在劃線處填入合適代碼。
Dim rq(1 To 100) As String  ′存放日期
Dim qw(1 To 100) As Integer  ′存放最高氣溫值
Dim n As Integer       ′總天數
Private Sub Form_Load()
 ′讀取數據庫內容,其中日期數據存放在數組rq中,最高氣溫數據存放在qw中,并顯示在列表框List1中,代碼略
End Sub
Private Sub Command1_Click()
 Dim ntempend As Integer  ′記錄當前結束日期的下標
 Dim max As Integer ′記錄最大連續天數
 Dim nend As Integer ′記錄最大連續天數下的結束日期的下標
 Dim ncount As Integer  ′統計連續天數
 Dim tjqw As Integer  ′存放輸入的溫度
 tjqw = Val(Text1.Text)
 ncount = 0
 max = 0
 For i = 1 To n
   If ______①______ Then
     ncount = ncount + 1
   ntempend =i
Else
   ncount = 0
End If
If max < ncount Then
   max = ncount
   ______②______
End If
  Next i
 If max < > 0 Then Text2.Text = ____③____& “-” & rq(nend)
 Text3.Text = Str(max)
End Sub
解析 本題主要考查的是程序的綜合能力。本程序的功能是統計滿足條件的連續區間范圍,變量ncount用來統計溫度大于tjqw的連續天數,ntempend用來記錄溫度連續大于tjqw的序號,變量max用來記錄溫度大于tjqw的最長連續天數,nend用來記錄溫度大于tjqw的最長連續天數的最后一天位置,因此①處代碼為qw(i) >= tjqw,②處代碼為nend = ntempend。最長連續天數為max,結束日期為rq(nend),則開始日期為rq(nend - max + 1)。
答案?、賟w(i) >= tjqw?、趎end = ntempend ③rq(nend - max + 1)
2.小明編寫了一個有關合并區間的VB程序,功能如下:窗體加載時,獲取并存儲合并前的區間數據,并顯示在左邊的列表框中;單擊“合并區間”按鈕Command1,程序以區間左端點數值對區間進行升序排序,然后按相鄰區間的相交情況進行合并,最后將合并后的區間信息顯示在右邊的列表框中。程序運行界面如圖所示。
(1)合并前區間為“[1,10],[5,15],[8,12],[16,30],[35,50]”,則合并后的區間為______________。
(2)實現上述功能的VB程序如下,請在程序劃線處填入合適的代碼。
Dim a(1 To 20) As Integer ′存儲區間左端點
Dim b(1 To 20) As Integer ′存儲區間右端點
Dim n As Integer
Private Sub Form_Load()
 ′獲取n個合并前區間數據
 ′將區間左端點存入a數組,區間右端點存入b數組,并在列表框List1中顯示
 ′代碼略
End Sub
Private Sub Command1_Click()
 Dim i As Integer, j As Integer, left As Integer, right As Integer
 Dim k As Integer, temp1 As Integer, temp2 As Integer
 For i = 1 To n - 1
k = i
For j = n To i + 1 Step -1
  If ______①______ Then k = j
Next j
If i < > k Then
  temp1 = a(k): a(k) = a(i): a(i) = temp1
  temp2 = b(k): b(k) = b(i): b(i) = temp2
End If
 Next i
 left = a(1)
 right = b(1)
 For i = 2 To n
  If a(i) <= right Then
   If ______②________ Then right = b(i)
  Else
List2.AddItem “[“ + Str(left) + ”,“ + Str(right) + ”]”
   left = a(i)
   ________③________
  End If
 Next i
 List2.AddItem “[“ + Str(left) + ”,” +
Str(right) + ”]”
End Sub
解析 本題主要考查的是程序的綜合能力。(1)本小題主要是區間合并的實際應用,合并后的區間為“[1,30],[35,50]”。(2)本題程序的功能是進行區間合并,首先使用選擇排序算法對區間按左端點升序排序,因此①處代碼為a(k) > a(j);然后根據相鄰區間的左右端點情況進行合并操作,根據代碼“right = b(i)”可知,當前面區間的右端點小于當前區間的右端點時(即right < b(i)),則合并后的區間右端點為當前區間的右端點;當a(i) >right時,表示相鄰兩個區間無相交關系,因此區間的左端點left=a(i),右端點right=b(i)。
答案 (1)[1,30],[35,50] (2)①a(k) > a(j)?、趓ight < b(i)?、踨ight = b(i)
3.為分析數組a中各元素依次變化的情況,進行如下定義:
?變化段:數組中相鄰兩個元素構成一個變化段。變化段有上升段(a(i)>a(i-1))、下降段(a(i)?波峰:從上升段轉到下降段形成一個波峰。波峰的起點是峰頂前所有連續上升段中的第1個,終點是峰頂后所有連續下降段中的最后1個。
?對稱波峰:上升段與下降段個數相同的波峰稱為對稱波峰。
下圖為一組數據的變化段及波峰示意圖。
現要求統計數組a各元素依次變化過程中“對稱波峰”的個數。小李依據上述描述設計如下VB程序。請回答下列問題:
(1)數組元素“1,4,3,3,2,6,8,7,9,3,4,7,9,6,3,1”依次變化過程中“對稱波峰”的個數為________。
(2)請在劃線處填入合適的代碼。
Const n = 20
Dim a(1 To n) As Integer
Private Sub Form_Load()
 ′讀取數據,并存儲到數組a中,代碼略
End Sub
Private Sub Command1_Click()
 Dim flag As Integer ′存儲變化段的狀態:1表示升,-1表示降,0表示平
 Dim count As Integer ′存儲對稱波峰段的個數
 Dim steps As Integer
 Dim i As Integer
 flag = 0: steps = 0: count = 0
 For i = ______①______ To n
If a(i) > a(i - 1) Then
If IsSymPeak(flag, steps) Then count = count + 1
If flag = 0 Or flag = -1 Then
   ________②________
Else
    steps = steps + 1
End If
flag = 1
 ElseIf a(i) = a(i - 1) Then
If IsSymPeak(flag, steps) Then count = count + 1
steps = 0
flag = 0
  Else
steps = steps - 1
flag = -1
  End If
Next i
If IsSymPeak(flag, steps) Then count = count + 1
Text1.Text = Str(count)
End Sub
Function IsSymPeak(flag As Integer, steps As Integer) As Boolean
 If ________③________ Then
  IsSymPeak = True
 Else
  IsSymPeak = False
 End If
End Function
解析 本題主要考查的是學生對程序的綜合能力。本題的本質是區間問題,1個波峰可以看作是一個區間,如果此區間內的升序段和降序段數據個數相等,即為對稱波峰。(1)數組元素為“1,4,3,3,2,6,8,7,9,3,4,7,9,6,3,1”時,“1,4,3”、“7,9,3”、“3,4,7,9,6,3,1”為對稱波峰,因此共有3個;(2)根據語句“If a(i) > a(i - 1) Then”可知,當前i位置上的數據與它前面的數據進行比較,第一對比較的數據為a(2)與a(1),因此i的初值為2;自定義函數IsSymPeak的功能是判斷當前波峰是否為對稱波峰,若是則IsSymPeak=True,若不是則IsSymPeak=False。一個波峰為對稱波峰的條件是:一個波峰結束前處于下降狀態((a(i)>a(i-1)表示結束),step=-1表示下降狀態),且上升段和下降段數據相等(即step=0),因此③處代碼為flag = -1 And steps = 0;當 “a(i) > a(i - 1)”且“flag = 0 Or flag = -1”時(變化段的狀態為下降或持平),則表示一個波峰結束,即下一個波峰開始,因此steps = 1。
答案 (1)3 (2)①2?、趕teps = 1?、踗lag = -1 And steps = 0
4.回收存儲空間。設在內存中經存放了A、B、C、D四個任務,其余的空間為可用的,如圖a所示。
可用空間的信息如表一所示。用一維數組dz和Leng表示,其中dz(i)對應第i個可用空間的開始地址(左列數據),Leng(i)對應第i個可用空間的長度(右列數據)。
現某個任務釋放一個區域,其開始地址為xdz,長度為xL,現要求將釋放區域加入到可用空間表中。要求在加入時,若與可用空間相鄰時,則必須進行合并,如圖b。合并方法如下:
1)向下合并,即回收區域和下面可用空間相鄰。例如,xdz=80,xL=20,此時合并后的數據如表二中的(a)。
2)向上合并,即回收區域和上面可用空間相鄰。例如,xdz=600,xL=50,此時合并后的數據如表二中的(b)。
3)上下合并,即回收區域和上面、下面可用空間都相鄰。例如,xdz=150,xL=150,此時合并后的數據如表二中的(c)。
4)不合并,即回收區域和上面、下面可用空間都不相鄰。例如,xdz=430,xL=20,此時增加釋放區域后的數據如表二中的(d)。
小趙編寫了一個回收內存空間的VB程序,功能如下:窗體加載時,自動讀取每段可用空間的信息,每段可用空間的開始地址和長度分別存儲在數組元素dz(1)、dz(2)…和leng(1)、leng(2)…中,可用空間的段數存儲在變量n中,原可用空間信息顯示在列表框List1中。單擊“回收”按鈕Command1,程序對任務中釋放的區域進行回收處理,回收后的可用空間信息顯示在列表框List2中。程序運行界面如圖c所示。
(1)如果釋放區域的開始地址為450,長度為50,則合并方法為________(填:向上合并/向下合并/上下合并/不合并)。
(2)實現上述功能的VB程序如下。請在劃線處填入合適代碼。
程序說明:對數組dz和leng預置2個標志,即頭和尾標志,如表一(b)所示。
Dim dz(0 To 100) As Integer, leng(0 To 100) As Integer
Private Sub Form_Load()
′讀取原可用空間信息,其中開始地址存儲在一維數組dz中,長度存儲在數組leng中
′將原可用空間信息顯示在列表框List1中
End Sub
Private Sub Command1_Click()
 Dim xdz As Integer, xcd As Integer, i As Integer, j As Integer, x As Integer
 List2.Clear
 xdz = Val(Text1.Text):xl = Val(Text2.Text)
 i = 1
 n = 4
 Do While dz(i) < xdz
i = i + 1
 Loop
 i = i - 1
 If dz(i) + leng(i) = xdz Then
If xdz + xl = dz(i + 1) Then  ′第3種情況
  leng(i) = ________①________
  For j = i + 1 To n - 1
    dz(j) = dz(j + 1): l(j) = leng(j + 1)
  Next j
  n = n - 1
Else   ′第2種情況
  leng(i) = leng(i) + xl
End If
 ElseIf (xdz + xl) = dz(i + 1) Then ′第1種情況
dz(i + 1) = xdz
leng(i + 1) = leng(i + 1) + xl
  Else             ′第4種情況
For j = n To i + 1 Step -1
   dz(j + 1) = dz(j):________②________
Next j
________③________
leng(i + 1) = xl
n = n + 1
  End If
  For i = 0 To n
 List2.AddItem Str(dz(i)) + Str(leng(i))
  Next i
End Sub
解析 本題主要考查學生的算法綜合應用能力。(1)因為釋放區域的開始地址為450,長度為50,該區域釋放后將與下面的空閑區域相連(開始地址500,長度100),因此采用向下合并的方法;(2)①處代碼表示第3種情況,即上下合并,合并后的總長度為上面空閑區域長度+下面空閑區域長度+釋放區域長度,因此①處填入的代碼為leng(i) + leng(i + 1) + xl;②處代碼表示第4種情況,即不合并,處理辦法是先把后i+1個空閑區域的開始地址和長度后移一個位置,因此②處代碼為leng(j + 1) = leng(j),然后把釋放的區域信息存儲在第i+1個位置上,因此③處代碼為dz(i + 1) = xdz,表示存儲釋放區域的開始地址。
答案 (1)向下合并 (2)①leng(i) + leng(i + 1) + xl?、趌eng(j + 1) = leng(j)?、踕z(i + 1) = xdz
專項測試十 區間問題
1.進入2016年7月以來,浙江省氣溫連續高溫,為了研究氣溫的變化情況,小明用VB編寫了一個最高氣溫連續運行天數的統計軟件。小明采集了杭州市7~8月的每日最高氣溫,并存放在ACCESS數據庫中。
程序運行時,讀取日期和最高氣溫并顯示在列表框List1中,在文本框Text1中輸入溫度值,單擊統計按鈕Command1,程序自動統計運行在該溫度值以上的最長連續天數,并顯示在Text3中,同時在Text2中顯示日期區間,運行界面如圖所示。
實現上述功能的VB代碼如下,在劃線處填入合適代碼。
Dim rq(1 To 100) As String  ′存放日期
Dim qw(1 To 100) As Integer  ′存放最高氣溫值
Dim n As Integer       ′總天數
Private Sub Form_Load()
 ′讀取數據庫內容,其中日期數據存放在數組rq中,最高氣溫數據存放在qw中,并顯示在列表框List1中,代碼略
End Sub
Private Sub Command1_Click()
 Dim ntempend As Integer  ′記錄當前結束日期的下標
 Dim max As Integer ′記錄最大連續天數
 Dim nend As Integer ′記錄最大連續天數下的結束日期的下標
 Dim ncount As Integer  ′統計連續天數
 Dim tjqw As Integer  ′存放輸入的溫度
 tjqw = Val(Text1.Text)
 ncount = 0
 max = 0
 For i = 1 To n
   If ______①______ Then
     ncount = ncount + 1
   ntempend =i
Else
   ncount = 0
End If
If max < ncount Then
   max = ncount
   ______②______
End If
  Next i
 If max < > 0 Then Text2.Text = ____③____& “-” & rq(nend)
 Text3.Text = Str(max)
End Sub
2.小明編寫了一個有關合并區間的VB程序,功能如下:窗體加載時,獲取并存儲合并前的區間數據,并顯示在左邊的列表框中;單擊“合并區間”按鈕Command1,程序以區間左端點數值對區間進行升序排序,然后按相鄰區間的相交情況進行合并,最后將合并后的區間信息顯示在右邊的列表框中。程序運行界面如圖所示。
(1)合并前區間為“[1,10],[5,15],[8,12],[16,30],[35,50]”,則合并后的區間為______________。
(2)實現上述功能的VB程序如下,請在程序劃線處填入合適的代碼。
Dim a(1 To 20) As Integer ′存儲區間左端點
Dim b(1 To 20) As Integer ′存儲區間右端點
Dim n As Integer
Private Sub Form_Load()
 ′獲取n個合并前區間數據
 ′將區間左端點存入a數組,區間右端點存入b數組,并在列表框List1中顯示
 ′代碼略
End Sub
Private Sub Command1_Click()
 Dim i As Integer, j As Integer, left As Integer, right As Integer
 Dim k As Integer, temp1 As Integer, temp2 As Integer
 For i = 1 To n - 1
k = i
For j = n To i + 1 Step -1
  If ______①______ Then k = j
Next j
If i < > k Then
  temp1 = a(k): a(k) = a(i): a(i) = temp1
  temp2 = b(k): b(k) = b(i): b(i) = temp2
End If
 Next i
 left = a(1)
 right = b(1)
 For i = 2 To n
  If a(i) <= right Then
   If ______②________ Then right = b(i)
  Else
List2.AddItem “[“ + Str(left) + ”,“ + Str(right) + ”]”
   left = a(i)
   ________③________
  End If
 Next i
 List2.AddItem “[“ + Str(left) + ”,” +
Str(right) + ”]”
End Sub
3.為分析數組a中各元素依次變化的情況,進行如下定義:
?變化段:數組中相鄰兩個元素構成一個變化段。變化段有上升段(a(i)>a(i-1))、下降段(a(i)?波峰:從上升段轉到下降段形成一個波峰。波峰的起點是峰頂前所有連續上升段中的第1個,終點是峰頂后所有連續下降段中的最后1個。
?對稱波峰:上升段與下降段個數相同的波峰稱為對稱波峰。
下圖為一組數據的變化段及波峰示意圖。
現要求統計數組a各元素依次變化過程中“對稱波峰”的個數。小李依據上述描述設計如下VB程序。請回答下列問題:
(1)數組元素“1,4,3,3,2,6,8,7,9,3,4,7,9,6,3,1”依次變化過程中“對稱波峰”的個數為________。
(2)請在劃線處填入合適的代碼。
Const n = 20
Dim a(1 To n) As Integer
Private Sub Form_Load()
 ′讀取數據,并存儲到數組a中,代碼略
End Sub
Private Sub Command1_Click()
 Dim flag As Integer ′存儲變化段的狀態:1表示升,-1表示降,0表示平
 Dim count As Integer ′存儲對稱波峰段的個數
 Dim steps As Integer
 Dim i As Integer
 flag = 0: steps = 0: count = 0
 For i = ______①______ To n
If a(i) > a(i - 1) Then
If IsSymPeak(flag, steps) Then count = count + 1
If flag = 0 Or flag = -1 Then
   ________②________
Else
    steps = steps + 1
End If
flag = 1
 ElseIf a(i) = a(i - 1) Then
If IsSymPeak(flag, steps) Then count = count + 1
steps = 0
flag = 0
  Else
steps = steps - 1
flag = -1
  End If
Next i
If IsSymPeak(flag, steps) Then count = count + 1
Text1.Text = Str(count)
End Sub
Function IsSymPeak(flag As Integer, steps As Integer) As Boolean
 If ________③________ Then
  IsSymPeak = True
 Else
  IsSymPeak = False
 End If
End Function
4.回收存儲空間。設在內存中經存放了A、B、C、D四個任務,其余的空間為可用的,如圖a所示。
可用空間的信息如表一所示。用一維數組dz和Leng表示,其中dz(i)對應第i個可用空間的開始地址(左列數據),Leng(i)對應第i個可用空間的長度(右列數據)。
現某個任務釋放一個區域,其開始地址為xdz,長度為xL,現要求將釋放區域加入到可用空間表中。要求在加入時,若與可用空間相鄰時,則必須進行合并,如圖b。合并方法如下:
1)向下合并,即回收區域和下面可用空間相鄰。例如,xdz=80,xL=20,此時合并后的數據如表二中的(a)。
2)向上合并,即回收區域和上面可用空間相鄰。例如,xdz=600,xL=50,此時合并后的數據如表二中的(b)。
3)上下合并,即回收區域和上面、下面可用空間都相鄰。例如,xdz=150,xL=150,此時合并后的數據如表二中的(c)。
4)不合并,即回收區域和上面、下面可用空間都不相鄰。例如,xdz=430,xL=20,此時增加釋放區域后的數據如表二中的(d)。
小趙編寫了一個回收內存空間的VB程序,功能如下:窗體加載時,自動讀取每段可用空間的信息,每段可用空間的開始地址和長度分別存儲在數組元素dz(1)、dz(2)…和leng(1)、leng(2)…中,可用空間的段數存儲在變量n中,原可用空間信息顯示在列表框List1中。單擊“回收”按鈕Command1,程序對任務中釋放的區域進行回收處理,回收后的可用空間信息顯示在列表框List2中。程序運行界面如圖c所示。
(1)如果釋放區域的開始地址為450,長度為50,則合并方法為________(填:向上合并/向下合并/上下合并/不合并)。
(2)實現上述功能的VB程序如下。請在劃線處填入合適代碼。
程序說明:對數組dz和leng預置2個標志,即頭和尾標志,如表一(b)所示。
Dim dz(0 To 100) As Integer, leng(0 To 100) As Integer
Private Sub Form_Load()
′讀取原可用空間信息,其中開始地址存儲在一維數組dz中,長度存儲在數組leng中
′將原可用空間信息顯示在列表框List1中
End Sub
Private Sub Command1_Click()
 Dim xdz As Integer, xcd As Integer, i As Integer, j As Integer, x As Integer
 List2.Clear
 xdz = Val(Text1.Text):xl = Val(Text2.Text)
 i = 1
 n = 4
 Do While dz(i) < xdz
i = i + 1
 Loop
 i = i - 1
 If dz(i) + leng(i) = xdz Then
If xdz + xl = dz(i + 1) Then  ′第3種情況
  leng(i) = ________①________
  For j = i + 1 To n - 1
    dz(j) = dz(j + 1): l(j) = leng(j + 1)
  Next j
  n = n - 1
Else   ′第2種情況
  leng(i) = leng(i) + xl
End If
 ElseIf (xdz + xl) = dz(i + 1) Then ′第1種情況
dz(i + 1) = xdz
leng(i + 1) = leng(i + 1) + xl
  Else             ′第4種情況
For j = n To i + 1 Step -1
   dz(j + 1) = dz(j):________②________
Next j
________③________
leng(i + 1) = xl
n = n + 1
  End If
  For i = 0 To n
 List2.AddItem Str(dz(i)) + Str(leng(i))
  Next i
End Sub

展開更多......

收起↑

資源列表

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 肥东县| 邢台县| 伊金霍洛旗| 衡水市| 天台县| 利津县| 壤塘县| 射洪县| 永胜县| 资阳市| 太康县| 沛县| 连南| 若羌县| 灌云县| 基隆市| 南昌市| 雷波县| 青浦区| 桐庐县| 祁阳县| 赤壁市| 黄平县| 威远县| 陆河县| 江陵县| 景德镇市| 贵定县| 电白县| 瑞昌市| 交口县| 金平| 随州市| 中西区| 诸城市| 泸州市| 高台县| 汽车| 东城区| 河间市| 伊春市|