某校為學(xué)生期末考試分配考場,并編制準(zhǔn)考證號。每個班級有班號,每位學(xué)生有班內(nèi)序號,班內(nèi)序號是按班級現(xiàn)有人數(shù)從1開始逐個編排的。準(zhǔn)考證號格式為“入學(xué)年份+班號+班內(nèi)序號”。每個考場有30個座位,座位號從1開始。連續(xù)分配座位的兩個學(xué)生不屬于同一個班級。
分配方法是:按考場號遞增、同一考場座位號遞增的順序逐一分配座位。每次分配,先選班級,再選學(xué)生。選擇班級時,在班級降序序列(按未分配人數(shù))中選擇第1個班級,但如果該班和前一次分配選定的班級相同,則改選第2個班級。選定班級后,再為該班未分配學(xué)生中序號最大的學(xué)生分配考場座位,并維護班級降序序列(按未分配人數(shù))。
編寫VB程序,實現(xiàn)考場分配功能:在文本框Text1中填寫入學(xué)年份,單擊“讀取”按鈕Commandl后,將各班數(shù)據(jù)按人數(shù)降序顯示在列表框List1中,然后單擊“分配”按鈕Command2,在列表框List2中顯示分配結(jié)果。程序運行界面如圖所示。
請回答下列問題:
(1)下列對象中,有 Caption屬性的是AA(單選,填字母:A.Command 1/B.Text 1/C.List 1)。
(2)實現(xiàn)考場分配功能的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
'返回整數(shù)k(1≤k≤99)對應(yīng)的數(shù)字字符串,不足兩位左側(cè)補“0”,代碼略
End function
Private Sub Command 1_ Click ( ?。?br />'從Text l中讀取入學(xué)年份存入變量y,從數(shù)據(jù)庫中讀取該入學(xué)年份的班級數(shù)據(jù),
'將班級個數(shù)存入變量n(1<n≤20),各班班號和人數(shù)分別存入數(shù)組ela和num,
'各班班號均大于0,各班人數(shù)均未超過總?cè)藬?shù)的一半,
'將數(shù)組cla和num按班級人數(shù)降序排列后,顯示在List l中,代碼略
End Sub
Private Sub Command 2_ Click ( ?。?br />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中顯示準(zhǔn)考證號、考場號、座位號
List 2.Addltem y+fm(ela(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'維護班級降序序列(按未分配人數(shù))
If num(i)<num(i+1)Then
t=num(i):num(i)=num(i+1):num(i+1)=t
s=ela(i):ela(i)=ela(i+1):ela(i+1)=s
Else
Exit For'ExitFor表示退出循環(huán)
End If
Next i
If③Then f=False
Loop
End Sub
【考點】面向?qū)ο蟮某绦蛟O(shè)計語言.
【答案】A
【解答】
【點評】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/6/27 10:35:59組卷:11引用:1難度:0.1
把好題分享給你的好友吧~~