試卷征集
加入會員
操作視頻

在一個文檔中,每行包含一個字符串?,F(xiàn)使用如下規(guī)則對其壓縮:壓縮時,對于每個字符串求其與前一字符串的公共前綴,然后使用公共前綴的長度和字符串的剩余部分(以空格隔開)表示該字符串,每個空格和字符都會占用一個字節(jié)空間。圖a所示為該壓縮規(guī)則示意圖。小明為此編寫了VB程序,功能如下:運(yùn)行程序時,在列表框List1中顯示原字符串內(nèi)容,單擊“壓縮”按鈕Command1,在列表框List2中顯示壓縮后字符串,并在標(biāo)簽Label2中顯示壓縮后容量。程序運(yùn)行界面如圖b所示。
菁優(yōu)網(wǎng)
實(shí)現(xiàn)上述功能的 VB 代碼如下,但橫線處代碼有錯,請改正。
Dim word(3000)As String,pre(3000)As String
Const n=2000
Private Sub Form_Load (  )
'該過程的作用是從數(shù)據(jù)庫讀取 n 個單詞,按字典順序存儲在數(shù)組 word 中,并在 Label1輸出單詞數(shù)量和容量
'代碼略
End Sub
Private Sub Command1_Click (  )
Dim conp As Integer'存儲壓縮后的容量
Dim f As Boolean,m As Integer,k As Integer'k 存儲公共前綴的長度
conp=0
For i=1To n
k=0
If i=1Then f=False Else f=True
 菁優(yōu)網(wǎng)'(1)
Do While k<m And f=True
If Mid(word(i),1,k+1)=Mid(word(i-1),1,k+1)Then
 菁優(yōu)網(wǎng)′(2)
Else
f=False
End If
Loop
pre(i)=CStr(k)+““+Mid(word(i),k+1,Len(word(i)))
'Cstr ( ?。┖瘮?shù)能夠?qū)?shù)字類型的值轉(zhuǎn)換為字符類型的值,并卻掉前導(dǎo)空格。
List2.AddItem pre(i)
菁優(yōu)網(wǎng)'(3)
Next i
Label2.Caption=“壓縮后容量為“+Str(conp)+“字節(jié)“
End Sub

【考點(diǎn)】順序存儲結(jié)構(gòu)
【答案】見試題解答內(nèi)容
【解答】
【點(diǎn)評】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/6/27 10:35:59組卷:1引用:1難度:0.9
相似題
  • 1.某旅行團(tuán)需在酒店預(yù)訂一批房間,要求所預(yù)訂的房間號碼盡量集中,如果有多種方案,優(yōu)先選擇預(yù)訂房間數(shù)目較少的方案,有多組可選方案時選擇起始房間號最小的方案。酒店有單人間和雙人間兩種房間,b數(shù)組按房間號順序存儲該房間可入住人數(shù),其中可入住人數(shù)為0時,表示該房間已有人入住,不可預(yù)訂。比如有16個房間可入住人數(shù)如下:
    房號 i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    人數(shù) b(i) 2 0 2 2 0 1 2 1 2 1 0 2 1 0 2 2
    下表給出了選擇預(yù)訂房間的過程(區(qū)間長度表示預(yù)訂房間的起始房號到最后一個房號包含的房間數(shù),區(qū)間長度值越小,代表預(yù)訂房間分布越集中),選擇最優(yōu)方案過程如(1)(2)(3)所示。
    (1)從房間號碼分布區(qū)間長度值最小原則,選擇方案2、4、9。
    (2)分布區(qū)間長度值相同時,選擇預(yù)訂房間數(shù)目最小的,因此選擇方案2、9。
    (3)所有可選方案中,優(yōu)先選擇最先成立的(起始房號最小的)方案,最終選擇方案2。
    方案 房號范圍 區(qū)間長度 房間數(shù)目 備注 方案 房號范圍 區(qū)間長度 房間數(shù)目 備注
    方案1 1~6 6 4 方案6 8~13 6 5
    方案2 3~7 5 4 方案7 9~15 7 4 人數(shù)>7,取消10號房
    方案3 4~9 6 4 人數(shù)>7 取消6號單人間 方案8 10~16 7 4 人數(shù)>7,取消13號房
    方案4 6~10 5 5 方案9 12~16 5 4
    方案5 7~12 7 4 人數(shù)>7,取消8號單人間
    程序運(yùn)行界面如下,請完成相應(yīng)的小題。
    (1)如下圖所示16個房間,當(dāng)入住人數(shù)為5人時,預(yù)訂房間號是:
     
    。
    菁優(yōu)網(wǎng)
    (2)請?jiān)跈M線處填寫適當(dāng)?shù)拇a。
    Const n=16'假設(shè)酒店總房間數(shù)為16
    Dim b(1 To n) As Integer'b 數(shù)組按房間號順序存儲各房間可入住人數(shù)
    Function find1(x,y) As Integer
    '函數(shù) find1(x,y)的作用是從 b(x)到 b(y)中找到值為1的數(shù)組變量的下標(biāo),若找不到,返回值為0
    End Function
    Private Sub Command1_Click ____
    Dim s As Integer,d As Integer,f as integer,num As Integer,roomnum As Integer
    Dim minnum as integer'minnum 變量存儲當(dāng)前最優(yōu)方案中的預(yù)訂房間數(shù)目
    Dim mindist As Integer'mindist 存儲當(dāng)前的最小分布區(qū)間長度
    '所有房間的可入住人數(shù)按房間號碼順序存儲到數(shù)組b中并顯示在list1中,代碼略
    num=Val(Text1.Text)
    minnum=n:mindist=n:s=0:start=0:f=0:pos=0
    For i=1 To n
    If b(i)<>0 Then
    j=i:s=0:roomnum=0
    Do While s<num And j<=n
    s=s+b(j)
    If b(j)>0 Then roomnum=roomnum+1
    j=j+1
    Loop
    d=
     

    If s=num Then
    If d<mindist Or 
     
     Then
    start=i:mindist=d:minnum=roomnum:pos=0
    End If
    ElseIf s>num Then'若可入住人數(shù)超出,在當(dāng)前區(qū)間內(nèi)所選房間中取消1個單人間
    f=find1(i+1,j-2)
    If f>0 Then
    If d<mindist Or d=mindist And roomnum-1<minnum Then
    start=i:mindist=d:minnum=roomnum-1:pos=f
    End If
    End If
    End If
    End If
    Next i
    If start=0 Then
    Label2.Caption=“房間數(shù)量不足“
    Else
    List2.AddItem“預(yù)訂房間:“+Str(minnum)+“間“
    For i=start To
     

    If b(i)>0 And i<>pos Then
    List2.AddItem“房間號:“+Str(i)+“,入住人數(shù):“+Str(b(i))
    End If
    Next i
    End If
    End Sub

    發(fā)布:2024/6/27 10:35:59組卷:2引用:1難度:0.3
  • 2.楊輝三角是二項(xiàng)式系數(shù)在三角形中的一種幾何排列,如1圖所示。從圖可看出其顯著特征是除斜邊上的1外,其余數(shù)值均等于其肩部兩數(shù)之和。
    菁優(yōu)網(wǎng)
    小明設(shè)計逐行打印楊輝三角的算法描述如下:
    (1)確定折半邊界值。當(dāng)此行數(shù)據(jù)個數(shù)為奇數(shù)時,邊界為與首末“等距離”的那個數(shù):當(dāng)此行數(shù)據(jù)個數(shù)為偶數(shù)時,邊界為與首末“等距離”的那兩個數(shù)中左側(cè)數(shù);
    (2)計算楊輝值。數(shù)組順序存儲單行楊輝值,只計算邊界以左的楊輝值,自邊界處向左依次計算至第2列(1列直接置1)。
    (3)輸出楊輝值。正向輸出數(shù)組中存儲的楊輝值,再反向輸出數(shù)組中所存值
    (4)轉(zhuǎn)到步驟1,繼續(xù)以上步驟處理。
    打印5行楊輝三角示意圖如2圖所示。
    菁優(yōu)網(wǎng)
    程序運(yùn)行效果如3圖所示,請回答下列問題:
    菁優(yōu)網(wǎng)
    (1)當(dāng)文本框Text1中輸入行數(shù)為8時,執(zhí)行該程序后,a(2)的值為
     
    。
    (2)請?jiān)跈M線處填入合適的代碼。
    菁優(yōu)網(wǎng)

    發(fā)布:2024/4/20 14:35:0組卷:1引用:1難度:0.6
  • 3.在一個數(shù)組中存儲了若干個學(xué)生的技術(shù)成績小題分,其中a(1)存儲學(xué)生個數(shù),從a(2)開始按順序存儲小題分?jǐn)?shù)據(jù)。每個學(xué)生有33個小題的數(shù)據(jù),例:a(2)-a(13)是“學(xué)生1”的信息客觀題得分,a(27)-a(30)是“學(xué)生1”的信息主觀題得分;a(14)-a(26)是“學(xué)生1”的通用客觀題得分,a(31)-a(34)是“學(xué)生1”的通用主觀題得分。
    具體如表:
    題號 1-12 13-25 26-29 30-33
    科目題型 信息客觀題 通用客觀題 信息主觀題 通用主觀題
    滿分分值 每題2 分 每題2分 4/8/7/7 6/9/3/6
    小李根據(jù)上述描述,設(shè)計了一個統(tǒng)計所有學(xué)生信息各題得分率的算法。程序運(yùn)行后,首先在列表框List1中顯示信息技術(shù)各小題得分,單擊“計算”按鈕“Command1”,在列表框List2中顯示信息各題的題號和得分率,并在文本框Text1中輸出所有學(xué)生的信息平均分(平均分=各題得分率*分值之和)。
    菁優(yōu)網(wǎng)
    算法的VB程序如下,回答下列問題。
    (1)根據(jù)題目描述,使用如圖所示數(shù)據(jù),a(95)的數(shù)值是
     

    (2)在程序橫線處填上合適代碼,使程序完整
    Dim a(1 To 1000)As Integer,n As Integer
    Private Sub Form_Load ( ?。?br />‘讀入數(shù)據(jù)到數(shù)組a,數(shù)據(jù)個數(shù)n,代碼略
    End Sub
    Private Sub Command1_Click ( ?。?br />Dim i As Integer,j As Integer
    Dim fz(1 To 16)As Integer'fz數(shù)組存儲信息各題滿分值
    Dim b(1 To 33)As Single'數(shù)組b存儲全卷各題的平均得分
    For i=1 To 16'數(shù)組fz存儲信息16個小題的滿分值
    If i<=12 Then fz(i)=2
    fz(13)=4:fz(14)=8:fz(15)=7:fz(16)=7
    Next i
    For i=2 To n'把數(shù)組a數(shù)據(jù)分別統(tǒng)計到各題中,計算各題總得分

    b(j)=a(i)+b(j)
    Next i
    For i=1 To 33
    If i<=12 Then
    b(i)=b(i)/(a(1)*fz(i))’計算信息客觀題各題的得分率
    ElseIf i>=26 And i<=29 Then
    b(i)=
    End If
    Next i
    For i=1 To 16
    If i>12 Then j=i+13 Else j=i
    b(j)=Int(b(j)*1000+0.5)/10'對結(jié)果四舍五入保留1位小數(shù)
    List2.AddItem Str(i)+Str(b(j))+“%“
    ave=
    Next i
    Text1.Text=Str(ave/100)
    End Sub

    發(fā)布:2024/4/20 14:35:0組卷:1引用:1難度:0.5
小程序二維碼
把好題分享給你的好友吧~~
APP開發(fā)者:深圳市菁優(yōu)智慧教育股份有限公司| 應(yīng)用名稱:菁優(yōu)網(wǎng) | 應(yīng)用版本:5.0.7 |隱私協(xié)議|第三方SDK|用戶服務(wù)條款
本網(wǎng)部分資源來源于會員上傳,除本網(wǎng)組織的資源外,版權(quán)歸原作者所有,如有侵犯版權(quán),請立刻和本網(wǎng)聯(lián)系并提供證據(jù),本網(wǎng)將在三個工作日內(nèi)改正