For i = 1 To 5
b(a(i)) = b(a(i)) + 1
Next i
pa = 0
For j = 1 To 10
For k = 1 To b(j)
pa= pa + 1 : a(pa) = j
Next k
Next j
a(1)到a(5)的初值依次是7、5、9、4、3,程序段运行后,数组a值依次是( )
Option Base 1
Private Sub Command1Click
Dim a(4, 4)
For i = 1 To 3
For j = 1 To 3
a(i, j)=(i-1)*3+j
Next j
Next i
PRINT A(3, 1)
End Sub
程序运行后,单击命令按钮,其输出结果为( )
i = 1
Do While i<=6
a(i) = Int(Rnd * 10) + 1
If a(i) Mod 2 = i Mod 2 Then i = i + 1
Loop
For i = 1 To 2
k = 1
For j = 1 To 6 - i * 2
If a(j) * k > a(j + 2) * k Then
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
k = -k
Next j
Next i
执行该程序段后,在下列选项中,a(1)~a(6)各元素值可能的是( )
Dim s(1 To 81) As Integer, i As Integer, j As Integer, c As Integer, temp As Integer
c=0 : s(1) = 0
For i = 1 To 9
For j = 1 To i
temp = s(j * i)
s(j * i) = j * i
If temp <> s(j * i) And s(j * i) Mod 9 = 0 Then c = c + 1
Next j
Next i
该程序段运行后,变量C的值为( )
Private Sub Command1_Click( )
For 1 = 1 To 10
f(i)= False
Next i
For i=2 To 10
If d(i)-d(i-1) > 0 Then
f(i)= True
d(1)=d(i)-d(i-1)
End If
Next i
For i=1 To 10
If f(i) Then ans = ans+1
Next i
Label1 Caption = Str (ans)
End sub
程序运行时,数组元素d(1)~d(10)的赋值分别为25、15、10、8、1、7、8、11、16、5,则标签Label1中显示的内容为( )
① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。
图a
②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。
③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。
小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。请回答下列问题:
图b
Dim n As Integer '总人数/总作品数
Dim m As Integer '每人分配篇数
Dim a(1 To 500) As Integer '数组a大小满足处理要求
Dim c(1 To 100) As Integer '数组c大小满足处理要求
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
n = Val(Text1.Text): m = Val(Text2.Text)
Randomize
i = 1
Do While i <= m
For j = 1 To n
c(j) = 0 '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1
Next j
For j = 1 To n
If j = n - 1 And c(n) = 0 Then
①
Else
k = r(n, j)
End If
a((i - 1) * n + j) = k '分配数字k到当前方案的第j个位置上
c(k) = 1
Next j
If ② Then i = i + 1
Loop
s = ""
For i = 1 To n
s = "参赛者" & i & ":"
For j = 1 To m
s = s + Str(a((j - 1) * n + i))+ ","
Next j
List1.AddItem s
s = ""
Next i
End Sub
Function r(x As Integer, y As Integer) As Integer
'生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0
End Function
Function check(c As Integer) As Boolean
'本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE
Dim p As Integer,f As Boolean
f = True
p = 1
For i = 1 To c * n
If ③ Then
f = False: Exit For
End If
p = p mod n +1
Next i
check = f
End Function
① ② ③
Private Sub Command1_Click( )
Dim a(0 To 4)As Integer
Dim i As Integer
a(4)=Val(Text1.Text)
For i=3 To 1 Step-1
a(i)=a(i+1)/2
Next i
Text1.Text=Str(a(i+1))
End Sub
在文本框Text1中输入“128”,连续单击2次按钮Command1后,文本框Text1中显示的内容是( )
Dim i As Integer, Sum As Integer
Dim a(1 To 11) As Integer
Sum=6
a(11) = 49
For i=10 To 1 Step-1
a(i)=a(i+1)-1
If a(i)Mod 3=0 Then Sum=Sum+a(i)
Next i
Text1. Text = Str( Sum)
该程序段运行后,文本框text1中显示的内容是( )