学进去-教育应平等而普惠
排序:
限于篇幅仅展示1000道试题,请根据关键词精准搜索
小明探索用链表思想实现插入排序。链表由节点连接而成,每个节点包含一个数据域和一个指针域。为了模拟这个过程,小明用 a 数组保存链表数据域,b 数组保存链表指针域,排序的过程就是将每个数据的指针域不断链接到已有的有序链表合适位置,形成更长的链表,直到所有的数据均链接到链表中。
例如将某节点插入到已有链表中,根据大小比较有三种情况:插入到最前面、插入到最后、插入到中间,如图所示,在链表中的节点 x 和节点 y 之间插入节点 n 的过程示意:过程一(初始状态)如图 1 所示,链表中节点 x 的指针域指向节点 y 数据域,即图示①指向;过程二如图 2 所示,将节点 n 的指针域指向节点 y 数据域,即图示②指向;过程三如图 3 所示,将①指向断开,同时将节点 x 的指针域指向节点 n 数据域,即图示③指向;至此完成节点 n 的插入操作。

具体程序设计方法如下:
(1)将待排序的 n 个数保存在 a(1)~a(n),b(1)~b(n)保存对应 a 数组各元素的位置,形成 n 个没有链接的节点;
(2)将 a(1)结点看成只含有一个结点的链表 head,且 head=1;
(3)将 a(2)节点插入到链表 head 的适当位置,使 head 仍有序,此时 head 成为含有两个结点的有序链表;以此方法依次将 a 数组中的其他节点插入到链表 head 中,最后链表 head 上包含所有结点,且结点有序。依次输出 head 链表的数据域即完成排序。
程序运行界面如图所示,采用此思想进行升序排序的 VB 代码如下,请回答下列问题。

(1)若用该算法对 5 个数进行降序排序,a(1)~a(5)的值分别为“52,82,12,3,66”,排序完成后,head 变量的值为_____________。
(2)为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(1 To 100) As Integer 'a 数组存储待排序数据(数据域)
Dim b(1 To 100) As Integer 'b 数组存储待排序数的位置(指针域)
Randomize
n = Val(Text1.Text)
'随机产生 n 个待排序的数,并将 b 数组初始化(初始值全部指向自身)
For i = 1 To n

b(i) = i

a(i) = Int(Rnd * 100) + 1

List1.AddItem Str(b(i)) + " " + Str(a(i))

Next i
head = 1
For i = 2 To n

k = head   '插入到链表最前面

If a(i) <= a(head) Then

      ____________________

head = i

Else   '寻找插入位置

Do While____
k = b(k)
Loop
If b(k) <> k Then
b(i) = b(k): b(k) = i
Else
b(k) = i
End If

End If

Next i
List2.AddItem Str(head) + " " + Str(a(head))
Do While head <> b(head)

List2.AddItem Str(b(head)) + " " + Str(a(b(head)))

_______________

Loop
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
对于一组升序不重复的正整数,在任意数字位置分成两段,并交换前后两段的位置,存入数组a中,例如6、17、25、36、44、58,在数字36处分成两段,交换位置后如下表所示:
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
6
17
25
36
44
58
 
在数字44处分成两段,交换位置后如下表所示:
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
44
58
6
17
25
36
 
依据对分查找思想,设计一个在数组 a中查找最小值,并输出在Text1中的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Commandl_Click()

Const n=6

Dim a(1 To n)As Integer

Dim i As Integer,j As Integer,m As Integer

'读取数据,按上述规则存入数组a中,代码略

i=1:j=n

IfThen Text1.Text=Str(a(i))'①

Do While i<=j

m=(i+j)\2
If a(m)<a(j) Then
'②
Else
i=m+1
End If

Loop

Text1.Text=a(j)

End Sub
(1)①处应改为_______________.
(2)②处应改为_______________.
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
小王编写“合并区间”VB。程序,功能如下:窗体加载时,获取并存储合并前的区间数据,显示在列表框List1中。单击“合并”按钮后,以区间左端点数值对区间进行升序排序,然后相邻区间的相交进行合并,如[1,5][3,8]和[8,10]三个区间可合并成[1,10]一个区间,最后在列表框List2中显示合并后的区间。程序运行如图所示:
                   
实现以上功能的 VB 程序如下,请在横线处填入合适的代码。
Dim a(1 To 20) As Integer'存储区间的左端点数值
Dim b(1 To 20) As Integer'存储区间的右端点数值
Private Sub Form_Load()
'将区间左端点存入数组a,区间右端点存人数组b,并在列表框List1中显示,代码略
End Sub
Private Sub Command1_Click()

Dim i As Integer,j As Integer

Dim curL As Integer,curR As Integer

For i=1 To n-1

For j=1 To n-i
If(1)______Then
t=a(j):a(j)= a(j+1):a(j+1)=t
t=b(j):b(j)=b(j+1):b(j+1)=t
End If
Next j

Next i

curL=a(1):curR=b(1)

For i=2 To n

If(2)__________Then
If curR<b(i) Then(3)__________
Else
List2.AddItem"["+Str(curL)+Str(curR)+"]"
curL=a(i):curR=b(i)
End If

Next i

List2. AddItem"["+Str(curL)+Str(curR)+"]"

End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
小明设计了如下一个查找数据的程序:在一组升序的数列当中,查找不小于k的最小数的位置,如果该值存在,则返回其第一次出现的位置,如果不存在,则返回0。程序运行界面如图所示,VB程序代码如下,请回答下列问题:

(1)若在 Text1中输入“8”,则 Text2、Text3中输出的分别为________。
(2)请在划线处填入合适的代码。
Dim a(1 To 10)As Integer
Function find (L As Integer, R As Integer, key As Integer) As Integer

If L>R Then

find=0:Exit Function

ElseIf a(L)>=key Then

find=L:Exit Function

Else

_________
If a(m)<key Then
find=find(M+1,R,key)
Else If(2):__________Then
find=find(L,M-1,key)
Else
find=M
End If

End If

End Function
Private Sub Commandl_Click()

Dim k As Integer

Dim p As Integer

k=Val(Text1.Text)

___________

Text2.Text=Str(a(p))

Text3.Text=Str(p)

If p=0 Then

Text2.Text="无"

End If.

End Sub
Private Sub Form_Load()

a(1)=3:a(2)=3:a(3)=3:a(4)=4:a(5)=7:a(6)=7

a(7)=10:a(8)=13:a(9)=19:a(10)=21

For i=1 To 10

List1.AddItem Str(a(i))

Next i

End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
小红编写了一个将5位以内的十六进制正整数转换成十进制数的VB程序,功能如下:在文本框Text1中输入一个十六进制正整数,单击“转换”按钮Command1,在标签Label3中显示结果。程序运行界面如图所示。
                          
(1)要使窗体Form1标题显示“数制转换”,则需设置窗体的__________(单选,填字母:A.Font/B.Caption/C.BackColor)属性。
(2)要实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Commandl_Click()

Dim x As String,ch As String

Dim flag As Boolean,i As Integer,result As Long

x=______

i=1

result=0

flag=True

ch=Mid(x,1,1)

Do While i<=Len(x) And flag=True

If ch>="0" And ch<="9" Then
result=result * 16+Val (ch)
Elself ch>="A" And ch<="Z" Then
result=result * 16+(Asc (ch)-Asc ("A")+10)
ElseIf ch>="a" And ch<="z" Then
result=result * 16+(Asc (ch)-Asc ("a")+10)
Else
flag=False
End If
i=i+1
ch=____________

Loop

If flag=True Then

Label3.Caption=Str(result)

Else

Label3.Caption="输入错误"

End If

End Sub
(3)若在文本框Text1中输入5+9,则单击“转换”按钮后,标签Label3中显示的内容是_____(单选,填字母:A.14/B.E/C.输入错误)。
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
小禾编写了一个VB程序,功能如下:在文本框Text1中输入英语文章,并在文本框Text2中输入要查找的英语单词,单击“开始查找”按钮Command1后,在文本框Text3中显示英语文章中出现该单词的次数,在文本框Text4中显示该单词在英语文章中两次出现的最大间距,程序运行界面如下图所示。请回答以下问题:

Private Sub Command1_Click()
Dim a(1 To 1000) As Integer       '数组a存储文中出现该指定单词的各个位置
Dim s, c, ch As String
Dim n, max, i As Integer
s = Text1.Text
                
n = 0
max = 0
For i = 1 To Len(s) - Len(c) + 1
ch =                  
If ch = c Then
n = n + 1
                
If n >= 2 Then
If a(n) - a(n - 1) - Len(c) > max Then max = a(n) - a(n - 1) - Len(c)
End If
End If
Next i
Text3.Text = Str(n)
Text4.Text = Str(max)
End Sub
(1)该应用程序中共有_______个对象组成,分别属于_______类控件
(2)请将①处的语句补充完整:______________________
(3)请将②处的语句补充完整:______________________
(4)请将③处的语句补充完整:______________________
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
下列程序的功能是寻找并删除英语短文中的指定单词。程序运行时,在文本框Text1中输入英语短文,在文本框Text2中输入待删除的单词,单击“删除”按钮后,在文本框Text3中输出删除该单词后的短文,最后,在标签Label5中输出共删除的单词数。程序运行效果如下图所示:
           
(1)要使程序运行时,文本框Text1中显示的字符颜色为蓝色,可在Form_ Load事件过程中添加语句______。(单选,填字母:
A.Text1 = vbBlue /B.Text1.ForeColor= vbBlue /C.Text1.Text = vbBlue)
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s1 As String, s2 As String, st As String
Dim len1 As Integer, len2 As Integer, i As Integer, m As Integer
sl = Text1.Text: s2 = Text2.Text
len1 = Len(s1): len2 = Len(s2)
i=1: m=0
Do While i <=_____
If Mid(s1, i, len2)=s2 Then
______

m=m+1

Else
st=_____
i=i+1
End If
Loop
Text3.Text =st
Label5.Caption = Str(m)
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
有一数组 a 具有 n(1≤n≤100)个元素,分别为 a(1)到 a(n),数组元素都为正整数且有可能相等。对于每一个数组元素,如果它后面存在大于或等于该元素的数,则这两个数可以组成一对。每个元素和自己也可以组成一对。例如:{3,7,2,4,8},可以组成 11 对,分别为(数字为下标):(1,1),(1, 2), (1, 4), (1, 5), (2, 2),(2, 5), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5), (5, 5)。其中(1,5)是距离最远的一对,距离为 4。小明编写了一个 VB 程序,用于计算 n 个数组元素的最远距离。具体功能如下:运行程序时,在列表框 List1 中显示 n 个数组元素,单击命令按钮Command1,在文本框中显示这 n 个数组元素的最远距离。运行效果如图所示。

实现上述功能的 VB 代码如下。
Const n = 5 'n=5 为例
Dim a(1 To n) As Integer '用于记录每个数组元素的值
Dim b(1 To n) As Integer '用于记录每个数组元素在原数组中的下标
Private Sub Form_Load()
'读取一组正整数,存储在数组 a 中
'将每个数组元素在原数组中的下标存储在数组 b 中
'将数组元素显示在列表框 List1 中
'代码略
End Sub
Function Getans() As Integer

Dim left As Integer, ans As Integer

left = 10000: ans = 0

For i = 1 To n

If b(i) < left Then left = b(i)
If b(i) - left > ans Then ans = b(i) - left

Next i

Getans = ans

End Function
Private Sub Command1_Click()

Dim i As Integer, j As Integer, t As Integer

For i = 1 To n

For j = n To i + 1 Step -1
If     Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
t = b(j): b(j) = b(j - 1): b(j - 1) = t
End If
Next j

Next i

Text1.Text =    ▲             
End Sub
(1)代码“Private Sub Command1_Click()”中表示加载在 Command1 上的事件是_______________ 。(单选,填字母:
A.Click/B._Click/C.Command1_Click)
(2)程序代码中,IF 语句后加框处代码有误,请改正___________。
(3)程序代码中,将 Text1.Text 赋值语句补充完整__________________。
(4)如程序运行界面所示数据,单击命令按钮 Command1 后,数组元素 b(2)的值为____________。
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
柯桥区各所学校技术考试的分数均存放在数据库中,表中学生考号存储形式如"10101","10203"……,考号第 1 位数字表示学校代码(1 代表柯中,2 代表鲁高,3 代表越崎,4 代表鉴湖,5 代表钱清,6 代表豫才,7 代表轻纺城,9 代表鲁中),后 4 位表示校内编号。现设计 VB 程序查询学校成绩,查询方式为:在 Text1 中输入学校名称,在 Text2 中输入数字 n,单击“查询”按钮,在列表框 List2 中显示该校得分最高的 n 名学生的考号和技术得分。
(1)实现上述功能的程序代码如下,请在划线处填入正确的语句。
(2)设鲁中有技术考生 150 人,如果把程序中加框部分代码删除,当运行程序时在文本框Text2 中输入 200,单击查询按钮后列表框 List2 中显示有_____项(单选,填字母:
A.恰好 150 /B.恰好 200/C.大于等于 150 且小于等于 200 /D.大于等于 200)

Const rs = 2500 '考生总人数(即记录总数)
Dim kh(1 To rs) As String, cj(0 To rs) As Integer
Dim xx(1 To 9) As String '数组 xx 存放学校名称,如 xx(1)="柯中",xx(2)="鲁高"……数组下标代表该学校代码,即"柯中"代码是 1,"鲁高"代码是 2……
'从数据库中读取考号和成绩数据,存入 kh 和 cj 数组,并在 list1 中显示,代码略。
Private Sub Command1_Click()
Dim school As String, n As Integer, i As Integer, j As Integer
Dim t1 As Integer, t2 As String, flag As Boolean
xx(1) = "柯中": xx(2) = "鲁高": xx(3) = "越崎": xx(4) = "鉴湖"
xx(5) = "钱清": xx(6) = "豫才": xx(7) = "轻纺城": xx(8) = "鲁中"
For i = 1 To 8
If xx(i) = Text1.Text Then_____ 
Next i
n = Val(Text2.Text) : i = 1: flag = True
Do While flag

k = i

For j = i + 1 To rs

t = Val(Mid(kh(j), 1, 1))

If    t = school Then
If_____Then k = j

End If

Next j

 

If i > n And cj(k) <> cj(i - 1) or  Then flag = False

If k <> i Then

t1 = cj(i): cj(i) = cj(k): cj(k) = t1
t2 = kh(i): kh(i) = kh(k): kh(k) = t2

End If

i = i + 1

Loop

List2.Clear
For j = 1 To_____
List2.AddItem kh(j) + " " + Str(cj(j))
Next j
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
小王为学校教务处编写了一个排考场座位的VB程序。考场采用“6排5列”共30人的模式。程序执行后,考生的考号与姓名显示在列表框List1中,单击“考场座位”按钮Command1后,考场号与座位显示在Text1中,程序运行界面如图a所示,考生数据存放在数据库文件“kaochang.accdb”中,数据表如图b所示。
  
图a                               图b
实现上述功能的 VB 程序如下,请回答下列问题:
(1)当“Form Load()”事件处理过程运行结束时,变量x的值为_______。
(2)请在横线处填入合适的代码。
Private Sub Command1_Click()

Dim y As Integer

Dim start As Integer      '考场第1位数据元素的下标

Dim pa As Integer

'数据库导入VB时学生数据下标

Dim pb As Integer         '考场座位数据下标

Dim i As Integer,j As Integer,k As Integer,m As Integer

start=1

pa=start

recCount=x-1

If recCount Mod 30<>0 Then

①__________
For i=1 To y
'将当前考生人数添加到 30 的整数倍
recCount=recCount+1
sName(recCount)=""
Next i

End If

For j=1 To recCount/30

pa=start
pb=start
For i=1 To 30
kcsName(pb)=sName(pa)
pb=pb+1
If i Mod 5=0 Then
pa=start+i\5
Else
②______
End If
Next i
start=start+30

Next j

Text 1.Text=""

start=1

For k=1 To recCount/30

m=start
Text1.Text=Text1.Text+"第"+Str(k)+"考场"+vbCrLf
'vbCrLf为换行标志符,实现Text1中内容换行显示
For i=1 To 6
For j=1 To 5
Text1.Text=Text1.Text+""+kcsName(m)
m=m+1
Next j
Text1.Text=Text1.Text+vbCrLf
Next i
Text1.Text=Text1.Text+vbCrLf+vbCrLf
③__________

Next k

End Sub
Private Sub form_load()

Dim myconn As New ADODB.Connection

Dim myrecord As New ADODB.Recordset

myconn.ConnectionString="provider=microsoft.Ace.Oledb.12.0;data source=e:\kaochang.Accdb"

myconn.Open

strsql="select * from三中"

myrecorD.Open strsql,myconn

x=1

List1.AddItem"考号   姓名"

List1.AddItem"--------------"

Do While Not myrecorD.EOF

'读取数据库数据,存人数组 kh(x)sName(x)中,代码略
List1.AddItem kh(x)+""+sName(x)
x=x+1
myrecorD.MoveNext

Loop

myrecorD.Close

End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
首页
上一页
下一页
尾页