试题

试题 试卷

logo

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

浙江省A9协作体2023-2024学年高三上学期信息技术暑假返校联考试卷

张三是一名计算机专业的大学生,为了帮助同学们学习专业相关的英语词汇,编写一个简易字典程序。该程序中存放词汇数据库,在学习中输入英文单词,可以获得中文翻译结果。程序中的词汇数据库采用链表方式存储,首字母相同时按升序排序。查找单词时,首先根据首字母找到同首字母最小单词所在链表,再按照链表顺序查找该单词。
(1)、根据题意 ,部分的单词库数据逻辑结构如图所示 ,查找单词“byte” 的过程是 “binary ”→ “bit ”→“byte”,补充图中空白单元格的值为

(2)、wordlist(data,info)函数实现将词汇数据库 data 以链表的方式按字母序升序排列。info 表示词汇数据库中各字母开头的最小单词位置,如 info[0]表示字母 a 开头的最小单词在 词汇数据库 data 中的位置。实现该功能的程序如下,请在划线处填入合适的代码。

def wordlist(data,info) :

    n = len (data)

    for i in range(n):

        data[i].append(-1)    #data[i]追加一个元素-1

    for i in range(n):

        d = data[i][0]

       

        if info[k] == -1:

            info[k] = i

        else:

            head = info[k]

            q = head

            while  :

                p = q

                q = data[q][2]

            if q != head:

                data[p][2] = i

                data[i][2] = q

            else:

                data[i][2] = head

               

return data,info

(3)、searchword(data,info,key)函数实现单词的查找。程序如下,请在划线处填入合适的代码。

def searchword(data,info,key) :

    k = ord(key [0]) - ord("a")

    head = info[k]

    p = head

    while p != -1:

        if data[p][0] == key:

            return

            p = data[p][2]

return "没有找到该单词"

读取词汇数据库,存入列表 data 中,列表的每个元素包含 2 个数据项,分别为英文单词和中 文翻译,如 data = [[‘audio ’,‘音频 ’], [‘binary ’,‘二进制数 ’] …], 数据读取 存入的代码略。

'''

info = [-1] * 26

data,info = wordlist(data,info)

key = input("请输入查找单词:").lower ()    #转化为小写字母

res = searchword(data,info,key)

print(key, "查找结果是:", res)

举一反三
查找最接近的数。编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输入产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数。然后在文本框Text2中输入要查找的整数,单击命令按钮“查找”后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示。实现上述功能的VB代码如下,请在横线处填入合适代码。

Dim n As Integer     ‘存储随机数的个数

Dim f(1 To 100) As Boolean     ‘f (i)为true时表示随机整数i已经产生过

Dim a(1 To 100) As Integer     ‘依次存放升序排序后的n个随机数

Private Sub Command1_Click()     ‘命令按钮“产生随机数并升序排列”的单击事件

Dim i As Integer

Randomize

For i=1 To 100

 f(i)=False

Next i

n=Val(Text1. Text)

For i=1 To n

 t=Int(Rnd * 100+1)

 Do While f(i)=True

  t=Int (Rnd * 100+1)

 Loop

 {#blank#}1{#/blank#}

Next i

j=0

For i=1 To 100     ‘实现排序并输出

 If f(i)=True Then

  {#blank#}2{#/blank#}

  a(j)=i

  List1.AddItem Str(i)

 End If

Next i

End Sub

Private Sub Command2_Click()     ‘命令按钮“查找”的单击事件

Dim key As Integer

key=Val(Text2. Text)

If key <=a(1) Then Label3. Caption=Str(a(1)) : Exit Sub

If key >=a(n) Then Label3. Caption=Str(a(n)) : Exit Sub

L=1: R=n

Do While L <=R     ‘找到与key较为接近的两个数a(R)和a(L)

 m=(L+R) \2

 If key <=a(m) Then

  R=m-1

 Else

  L=m+1

 End If

Loop

If{#blank#}3{#/blank#}Then      ‘在a(R)和a(L)中选出更接近key的数

 Label3. Caption=Str(a(R))

Else

 Label3. Caption=Str(a(L))

End If

End Sub

返回首页

试题篮