給定m個區間和1個數組(有n個元素),現要求根據各區間限定的取值范圍,將數組依次分隔成m+1個段。具體分割方法如下:
?第1段是從數組首個元素開始、元素值都屬于第1區間的最長連續元素段。如果首個元素不屬于第1區間,則第1段元素個數為0;
?第1段分割后的剩余元素,用同樣的方法來依次分割第2段、第3段、…、第m段;
?第m段分割后的剩余元素分割到第m+1段(剩余段)。
若第p(1≤p≤m-1)段末尾連續元素的值也同時屬于第p+1區間,則這塊連續元素稱為第p段“重疊塊”,該段其余部分稱為第p段“非重疊塊”。由于不存在第m+1區間,這里特別規定:第m段的全部元素都分割到m段“非重疊塊”,第m段“重疊塊”的元素個數為0,一個數組分段示例如下圖。圖中數組第1個元素10不屬于第1區間[0,5],因此第1段的元素個數為0.10和20屬于第2區間,而33不屬于第2區間,因此第2段只包含10和20兩個元素。第3段末尾連續3個元素的值也同時屬于第4區間,因此,第3段“非重疊塊”包含33,58,46,第3段“重疊塊”包含55,62,69。

(1)給定2個區間依次為[10,50]、[30,80],數組各元素為“12,44,34,45,66,50,45,70”,則第1段“重疊塊”中的元素個數為 33個。
(2)小李根據上述描述,設計了一個統計各段“非重疊塊”、“重疊塊”和剩余段中元素個數的算法。算
法的VB程序如下,請在橫線處填入合適的代碼。
Const n=18,m=6
Dim a(1 To n) As Integer
Dim b(1 To 2*m) As Integer
'b(1)、b(2)為第1區間的下限和上限,b(3)、b(4)為第2區間的下限和上限,…
Dim c(1 To 2*m+1)As Integer
'數組c用于保存統計結果:
'c(1)、c(2)分別存儲第1段“非重疊塊”和“重疊塊”的元素個數,
'c(3)、c(4)分別存儲第2段“非重疊塊”和“重疊塊”的元素個數,…
'c(2m-1)存儲第m段“非重疊塊“元素個數,c(2m)存儲第m段“重疊塊“元素個數(值為0)
'c(2m+1)存儲剩余段元素個數
Private Sub Command1_Click ( )
Dim i As Integer,p As Integer,L As Integer,LL As Integer
'讀取n個數據并保存在數組a中,代碼略
'讀取m個區間的下限和上限并保存在數組b中,代碼略
For i=1 To 2*m+1
c(i)=0
Next i
i=1:p=1
L=0:LL=0
Do While i<=n And p<=mi<=n And p<=m
If IsIn(i,p) Then
If IsIn(i,p+1)Then
LL=LL+1
Else
L=L+LL+1L=L+LL+1
LL=0
End If
i=i+1
Else
c(2*p-1)=L
c(2*p)=LL
L=0:LL=0
p=p+1
End If
Loop
If i<=n Then
c(2*p-1)=n-i+1
Else
c(2*p-1)=L
c(2*p)=LL
End If
'輸出統計結果,代碼略
End Sub
'函數IsIn用來判斷a(i)值是否屬于第p區間
Function IsIn(i As Integer,p As Integer) As Boolean
If p>m Then
IsIn=False
Else
If a(i)>=b(2*p-1)And a(i)<=b(2*p)a(i)>=b(2*p-1)And a(i)<=b(2*p) ThenIsIn=True Else IsIn=False
End If
End Function
【考點】編輯事件處理過程的代碼.
【答案】3;i<=n And p<=m;L=L+LL+1;a(i)>=b(2*p-1)And a(i)<=b(2*p)
【解答】
【點評】
聲明:本試題解析著作權屬菁優網所有,未經書面同意,不得復制發布。
發布:2024/6/27 10:35:59組卷:9引用:1難度:0.2
相似題
-
1.根據AQI值判斷城市的空氣質量。若城市的AQI值(整數)不超過100則空氣質量優良,否則空氣質量有污染。當輸入的AQI值為-1時則退出程序。不要更改程序結構,將題中的①②③④填入正確的語句。
city=input(“請輸入城市名:”)
AQI=int(input(“請輸入空氣質量指數AQI的值:”))
①______ AQI!=-1:
if ②______:
print(city,“的空氣質量優良。”)
③______:
print(city,“的空氣質量有污染。”)
city=input(“請輸入城市名:”)
AQI=④(input(“請輸入空氣質量指數AQI的值:”))
(1)序號①答案為
A.if
B.while
C.for
D.def
(2)序號②答案為
A.AQI>=100
B.AQI<=100
C.AQI>100
D.AQI<100
(3)序號③答案為
A.elif
B.break
C.if
D.else
(4)序號④答案為
A.int
B.float
C.str
D.else發布:2025/1/2 11:0:1組卷:0引用:0難度:0.4 -
2.一球從100米高度自由落下,每次落地后反跳回原高度的一半,再下落。編寫一個C程序,求它在第10次落地時,其經過了多少米?第10次反彈多高?
發布:2025/1/2 11:0:1組卷:1引用:3難度:0.3 -
3.利用海倫公式求解三角形面積。已知a,b,c為三角形的三條邊長,p為三角形的半周長,即p=(a+b+c)/2,計算此三角形面積S的海倫公式為:
。不要更改程序結構,將題中的①②③填入正確的語句。
import math#導入數學模塊
def hl(a,b,c):#定義求三角形面積的函數
p=①
s=math.jye.ai(②)#sqrt用于計算算術平方根
return ③#返回面積的值
a,b,c=3,4,5#邊長依次賦值
print(“此三角形的面積S為:“,hl(a,b,c))
A. (a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C. (a+b+c)*2 D.s
(2)序號②答案為
A.(a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C.(a+b+c)*2 D.(3+4+5)/2
(3)序號③答案為
A.p B.s
C.p*(p-a)*(p-b)*(p-c) D.0發布:2025/1/2 11:0:1組卷:0引用:0難度:0.4