试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省杭州市2017-2018学年高三上学期信息技术教学质量检测

【加试题】某数据存储算法如下:使用长度为n的一维数组h来存储m个不同整数型数据(m<n),数据的存储位置t根据存储数据的值除n取余计算得到。例如使用长度为11的数组来存储67,45,1 275,119,145,269,64共7个数据,先存储第1个数据67,67 Mod 11=1,在第1位置上没有数据,则存放在第1位置。第2个数据45,45 Mod 11=1,而在第1位置上已存有数据,那么查找下一位置有没有数据,现第2位置上没有数据,则存放在第2位置。在查找空位时如果到了数组最后一个位置还没有空位,则从头继续查找,以此类推……,举例数据存储结果如表所示。

位置

0

1

2

3

4

5

6

7

8

9

10

数据

64

67

45

145

269

119

1275

(1)、若按上述规则,再存储一个数据79,则存储在第 位置。

 

(2)、当n=97时,实现上述数据存储及相应数据查找的VB程序如下,运行结果如图所示,请在画线处填入合适的代码。

Const n=97

Dim d(0 To 96)As Integer,h(0 To 96)As Integer

Dim m As Integer      ‘变量m为数据个数

Private Sub Command1_Click()    ‘数据存储

    Dim i As Integer,t As Integer

    ‘从数据库读取数据先存储在数组d中,代码略

    List1.Clear

    For i=0 To n-1

         h(i)=-1    ‘数组元素初始化

    Next i

    For i=0 To m

    ① 

        Do While h(t)<>-1

             t=(t+1)Mod l2

        Loop

        h(t)=d(i)

  Next i

  For i=0 To n-1

    List1.AddItem Str(i)&“:”&Str(h(i))

  Next i

End Sub

Private Sub Command2_Click()    ‘数据查找

    Dim x As Integer,Y As Integer,z As Integer

    x=Val(Text1.Text)

    y=x Mod n

    z=1

    Do While   ②  

        z=z+1

        y=(y+1)Mod n

    Loop

    If h(y)=x Then

        Label2.Caption=“共查找了”&Str(z)&“次,在第”&,Str(y)&“位置找到”

    Else

        Label2.Caption=“共查找了”&Str(z)&“次,没有找到”

    End If

End Sub

 ② 

(3)、数组h中的元素值初始化为-1表示含义是

 

举一反三
字符串删除与插入:给定一个长度不超过100位的字符串S,现有以下两种操作指令:

指令1(删除):给出一个字符串S1,在字符串S中找到最左边的一个字符串S1,将其删除,若在S中不存在字符串S1,则字符串S不变。

例如:S=“China is a big family,it is big”   S1=“big”

      则执行指令1后,S=“China is a family,it is big”

      若S1=“small”,则S不变。

指令2(插入):给出一个字符串S2,和一个整数w,将S2插入到S中以w开始的位置。

例如:S=“a big family”   S2=“very ”   w=3

     则执行指令2后,S=“a very big family”

     注意S中“a”后有一个空格,S2中“y”后有一个空格

实现上述功能的VB程序如下。请在划线处填入合适代码。

Dim S As String

Private Sub Command1_Click()   ’单击Command1实现删除指令

Dim S1 As String

S = Text1.Text

S1 = Text2. Text

S = del(S1)

Text5.Text = S

End Sub

Private Sub Command2_Click()   ’单击Command2实现插入指令

Dim S2 As String, W As Integer

S = Text1.Text

S2 = Text2.Text

W = Val(Text4.Text)

S = {#blank#}1{#/blank#}      ’调用函数,实现插入指令

Text5.Text = S

End Sub

Function del(S1 As String) As String   ’在字符串S中查找并删除S1

Dim S3 As String

For i = 1 To Len(S) - Len(S1) + 1

  S3 = ""                    ’S3表示从位置i开始,取出长度和S1相同的字符串

  For j = i To i + Len(S1) - 1

    S3 = S3 + Mid(S, j, 1)

  Next j

  If {#blank#}2{#/blank#} Then     ’如果找到S1,则将S1删除

S = Mid(S, 1, i - 1) + Mid(S, i + Len(S1), Len(S) - Len(S1) - i+ 2)

del = S

    Exit Function     ’删除左边的第一个S1后,退出函数,以保证只删除一次

  End If

Next i

End Function

Function add(S2 As String, W As Integer) As String

  S =  Mid(S, 1, W - 1) + S2 + {#blank#}3{#/blank#}   ’将S2插入W开始的位置

  add = S

End Function

返回首页

试题篮