- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
一个单窗体VB程序的运行界面如下图所示。

下列说法正确的是( )
(1)窗体内有1个按钮
(2)窗体内有2个文本框
(3)窗体内有3个标签
(4)该窗体的标题Caption属性值是“加法计算器”

下列说法正确的是( )
(1)窗体内有1个按钮
(2)窗体内有2个文本框
(3)窗体内有3个标签
(4)该窗体的标题Caption属性值是“加法计算器”
A.(2)(3) | B.(1)(4) | C.(1)(2) | D.(3)(4) |
如图所示,下面程序实现读取数据文件,进行可视化呈现,直观地展示了历年来报考研究生人数变化趋势。阅读程序回答问题:

(1)本程序中引用了第三方库,写出库名称,从代码中找出来。
(2)本程序读取了数据文件,文件名称是什么?
(3)读取数据文件的数据赋值到二维表型数据结构对象中,这个对象的名称是什么?
(4)本程序实现了数据可视化,呈现的图表为柱形图、折线图还是散点图?通过哪行代码来实现?
(5)本程序文件实现的图表的标题是什么?阅读程序,从其中找出来。

(1)本程序中引用了第三方库,写出库名称,从代码中找出来。
(2)本程序读取了数据文件,文件名称是什么?
(3)读取数据文件的数据赋值到二维表型数据结构对象中,这个对象的名称是什么?
(4)本程序实现了数据可视化,呈现的图表为柱形图、折线图还是散点图?通过哪行代码来实现?
(5)本程序文件实现的图表的标题是什么?阅读程序,从其中找出来。
素数只能被1和它本身整除,不能被其他自然数整除。编写VB程序实现如下功能:单击“产生奇数并判断”按钮Command1,随机产生一个三位正奇数显示在文本框Text1中,并在文本框Text2中显示其是否为素数的判断结果。例如,当随机产生的三位正奇数为953时,程序运行界面如图a所示。

(1)在设计程序界面时,应使用图b所示“控件工具箱”中的_____________(填写相应编号)添加文本框Text1。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer
Dim flag As Boolean ’用于标记是否为素数
Randomize
n = Int( ①_____)*2+1
Text1.Text = Str(n)
flag = True ’标记为素数
i = 3
Do While i <= n - 1 And flag = True
If ②_____ Then
Text2.Text = Str(n) + "是素数"
Else
Text2.Text = Str(n) + "不是素数"
End If
End Sub
(3)以下选项中,与加框处表达式“n Mod I = 0”等价的是______________(单选,填字母)。

(1)在设计程序界面时,应使用图b所示“控件工具箱”中的_____________(填写相应编号)添加文本框Text1。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer
Dim flag As Boolean ’用于标记是否为素数
Randomize
n = Int( ①_____)*2+1
Text1.Text = Str(n)
flag = True ’标记为素数
i = 3
Do While i <= n - 1 And flag = True
If n Mod i = 0 Then
flag = FalseEnd If
i = i + 2
LoopIf ②_____ Then
Text2.Text = Str(n) + "是素数"
Else
Text2.Text = Str(n) + "不是素数"
End If
End Sub
(3)以下选项中,与加框处表达式“n Mod I = 0”等价的是______________(单选,填字母)。
A.n \ i = Int(n / i) | B.n \ i = n/ i | C.n Mod i = n \ i |
有如下所示VB程序段:
If t Mod 2 = i Mod 2 Then
t = t + 1
Else
t = t + 2
End If
s = s + Mid(str1,t,1)
str1 = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
s = “”
For i = 1 To 4
t = Int(Rnd*10) + 1If t Mod 2 = i Mod 2 Then
t = t + 1
Else
t = t + 2
End If
s = s + Mid(str1,t,1)
Next i
List1.AddItem s
执行该程序段后,列表框Listl中可能显示的内容是( )A.BADC | B.BCDY | C.DEFG | D.CDEF |
有如下程序段:

数组元素a(1)到a(10)的值依次为“66,34,12,59,21,26,18,45,20,16”,经过该程序段“加工”后,数组元素a(1)到a(10)的值依次为( )

数组元素a(1)到a(10)的值依次为“66,34,12,59,21,26,18,45,20,16”,经过该程序段“加工”后,数组元素a(1)到a(10)的值依次为( )
A.66,12,16,34,18,59,21,26,20,45 |
B.12,16,18,20,21,26,34,45,59,66 |
C.66,59,45,34,12,26,21,20,18,16 |
D.12,16,18,66,34,20,59,21,26,45 |
二分查找又称折半查找,是一种应用于有序数列的高效查找算法。下列数列中适合二分查找算法的是( )
(1)11 99 5 17 2 39
(2)30 52 63 71 78 81
(3)67 62 68 6 15 15
(4)85 78 59 53 19 18
(1)11 99 5 17 2 39
(2)30 52 63 71 78 81
(3)67 62 68 6 15 15
(4)85 78 59 53 19 18
A.(3)(4) | B.(2)(3) | C.(1)(2) | D.(2)(4) |
酒店房间管理问题:某酒店房间(房间数小于1000)编号按1、2、3……连续编号,客房经理对没有入住的房间使用如下方法来登记管理。连续的空房间,登记第一个房间的编号和连续的空房间数,比如空房间1,2,6,7,8,10,则登记3条记录,分别为1_2,6_3,10_1。某旅客如果退房,需要把这个房间号也登记进去,共有4中情况需要处理:
(1)上靠:若退的房间号为3,则原来登记的记录变为1_3,6_3,10_1;
(2)下靠:若退的房间号为5,则原来登记的记录变为1_2,5_4,10_1;
(3)上下靠:若退的房间号为9,则原来登记的记录变为1_2,6_5;
(4)上下都不靠:若退的房间号为4,则原来登记的记录变为1_2,4_1,6_3,10_1
根据上述规则,小明编写了相应的VB程序,程序启动时读入空房间数据,并在列表框List1中显示,在文本框Text1中输入退房号,单击“退房”按钮后更新列表框List1中的数据。
程序界面如下图所示,请回答下列问题:

(1)当前登记的记录有3条,分别为2_3,6_2,9_4。某旅客退掉8号房间,则登记的记录将变为________。
第二部分通用技术(共50分)
(2)实现上述功能的VB程序如下,请将划线处的代码补充完整。
Const n=1000
Dim a(0 To n)As Integer
a(i)保存第i条记录的开始房间号
Dim b(0 To n)As Integer
b(i)保存第i条记录的房间数
Dim c As Integer, k As Integer, sp As Integer
k为原始记录数
Private Sub Form_Load()
程序启动时从数据库中读取原始k条记录,依次存入a(1),b(1),a(2),b(2),…,a(k),b(k),代码略
为了程序处理方便,虚设下面两条记录
A(0)=0:b(0)=0:sp=k+1:a(sp )=1000:b(sp)=0
End Sub
Private Sub Command1_Click()
以下处理退房登记问题
Ifa(i)+b(i)=c Then
If a(i+1)=c+1Then
处理第3种情况
Next j
sp = sp-1
处理第2种情况
处理第4种情况
List1.Clear
For i=1To sp-1
(1)上靠:若退的房间号为3,则原来登记的记录变为1_3,6_3,10_1;
(2)下靠:若退的房间号为5,则原来登记的记录变为1_2,5_4,10_1;
(3)上下靠:若退的房间号为9,则原来登记的记录变为1_2,6_5;
(4)上下都不靠:若退的房间号为4,则原来登记的记录变为1_2,4_1,6_3,10_1
根据上述规则,小明编写了相应的VB程序,程序启动时读入空房间数据,并在列表框List1中显示,在文本框Text1中输入退房号,单击“退房”按钮后更新列表框List1中的数据。
程序界面如下图所示,请回答下列问题:

(1)当前登记的记录有3条,分别为2_3,6_2,9_4。某旅客退掉8号房间,则登记的记录将变为________。
第二部分通用技术(共50分)
(2)实现上述功能的VB程序如下,请将划线处的代码补充完整。
Const n=1000
Dim a(0 To n)As Integer

Dim b(0 To n)As Integer

Dim c As Integer, k As Integer, sp As Integer

Private Sub Form_Load()


A(0)=0:b(0)=0:sp=k+1:a(sp )=1000:b(sp)=0
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
c=Val(Text1.Text)
i=1
Do While a(i)<c
i=i+1Loop
i=i-1

Ifa(i)+b(i)=c Then
If a(i+1)=c+1Then

①__________
For j=i+1 To sp-1
a(j)=a(j+1):b(j)=b(j+1)Next j
sp = sp-1
Else 处理第1种情况
End If
ElseIfc+1=a(i+1)Then
a(i+1)=c:b(i+1)=b(i+1)+1
Else
For j= ②________
a(j)=a(j-1):b(j)=b(j-1)Next j
a(i+1)=c:b(i+1)=1: ③______
End IfList1.Clear
For i=1To sp-1
List1.Addltem"第"& CStr(i) &"条记录"&CStr(a(i))&"_"&CStr(b(i))
CStr函数的作用是将数字转成字符串
Next i
End Sub分析完善程序。
假设银行的年存储利率为3%,如果现在存储10000元钱,问多少年后连本带利超过12000元。设定:连本带利=本金*(1+利率)∧年数
假设n年后连本带息超过12000,根据题意得出数学关系式:10000*(1+3%)∧n>12000,求最小的n。
(参考程序)
Dim s as single
Dim r as single
Dim n as integer
s=10000
r=0.03
n=0
Do while
n=n+1
s=s*(1+r)
Loop
Print n;”年后”:”连本带利超过”;s
根据上述回答下列问题
(1)本题采用的算法是___________(填写:解析法/穷举法/排序法/递归法)
(2)写出参考程序中空白处表达式__________________________________ 。
假设银行的年存储利率为3%,如果现在存储10000元钱,问多少年后连本带利超过12000元。设定:连本带利=本金*(1+利率)∧年数
假设n年后连本带息超过12000,根据题意得出数学关系式:10000*(1+3%)∧n>12000,求最小的n。
(参考程序)
Dim s as single
Dim r as single
Dim n as integer
s=10000
r=0.03
n=0
Do while
n=n+1
s=s*(1+r)
Loop
Print n;”年后”:”连本带利超过”;s
根据上述回答下列问题
(1)本题采用的算法是___________(填写:解析法/穷举法/排序法/递归法)
(2)写出参考程序中空白处表达式__________________________________ 。
数据的有损压缩:对多媒体数据进行有损压缩时,以少量数据丢失作为代价的,比如对某8 bit量化缩为6 bit量化,其算法可简单表示为:逐一删除各个字节的后2 bit,将删除后的6 bit数据首尾相连,然后重新按照8 bit一组构建字节,以十六进制显示。
例如,压缩前的原始数据为:
11111100 010111010 10110000可表示为十六进制:FC 5A B0
删除每字节的后2 bit:
111111 00 010110 10 101100 00
首尾相连构建新的数据:
11 11110101 10101100表示为十六进制:…F5 AC
自此,原数据进行了有损压缩。程序运行界面如下所示,

实现上述算法的VB程序如下,但程序中加框处有误,请改正。
Dim a(1 To 100) As Integer
Const code="0123456789ABCDEF"
Const n=100
Private Sub Form_Load()'以随机数模拟读取原始数据
s=""
Randomize
For i=1 To n
End sub
Private Sub Command1_Click()
For i=1 To n
For j=l To n* 4 Step 8 '每8位一组每8位一组,取前6个字符
For i=1 To 4 *(n-1) Step 4 '每4位一组转为十六进制显示
Text2.Text= Text2.Text +BtoH (Mid(s,1,4))
Next i
End sub
Function HtoB (x As Integer) As String '十六进十六进制转为二进制函数
t=""
m=0
Do While
'②
HtoB=Mid("0000",1,4-m)+t
End Function
Function BtoH (y As String) As String '二进制转为十六进制函数
t1=Val(Mid(y,4,1))
t2=Val(Mid(y,3,1))
t3=Val(Mid(y,2,1))
t4=Val(Mid(y,1,1))
s=t1+t2*+t3*4+t4*8
BtoH= Mid(code,s+1,1)
End Function
(1)①处加框代码应改为________________________________________。
(2)②处加框代码应改为________________________________________。
例如,压缩前的原始数据为:
11111100 010111010 10110000可表示为十六进制:FC 5A B0
删除每字节的后2 bit:
111111 00 010110 10 101100 00
首尾相连构建新的数据:
11 11110101 10101100表示为十六进制:…F5 AC
自此,原数据进行了有损压缩。程序运行界面如下所示,

实现上述算法的VB程序如下,但程序中加框处有误,请改正。
Dim a(1 To 100) As Integer
Const code="0123456789ABCDEF"
Const n=100
Private Sub Form_Load()'以随机数模拟读取原始数据
s=""
Randomize
For i=1 To n
a(i)=Int (Rnd()*16)
Text1.Text=Text1.Text+ '①
End sub
Private Sub Command1_Click()
For i=1 To n
t=t+HtoB(a(i))
Next iFor j=l To n* 4 Step 8 '每8位一组每8位一组,取前6个字符
s=s+Mid(t,j, 6)
Next jFor i=1 To 4 *(n-1) Step 4 '每4位一组转为十六进制显示
Text2.Text= Text2.Text +BtoH (Mid(s,1,4))
Next i
End sub
Function HtoB (x As Integer) As String '十六进十六进制转为二进制函数
t=""
m=0
Do While

r=x Mod 2
m=m+1
t= Trim(r)+t 'trim()用于删除前导空格
x=x\2
LoopHtoB=Mid("0000",1,4-m)+t
End Function
Function BtoH (y As String) As String '二进制转为十六进制函数
t1=Val(Mid(y,4,1))
t2=Val(Mid(y,3,1))
t3=Val(Mid(y,2,1))
t4=Val(Mid(y,1,1))
s=t1+t2*+t3*4+t4*8
BtoH= Mid(code,s+1,1)
End Function
(1)①处加框代码应改为________________________________________。
(2)②处加框代码应改为________________________________________。
给定 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 个区间,数组各元素为“12,44,34,45,66,50,45,70”,第 1 段“重叠块”中的元素个数为 3 个,第 1 个区间为[10,50],则第 2 个区间可能为______________(单选,填字母
(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(2 m-1)存储第 m 段"非重叠块"元素个数,c(2 m)存储
第 m 段"重叠块"的元素个数(值为 0)
'c(2 m+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 <= m
If IsIn(i, p) Then
If①_____ Then
LL = LL + 1
Else
L = L + LL + 1
LL = 0
End If
i = i + 1
Else
c(2 ∗ p - 1) = L
c(2 ∗ p) = LL
L = 0
②_____
p = p + 1
End If
Loop
If i <= n Then
③_______
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 a(i) >= b(2 ∗ p - 1) And a(i) <= b(2 ∗ p)
And p <= m Then
IsIn = True
Else
IsIn = False
End If
End Function
•第 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 个区间,数组各元素为“12,44,34,45,66,50,45,70”,第 1 段“重叠块”中的元素个数为 3 个,第 1 个区间为[10,50],则第 2 个区间可能为______________(单选,填字母
A.[30,80] / | B.[9,45] / | C.[60,90])。 |
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(2 m-1)存储第 m 段"非重叠块"元素个数,c(2 m)存储
第 m 段"重叠块"的元素个数(值为 0)
'c(2 m+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 <= m
If IsIn(i, p) Then
If①_____ Then
LL = LL + 1
Else
L = L + LL + 1
LL = 0
End If
i = i + 1
Else
c(2 ∗ p - 1) = L
c(2 ∗ p) = LL
L = 0
②_____
p = p + 1
End If
Loop
If i <= n Then
③_______
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 a(i) >= b(2 ∗ p - 1) And a(i) <= b(2 ∗ p)
And p <= m Then
IsIn = True
Else
IsIn = False
End If
End Function