- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- + 算法实例的程序实现
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
某对分查找算法的VB程序段如下:
i=1:j=6:flag=False
key=Val(Text1.Text)
Do While i<=j And flag=False
m=(i+j)\2
If key=a(m) Then flag=True
If key<a(m) Then j=m-1 Else i=m+1
Loop
i=1:j=6:flag=False
key=Val(Text1.Text)
Do While i<=j And flag=False
m=(i+j)\2
If key=a(m) Then flag=True
If key<a(m) Then j=m-1 Else i=m+1
Loop
数组元素a(1)到a(6)的值依次为“7,9,15,27,34,51”。文本框Text1中输入“27”后运行该程序,运行结束后,下列说法不正确的是( )
A.变量flag的值为True | B.变量i的值为4 | C.变量j的值为4 | D.变量m的值为4 |
礼品分配问题:某班得到一件精美礼品,由于只有一件礼品,大家决定用下面方法来分配该礼品:n个同学围成一圈,按顺序从1到n进行编号。从第1个人开始报数,报到m的人退出,下一个人继续从1开始报数,报到m的人出圈┈┈,如此依次进行,直到留下的最后一个人得到该礼品。程序运行界面如图所示,单击“开始”按钮,将输出退出圈子的同学编号以及最后获得奖品的编号。

实现上述功能的VB程序如下,请回答下列问题。
(1)当班级总人数n=15,m=5的时候,获得礼品的同学编号是__________(填写数字)。
(2)在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, m As Integer
Dim num As Integer, t As Integer
Dim a(1 To 100) As Boolean
n = Val(Text1.Text)
m =Val(Text2.Text)
For i = 1 To n
_____
Do While t > 1
For i = 1 To n
If a(i) = True Then _____
If num = m Then
_____
t = t -1
num = 0
Text3.Text = Text3.Text +Str(i)
End If
Next i
Loop
For i = 1 To n
If a(i)= TrueThen Label2.Caption = "获得礼品同学编号:" + Str(i)
Next i
End Sub

实现上述功能的VB程序如下,请回答下列问题。
(1)当班级总人数n=15,m=5的时候,获得礼品的同学编号是__________(填写数字)。
(2)在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, m As Integer
Dim num As Integer, t As Integer
Dim a(1 To 100) As Boolean
n = Val(Text1.Text)
m =Val(Text2.Text)
For i = 1 To n
a(i) = True
Next i_____
Do While t > 1
For i = 1 To n
If a(i) = True Then _____
If num = m Then
_____
t = t -1
num = 0
Text3.Text = Text3.Text +Str(i)
End If
Next i
Loop
For i = 1 To n
If a(i)= TrueThen Label2.Caption = "获得礼品同学编号:" + Str(i)
Next i
End Sub
某升序排序算法的VB程序段如下:
Dim a (8) As Integer
For i=2 To 8

j=j-1
数组元素a(1)~a(8)的值为随机生成的整数,为实现升序排序,则上述程序段3个方框处的表达式分别为( )
Dim a (8) As Integer
For i=2 To 8
a(0)=a(i)
Do While a (0)<a(j)

j=j-1
Loop
数组元素a(1)~a(8)的值为随机生成的整数,为实现升序排序,则上述程序段3个方框处的表达式分别为( )
A.①j=i-1 ②a(j+1)=a(j) ③a(j+1)=a(0) |
B.①j=i+1 ②a(j+1)=a(j) ③a(0)=a(j+1) |
C.①j=i-1 ②a(j)=a(j+1) ③a(j+1)=a(0) |
D.①j=i+1 ②a(j)=a(j+1) ③a(0)=a(j+1) |
由于交通日益拥堵,某市对车辆实施限行政策,即根据车牌最后一位数字进行限行判断,双号则奇数日期限行,单号的偶数日期限行。如车牌号“浙A53350”,末位数字为0,则奇数日期限行,如车牌号“浙A5335B”,末位数字为5,则偶数日期限行。现有一VB程序用来查询限行情况,软件界面如图,在文本框Text1中输入车牌号,单击“判断”按钮Command1,并在文本框Text2中显示限行情况。

“查询”按钮Command1的单击事件处理过程如下:
Private Sub Command1_Click()
Dim i As Integer, n As Integer '变量n保存车牌的最末位数字
Dim cp As String, c As String
cp=Text1.Text
For i=7 To 3 Step -1
If ② Then
Text2.Text=″奇数日期限行″
Else
Text2.Text=″偶数日期限行″
End If
i=2
End Sub
在程序划线处填写适当的表达式或语句,以实现程序功能。
程序中①划线处应填入________________________。
程序中②划线处应填入________________________。

“查询”按钮Command1的单击事件处理过程如下:
Private Sub Command1_Click()
Dim i As Integer, n As Integer '变量n保存车牌的最末位数字
Dim cp As String, c As String
cp=Text1.Text
For i=7 To 3 Step -1
c=Mid(cp, i, 1)
If ① Then
n=Val(c)If ② Then
Text2.Text=″奇数日期限行″
Else
Text2.Text=″偶数日期限行″
End If
i=2
End If
Next iEnd Sub
在程序划线处填写适当的表达式或语句,以实现程序功能。
程序中①划线处应填入________________________。
程序中②划线处应填入________________________。
有如下VB程序段:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="provider=Microsoft.AC
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="provider=Microsoft.AC
A.OLEDB.12.0;data sourc=" +App.Path+"\socre.accdb" Conn.Open Set rs.ActiveConnection=conn Rs. Open"Selec*from cj" n=1 Do While Not rs.EOF Score(n)=rs.fields("成绩"):Name(n)=rs.fields("姓名") n=n+1:rs.MoveNext Loop 下列说法中不正确的是 |
B.定义的ADO的Connection对象实例名称是“conn” B.连接的数据库文件名是“\socre.accdb” |
C.查询的数据表名是“cj” |
D.该程序段运行后,可知所查询的数据表共有n-1条记录 |
食堂排队买菜。食堂排队买菜时,每个同学都有一个窗口买菜时间,如果某同学的等待时间超过他在窗口买菜时间的3倍,他就会不愉快,反之是愉快的。等待时间是指排在该同学之前的所有人的买菜时间之和。己知每个同学在窗口的买菜时间,请确定如何排队才能使愉快的人数最多,并输出最多的人数。例如:10个同学的买菜时间如下表所示,则最多有8个人是愉快的。
Const n=10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer,a As Integer,ans As Integer,t As Integer
,读取每个学生的买菜时间,依次存储在数组a中,代码略
For i =1 To n-1
k = i
For j = n To i+1 Step-1
If Then k = j
Next j
If a(i)<>a(k) Then t = a(i):a(i)=a(k):a(k)=t
Next i
s=0:ans=0
For i = 1 To n
If s<ans Then s=s+a(i):ans=ans+1
Next i
Label1.Caption="共有"+Str(ans)+ "个人是愉快的,且参与排队买菜。"
(1)代码“Private Sub Commandl_Click()”中的Command1是_________(单选,填字母:
(2)请在划线处填入合适代码。___________________________
(3)程序代码中,加框处代码有错,请改正。___________________________
(4)若10个同学的买菜时间都相同,则有_________个人是愉快的,且参与排队。
学生编号 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | l0 |
买菜时间 | 3 | 2 | 5 | 5 | 6 | 7 | 1 | 8 | 1 | 3 |
最终是否参与排队 | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 否 | 是 | 是 |
Const n=10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer,a As Integer,ans As Integer,t As Integer
,读取每个学生的买菜时间,依次存储在数组a中,代码略
For i =1 To n-1
k = i
For j = n To i+1 Step-1
If Then k = j
Next j
If a(i)<>a(k) Then t = a(i):a(i)=a(k):a(k)=t
Next i
s=0:ans=0
For i = 1 To n
If s<ans Then s=s+a(i):ans=ans+1
Next i
Label1.Caption="共有"+Str(ans)+ "个人是愉快的,且参与排队买菜。"
(1)代码“Private Sub Commandl_Click()”中的Command1是_________(单选,填字母:
A.对象名/ | B.事件名/ | C.事件处理过程名) |
(3)程序代码中,加框处代码有错,请改正。___________________________
(4)若10个同学的买菜时间都相同,则有_________个人是愉快的,且参与排队。
给定一个数组a,有n个元素(1≤n≤100),有以下两种操作:
操作1:在文本框中分别输入L、R、T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的每个元素增加T(1≤T≤100)
操作2:在文本框中输入K(1≤K≤n),在标签中输出a(K)的值。
为了提高算法的效率,小明设计了如下算法,以n=10为例,如下表所示。
①将n个元素依次分成
段(
表示对
石向下取整,每段的元素个数为
,若最后有不足
个元素,则自成一段。给每段设置一个标记,初始值都为0,如下表所示。
②对于操作1,输入的L、R属于同一段,则直接对a(L to R)的每个元素加上T。如输入4,6,3,则第2段中的每个数加上3,操作后如下表所示。
③对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个元素加上T,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个元素加上T,对a(L)元素所在段的下一段开始到a(R)元素所在段的前一段为止的每个段标记值增加T,这些段中的元素保持不变。如在上表的其础上再输入1,8,2,则第1段的3个数和第3段中的前2个数都加上2,第2段的段标记位增加2,如下表所示。
④对于操作2,若输入K的值为5,则输出a(5)的值,a(5)的值为该数组元素的值+段标记值,即a(5)=12。程序运行界面如下。请回答下列问题:
(1)若数组元素为“3,2,6,8,7,9,3,4,7,9,6”,依次进行以下3次操作后第3段的标记值为__________

操作1:依次输入1,11,1
操作1:依次输入7,9,2
操作2:输入8
(2)请在划线处填入合适的代码。
Const n = 10
Dim a(1 To n) As Integer
Dim f(1 T on) As Integer 'f数组元素依次表示每段的标记值
Dim bk As Integer 'bk表示每段的元素个数
Function BL(x As Integer) As Integer 'BL函数返回数组元素a(x)的段编号
BL=________________
End Function
Private Sub Form_Load()
’读取数据,并存储到数组a中,代码略
bk=Int(Sgr(n))
End Sub
Private Sub Command1_Click()
Dim L As Integer,R As Integer,T As Integer,i As Integer
L=Val(Text1.Text):R=Val(Text2.Text):T=Val(Text3.Text)
If BL(L)=BL(R) Then
Next i
a(i)= a(i)+T
Next i
For i=BL(L)+1 To BL(R)-1
f(i)= f(i)+T
Next i
For i=(BL(R)-1)* bk+1 To R
a(i)= a(i) +T
Next i
Private Sub Command2_Click()
Dim K As Integer
K=Val(Text4.Text)
Labe.15.Caption="经过一系列操作后.a("+Str(K)+ ")的值为:"+___________
End Sub
操作1:在文本框中分别输入L、R、T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的每个元素增加T(1≤T≤100)
操作2:在文本框中输入K(1≤K≤n),在标签中输出a(K)的值。
为了提高算法的效率,小明设计了如下算法,以n=10为例,如下表所示。
数组下标 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | l0 |
元素的值 | 7 | l2 | 3 | 6 | 7 | 1l | 8 | 24 | 9 | 5 |
①将n个元素依次分成





数组下标 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
元素的值 | 7 | 12 | 3 | 6 | 7 | 1l | 8 | 24 | 9 | 5 |
段编号 | 第l段 | 第2段 | 第3段 | 第4段 | ||||||
段标记值 | 0 | 0 | 0 | 0 |
②对于操作1,输入的L、R属于同一段,则直接对a(L to R)的每个元素加上T。如输入4,6,3,则第2段中的每个数加上3,操作后如下表所示。
数组下标 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
元素的值 | 7 | l2 | 3 | 9 | 10 | 14 | 8 | 24 | 9 | 5 |
段编号 | 第1段 | 第2段 | 第3段 | 第4段 | ||||||
段标记值 | 0 | 0 | 0 | 0 |
③对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个元素加上T,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个元素加上T,对a(L)元素所在段的下一段开始到a(R)元素所在段的前一段为止的每个段标记值增加T,这些段中的元素保持不变。如在上表的其础上再输入1,8,2,则第1段的3个数和第3段中的前2个数都加上2,第2段的段标记位增加2,如下表所示。
数组下标 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | l0 |
元素的值 | 9 | 14 | 5 | 9 | l0 | l‘l | 10 | 26 | 9 | 5 |
段编号 | 第1段 | 第2段 | 第3段 | 第4段 | ||||||
段标记位 | 0 | 2 | 0 | 0 |
④对于操作2,若输入K的值为5,则输出a(5)的值,a(5)的值为该数组元素的值+段标记值,即a(5)=12。程序运行界面如下。请回答下列问题:
(1)若数组元素为“3,2,6,8,7,9,3,4,7,9,6”,依次进行以下3次操作后第3段的标记值为__________

操作1:依次输入1,11,1
操作1:依次输入7,9,2
操作2:输入8
(2)请在划线处填入合适的代码。
Const n = 10
Dim a(1 To n) As Integer
Dim f(1 T on) As Integer 'f数组元素依次表示每段的标记值
Dim bk As Integer 'bk表示每段的元素个数
Function BL(x As Integer) As Integer 'BL函数返回数组元素a(x)的段编号
BL=________________
End Function
Private Sub Form_Load()
’读取数据,并存储到数组a中,代码略
bk=Int(Sgr(n))
End Sub
Private Sub Command1_Click()
Dim L As Integer,R As Integer,T As Integer,i As Integer
L=Val(Text1.Text):R=Val(Text2.Text):T=Val(Text3.Text)
If BL(L)=BL(R) Then
For i=L To R
a(i)=a(i)+TNext i
EIse
For i=______________a(i)= a(i)+T
Next i
For i=BL(L)+1 To BL(R)-1
f(i)= f(i)+T
Next i
For i=(BL(R)-1)* bk+1 To R
a(i)= a(i) +T
Next i
End If
End SubPrivate Sub Command2_Click()
Dim K As Integer
K=Val(Text4.Text)
Labe.15.Caption="经过一系列操作后.a("+Str(K)+ ")的值为:"+___________
End Sub
采用冒泡排序对一组数据进行排序,第一遍排序后的结果为2,19,4,55,6,7,11,13,32,那么该数组的原始顺序不可能是()
A.19,4,55,6,7,11,13,32,2 |
B.2,19,4,55,13,11,32,6,7 |
C.19,4,55,2,6,7,11,13,32 |
D.19,4,55,6,7,11,2,13,32 |
篮球联赛中,有5个班级的比赛积分依次为14,11,13,8,9。若采用冒泡排序算法对其进行从小到大排序,则完成第二遍时的结果是( )
A.8,11,13,14,9 | B.8,9,13,14,11 |
C.8,9,14,11,13 | D.14,13,11,9,8 |