题库 高中信息

题干

“旋转数组”过程是指将数组中的元素向右移动k个位置,其中k是非负数。以数组a向右移动3个位置为例,其移动过程有如下两种方法:
原始数据:
a(1)
a(2)
a(3)
a(4)
1
2
3
4
 
方法一:
①向右旋转1步:
a(1)
a(2)
a(3)
a(4)
4
1
2
3
 
②向右旋转2步:
a(1)
a(2)
a(3)
a(4)
3
4
1
2
 
③向右旋转3步:
a(1)
a(2)
a(3)
a(4)
2
3
4
1
 
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
a(1)
a(2)
a(3)
a(4)
1
2
3
1
 
②将原a(4)值放至旋转3个位置后位置a(3):
a(1)
a(2)
a(3)
a(4)
1
2
4
1
 
③将原a(3)值放至旋转3个位置后位置a(2):
a(1)
a(2)
a(3)
a(4)
1
3
4
1
 
④将原a(2)值放至旋转3个位置后位置a(1):
a(1)
a(2)
a(3)
a(4)
2
3
4
1
 
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:

(1)当文本框Text3中输入内容修改为3时,执行该程序后,a(3)的值为___________。
(2)请在划线处填入合适的代码。
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer,cnt As Integer,c As Integer,t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1:start = 1:c = a(i):cnt = 1
Do While cnt<= p   '方法二

i =_____________

    t = a(i)
a(i) = c
If ________________ Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If

cnt = cnt + 1

  Loop
For i = 1 To k   '方法一
temp = a(n)
For j = _______________
a(j) = a(j - 1)
Next j

a(p + 1) = temp

  Next i
For i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-05-30 05:42:47

答案(点此获取答案解析)

同类题2

VB猜价格小程序
高二(8)班决定在第11周开一个主题班会,为了丰富班会的内容,班主任要求班级几位信息高手,设计一个小程序,这事难不倒班上的各位大神,他们齐心协力,很快就完成了。
编写程序,实现如下功能:有6张待猜的商品图片加载到Image1中,通过上一个和下一个按钮进行切换,主持人可以通过“设置价格”按钮Command2对每一张商品图片设置一个价格,然后,单击“我来猜一猜”按钮开始猜价格游戏,每人只给8次(这个数据存放在变量n中)猜价格的机会,8次机会用完后,如果猜中价格,则在文本框Text2中显示处价格。

(1)窗体中有________个对象,________类。
(2)Command1对象的Caption属性值是_______________________________。
(3)实现上述功能的部分VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim i As Integer
Dim n As Integer    '变量n存储猜价格的次数
Dim cai_shu As Integer    '变量cai_shu存储猜的价格
n = __________________
For i = 1 To n
cai_shu = Val(InputBox("请输入当前商品的价格:", "输入价格"))
If cai_shu = jg(dqtp) Then  'jg(dqtp)存储的是当前商品图片的价格
MsgBox "恭喜你猜对了"
Text2.PasswordChar = ""
Text2.Text = Text2.Text + "元"
Exit For
ElseIf __________________ Then
MsgBox "猜大了,再来猜一猜"
Else
MsgBox "猜小了,再来猜一猜"
End If
Next i
If i > n Then
MsgBox "猜价格次数用尽,很遗憾,你没有猜对!"
___________________
End Sub

同类题3

(加试题)编写一个成绩查询程序,输入要查找的分数,输出该分数的名次及同分人数,其算法是:用数组a存放不同的分值,数组m存储相同分数的人数,数组mc存储不同分数的名次。例如,数据库中有一组成绩(已按降序排列):98,95,95,92,90,90,87,按该算法,各数组值如下表所示:
i
1
2
3
4
5
a
98
95
92
90
87
m
1
2
1
2
1
mc
1
2
4
5
7
 
程序界面如下图所示,在文本框Text1中输入查询成绩,点击“查找”按钮,若找到,则输出该分数的名次和同分数的人数,若找不到,则输出“查无此分”。

程序代码如下,请在划线处填入合适的代码。
Dim n As Integer
Dim a(l To 1000) As Integer ’存放不同的分数值
Dim m(0 To 1000) As Integer ’存放相同分数的人数
Dim mc (0 To 1000) As Integer ’存放此分数的名次
Private Sub Form_Load()
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
Dim tmp As Integer
Dim s As Integer
tmp = -1: n = 0
conn. Connectionstring = 〃provider=Microsoft. AC
A.OLEDB. 12. 0; data source=〃 & App. Path & 〃\mydb. accdb〃
conn. Open
Set rs. ActiveConnection = conn
rs.Open "Select * from score"
mc(0) = 1: m(0) = 0

Do While Not rs. EOF

s = rs. Fields (〃成绩〃)
If s = tmp Then ’当前读入分数与上一个分数相同
m(n) = __________
Else
n = n + 1
a(n) = s
m(n) = 1
mc(n) = ___________ 
End If
_____________
rs. MoveNext

Loop

End Sub
Private Sub Command1_Click0
Dim key As Integer, i As Integer, j As Integer, mid As Integer
key = Val (Text1.Text)
i = 1: j = n
mid = (i + j) \ 2
Do While i <= j And ____________ 

mid = (i + j) \ 2

If a(mid) < key Then

j = mid – 1

Else

i = mid + 1

End If

Loop
If a(mid) = key Then

Label2. Caption = 〃名次: 〃+ Str(mc (mid)) + 〃同分人数: 〃+ Str(m(mid))

Else

Label2. Caption = 〃查无此分〃

End If
End Sub

同类题4

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:
a(1)
a(2)
a(3)
a(4)
a(5)
28
42
55
5
22
 
旋转数组a的最小元素是5。
数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:
d(1)
d(2)
d(3)
d(4)
d(5)
1
0
1
1
1
 
旋转数组d的最小元素是0。
小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果图所示,实现该功能的的VB程序如下。

(1)要使程序运行时,文本框Text1无显示内容,下列方法不能实现该要求的是_______(单选,填字母:A.在Form_Load事件处理过程中添加语句“Text1.Text=""”/B.在Command1_Click事件处理过程中添加语句“Text1.Text=""”/C.设计程序界面时,在属性面板设置文本框Text1的Text属性值为空)
(2)程序代码中,加框处有错,请改正。
(3)程序代码中,将划线处代码补充完整。
(4)程序代码中,虚线框内自定义函数中主要采用的算法是__________(单选,填字母:A.冒泡排序/B.选择排序/C.顺序查找/
A.对分查找)。
Dim n As Integer
Dim d(1 To 100) As Integer '数组 d 存储待排序数据
Private Sub Command1_Click()
'按旋转数组规则将数据存入数组d中,代码略
End Sub
Private Sub Command2_Click()
Dim mid As Integer, L As Integer, R As Integer
L = 1: R = n
mid = L
Do While d(L) >= d(R)
If L=R Then'改错
mid = R
Exit Do
End If
mid = (L + R) \ 2
If d(L)=d(R) And d(mid)=d(R) Then
mid =______________    '填空
Exit Do
End If
If d(L) < d(mid) Then
L = mid

ElseIf d(mid) < d(R) Then

R = mid
End If
Loop
Label2.Caption = "最小值为" + Str(d(mid))
End Sub

End If
Next i
End Function

同类题5

最大回文子串。回文字符串是具有回文特性的字符串:即该字符串从左向右读, 与从右向左读都一样.如:凤落梧桐梧落凤,abcba 等。“最大回文子串”是指一个字符串中长度最大的回文字符串,其基本算法思想如下:
(1)每个回文都有一个“中心”,当回文字符数为奇数时,中间的那个字符就是回文中心;但是当回文的字符数为偶数时,回文的中心是最中间的那两个字符,且这两个字符相同。
(2)对任意一个字符或者相同的两个连续字符,我们都可以假设它为回文的“中心”,向它的左右两边扩展出尽可能长的回文。对于每种假设,我们都能得到一个回文,而最长回文必定由其中的某个假设中得到。
现编写一个 VB 程序,在 Text1 中输入一串字符,单击“统计”按钮,在 Text2 中显示该字符串中的最大的回文子串(长度相同时,输出最左边的子串)。运行界面如图所示。

请回答下列问题:
(1)当 Text1 中输入“123321344332423112113123”时,则输出的结果为  。
(2)请在划线处填入合适的代码。
Dim n As Integer
Dim a(0 To 100) As String
Private Sub Command1_Click()
Dim s As String
Dim left As Integer, right As Integer, i As Integer
Dim max As Integer, m As Integer, b1 As Integer
'变量 b1 用于记录回文子串的左端起点
Text2.Text = " "
s = Text1.Text
n = Len(s)
For i = 1 To n
a(i) = Mid(s, i, 1)
Next i
max = 0: left = 0: right = 0
For i = 1 To n
left = i
right = i
m = longest(left, right)
If m > max Then
________①_________
max = m
End If
left = i
right = i + 1
If a(left) = a(right) Then
m = longest(left, right) + 1
If m > max Then
b1 = i - m \ 2 + 1
max = m
End If
End If
Next i
For i = b1 To _____②________
Text2.Text = Text2.Text + a(i)
Next i
End Sub
Function longest(left As Integer, right As Integer) As Integer
Dim p As Integer
p = 1
Do While left > 1 And right < n And _________③______________
left = left - 1
right = right + 1
p = p + 2
Loop
longest = p
End Function