学进去-教育应平等而普惠
排序:
414道相关试题
某校为学生期末考试分配考场,并编制准考证号。每个班级有班号,每位学生有班内序号,班内序号是按班级现有人数从1开始逐个编排的。准考证号格式为“入学年份+班号+班内序号”。每个考场有30个座位,座位号从1开始。连续分配座位的两个学生不属于同一个班级。
分配方法是:按考场号递增、同一考场座位号递增的顺序逐一分配座位。每次分配,先选班级,再选学生。选择班级时,在班级降序序列(按未分配人数)中选择第1个班级,但如果该班和前一次分配选定的班级相同,则改选第2个班级。选定班级后,再为该班耒分配学生中序号最大的学生分配考场座位,并维护班级降序序列(按未分配人数)。
编写VB程序,实现考场分配功能:在文本框Text1中填写入学年份,单击“读取”按钮Commandl后,将各班数据按人数降序显示在列表框List1中,然后单击“分配”按钮Command2,在列表框List2中显示分配结果。程序运行界面如图所示。

请回答下列问题:
(1)下列对象中,有 Caption属性的是      (单选,填字母:A.Command 1 / B.Text 1/C.List 1)。
(2)实现考场分配功能的VB程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有错,请改正。
Dim n As Integer, y As String
Dim cla(1 To 20)As Integer, num(I To 20)As Integer
Dim room as Integer '存储考场号
Dim seat as Integer '存储座位号
Function fm(k As Integer) As String
'返回整数k(l≤k≤99)对应的数字字符串,不足两位左侧补“0”,代码略
End function
Private Sub Command 1_ Click()
'从Text l中读取入学年份存入变量y,从数据库中读取该人学年份的班级数据,
'将班级个数存人变量n(1<n≤20),各班班号和人数分别存人数组cla和num,
'各班班号均大于0,各班人数均未超过总人数的一半,
'将数组cla和num按班级人数降序排列后,显示在List l中,代码略

End Sub

Private Sub Command 2_ Click()

Dim i As Integer, t As Integer, s As Integer
Dim choice As Integer, m As Integer, f As Boolean
room=1:seat=1:choice=0
        
Do While f = True
If cla (1) <> choice Then m= 1 Else m = 2
choice = cla(m)
'在列表框List2中显示准考证号、考场号、座位号
List 2. Addltem y+fm(cla(m))+fm(num(m))+" "+fm(room)+" "+fm(seat)
seat = seat+ 1
If seat > 30 Then

seat = 1
End If
Num(m)= num(m)-1
For i=       To n-1     '维护班级降序序列(按未分配人数)
If num(i)< num(i + 1)Then
t=num(i):num(i)=num(i+1):num(i+1)=t
s = cla(i):cla(i)= cla(i + 1):cla(i+1)=s
Else
Exit For 'ExitFor表示退出循环
End If
Next i
If          Then f = False
Loop
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
生成10个不重复的随机整数,保存在数组a中,并升序排列,实现算法的VB程序如下。
Dim a(1 To 10) As Integer, f(1 To 20) As Boolean
'f 数组各元素的初值设为 False,代码略
For i = 1 To 10
t = Int(Rnd() * 20 + 1)
If Not f(t) Then
a(i) = t
1    
Else
2    
End If
Next i
For i = 1 To 20
If f(i) Then List2.AddItem   3   
Next i
上述程序中 3 处下划线应填入的程序代码是(  )
A.(1) f(i) = True   (2)i=i-1 (3)Str(a(i))
B.(1) f(a(i)) = True (2)i=i-1 (3)Str(i)
C.(1) f(a(i)) = True (2)t =int(Rnd()*20+1) (3)Str(i)
D.(1) f(i) = False  (2)t =int(Rnd()*20+1) (3)Str(a(i))
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
(加试题)小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改正。
’待排序数据存储在数组a中(a(1)~ a(n)),要求升序排列
For i = 1 To (n - 1) \ 2
For j = 1 To n - i * 2
If    a(j) > a(j + 1)   Then      ____________________________
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
Next j
Next i
For i = 1 To n \ 2
j = 2 * i - 1
If a(j) > a(j+1) Then t = a(j): a(j) = a(j+1): a(j+1) = t
Next i
For i =   1 To n   Step 2        ________________________
t = a(i): j = i - 1
Do While t < a(j) 
a(j + 1) = a(j): j = j - 1
Loop
a(j + 1) = t
Next i
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
(加试题)小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:
p =" 1:" q = 10
Do While p < q
iMin =" p:" iMax = p
For i =" p" + 1 To q
If a(i) < a(iMin) Then iMin = i
If a(i) > a(iMax) Then iMax = i
Next i
t =" a(iMin):" a(iMin) =" a(p):" a(p) = t


t =" a(iMax):" a(iMax) =" a(q):" a(q) = t
p =" p" + 1
q =" q" - 1
Loop
要使程序实现上述算法思想,则方框中的语句是
A.If iMax =" p" Then iMax = iMinB.If iMin =" p" Then iMin = iMax
C.If iMax =" p" Then iMin = iMaxD.If iMin =" p" Then iMax = iMin
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
向文本框Text1中输入一串包含大小写的字母,统计出现次数最多的字母(不区分大小写)并将该字母以大写方式输出到文本框Text2,如有多个字母次数相同的,则只记录最后出现的字母,部分程序如下:
Dim c(1 To 26)As Integer
s=Text1.Text
For i=1 To Len(s)

x=Mid(s,i,1)

If x>="a"Then

t=Asc(x)-Asc("a")+1

Else

t=Asc(x)-Asc("A")+1

End If

    

If c(t)>=Max Then Max=c(t):    

Next i
Text 2.Text=Chr(f+Asc("A"))
划线处应该填入的正确语句是(   )
A.①c(t-1)=c(t-1)+1   ②f=t
B.①c(t)=c(t)+1       ②f=t
C.①c(t-1)=c(t-1)+1   ②f=t-1
D.①c(t)=c(t)+1       ②f=t-1
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
某对分查找算法的VB程序段如下:
n=0:i=l:j=6
key=Val(Text1.Text)
Do While i<=j

m=(i+j)\2

n=n+1

If key=d(m)Then Exit Do

If key>d(m)Then j=m-1 Else i=m+1

Loop
If i<=j Then s=Str( m-n)Else s=Str(n)
数组元素 d(1)到 d(6)的值依次为“88,77,53,47,39,28”,输入某个key值,运行该程序段后,变量s结果为1,则输入key的值是(   )
A.89B.77C.47D.39
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
下列VB程序段功能为:根据数组a中各元素的大小关系,计算各元素升序排列的序号,并将序号保存在数组b中,如数组a各元素为“20,40,10,,30”,b(1)到b(4)各元素的值分别为“1,2,3,4”,程序运行后b(1)到b(4)各元素的值分别为“2,4,1,3”。
For i=1 to n

  1  

Next i
For i=1 to n-1

k=i

For j=i+1 To n

If  2  Then k =j

Next j

If k<> i Then

  3  

End if

Next i
上述程序段3个划线处的代码分别为(   )
A.(1)b(i)=1  (2)a(j)>a(k)       (3)t=a(k):a(k)=a(i):a(i)=t
B.(1)b(i)=1  (2)a(b(j))>a(b(k))  (3)t=a(k):a(k)=a(i):a(i)=t
C.(1)b(i)=i  (2)a(j)>a(k)       (3)t=b(k):b(k)=b(i):b(i)=t
D.(1)b(i)=i  (2)a(b(j))>a(b(k))  (3)t =b(k):b(k)=b(i):b(i)=t
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
某对分查找算法的VB程序段如下:
i=1:j=8:t=0
Key=Int (rnd()*20)+10
Do While i<=j

m=Int((i+j)/2)

t=t+1

If a(m)=Key Then

Exit Do

Else If a(m)> Key Then

j=m-1

Else

i=m+1

End If

Loop
数组元素a(1)到a(8)的值依次为“2,11,14,15,18,19,25,32”,该程序段运行结束后,变量t的最大值可能是(   )
A.1B.2C.3D.4
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
“轮转后有序数组(RotatedSortedArray)”是将有序数组取其中某一个数为分点,将其之前的所有数都轮转到数组的末尾所得。比如{7,11,13,17:2,3,5}就是一个轮转后的有序数组,原有序数组中的子串{2,3,5}被轮转到了数组的末尾处。
对于一个轮转后有序数组arr可以进行二分查找,算法思路如下(以升序为例):
每次根据查找的左侧位置L和右侧位置R求出中间位置M后,M左边,M和右边[M+1,R],这两部分中至少一个是有序的(可根据中间位置数据和边界数据的大小关系判断)。
arr[M]和待查找数据Key比较
①arr[M]=key,返回M的值
②若M位置的右侧有序,当待查找数据在右侧,则下次在右侧查找,否则在M左侧查找
③若M位置的左侧有序,当待查找数据在左侧,则下次在左侧查找,否则在M右侧查找
(1)对于轮转后有序数组{7,11,13,17,2,3,5}使用以上函数search()查找key值3,所需要的查找次数为______________。
(2)以下VB函数Search()实现了对轮转后有序数组arr进行二分查找的过程,如果查询成功,返回m值,查询失败则返回一1。请补充程序中①②③划线处的代码:
Function Search (key As Integer, L As Integer, R As Integer) As Integer
______
Do While L<=R And Search=-1

M=(L+R)\2

If arr(M)=key Then

Search=M
Else
If ____ Then
If arr(L)<=key And key<arr(M) Then
R=M-1
Else
L=M+1
End If
Else
If ____ Then
L=M+1
Else
R=M-1
End If
End If
End If
Loop
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
平面上有N(3≤N≤100)个房间围成一圈,按顺时针方向分别编号为1…N,相邻的两个房间之间均有一扇门,第i个房间居住人数为a(i),初始时选择一个房间,将所有人都聚集在该房间,接着每个人都按顺时针方向走到相邻的房间,直到走到居住的房间。一个人每经过一扇门花费1能量,请确定初始房间,使得所有人花费的能量和最小。例如:N=5,a(1)=4,a(2)=7,a(3)=8,a(4)=6,a(5)=4最佳方案:初始时所有人聚集在2号房间,花费的能量和:7*0+8*1+6*2+4*3+4*4=48。为了解决这个问题,小明编写了一个VB程序。在窗体加载时,从数据库中读取N的值和编号为1到N的房间的居住人数,人数存储在数组a中。点击窗体上的按钮Command1,程序枚举每一种方案(不同的初始房间),计算该方案的能量和,在文本框Text1中输出最优方案的初始房间编号,在文本框Text2中输出最小能量和。实现上述功能的VB代码如下,请在划线处填入合适的代码。
Dim a (l To 100) As Integer '依次存储编号为1到100的房间的居住人数
Private Sub Form_Load()
'本过程从数据库中读取N的值和每个房间居住人数,存储在数组a中
'代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, w As Integer, k As Integer
Dim t As Long, ans As Long
k=0:ans=32767'ans初始化为最大的Integer数据
For i=1 To n
t=0
For j=0 To n-1
w= ____
If w=0 Then w=n

t= ____

Next i
If t<ans Then k=i:ans=t
Next i
Text1.Text=str(k)   '起始房间编号
Text2.Text = Str(ans)
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页