Private Sub Command1_Click()
Dim i As Integer, j As Integer
i = Val (Text1. Text)
j = Val (Text2.Text)
Text3. Text = Str(i * j / f(i,j))
End Sub
Function f(a As Integer, b As Integer) As Integer
Dim k As Integer
k=a Mod b
If k=0 Then
f=b
Else
f=f(b,k)
End If
End Function
Private Sub Command1_Click( )
Dim a(10) As Integer, n As Integer
a(1) = 1
For i =2 To 10
a(i)=a(i-1)*i
Next i
List1.AddItem Str(a(i))
End Sub
运行该程序,单击命令按钮Command1,弹出的错误信息提示是( )
Dim c(-10 To 10) As Integer, a(1 To 10) As Integer, b(1 To 10) As Integer
a(1)=58:a(2)=88:a(3)=66:a(4)=60:a(5)=78
a(6)=32:a(7)=54:a(8)=75:a(9)=99:a(10)=69
Label1. Caption =
For i=1 To 9
b(i)=a(i+1)-a(i)
c(b(i)\10)=c(b(i)\10)+1
Next i
For i=0 To 10
If c(i) > 0 Then Label1.Caption = Label1.Caption + Str(c(i))
Next i
已知数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是( )
L=1:R=n
Do While L<=R
m=(L+R)\2
If ① Then
R=m-1
Else
L=m+1
End If
Loop
Text1.Text = ②
为实现上述功能,则程序中①、②处填写的代码是( )
(提示:物理\法术防御率=物理\法术防御+(物理\法术防御系数+物理\法术防御))
算法说明:从a数组中读入一枚导弹的高度数据a(i),在b数组中查找第一个大于a(i)数值的位置,并用a(i)代替。如果a(i)大于等于b数组中所有的数值,则增加一台导弹拦截车(k=k+1)。
请正在做卷子优秀的你回答下列问题。
Dim a(0 To 100) As Integer ‘记录所有导弹的高度及顺序
Dim b(0 To 100) As Integer ‘b(k)数组存储第k个系统车能拦截的最高高度
Dim n As Integer
Private Sub Command1_ Click( )
Dim L As Integer, R As Integer, m As Integer
Dim k As Integer, res As Integer, i As Integer
Randomize
n=15
For i= 1To n
a(i)= ‘随机产生高度[75,380]的导弹,高度为整数
Next i
‘将导弹高度依顺序显示在文本框Text1中,代码略
k=1:b(k)=a(1)
For i=2 To n
b(k+1)=a(i)
L= 1
R=k+1
Do While L< = R
m=(L+R+1)\2
If Then
R=m-1
res=m
Else
L=m+1
End If
Loop
If res =k+1 Then k=k+1
Next i
Label2. Caption =“最少需要”+ Str(k) +“台导弹拦截系统”
End Sub
间隔2张取第6张纸牌,……直到取完为止(如果取的位置超过n,重新从1位置取)。如果有4张纸牌,那么取的纸牌编号依次为1,3,4,2。同样,可以知道每张纸牌的被取走的顺序如下表。
序号 |
1 |
2 |
3 |
4 |
1 轮次 |
1 | 2 1 | 3 1 | 4 1 |
2 轮次 | 2 2 |
2 | 4 2 | |
3 轮次 |
3 | 2 3 | ||
4 轮次 |
4 |
纸牌被取走顺序也可以理解为纸牌存留的轮次。每次取走一张纸牌后,下一轮第一张纸牌编号为该纸牌的后一张。上述例子中3第二个被取,留存轮次2,下一轮的第一张纸牌为4,剩下的纸牌留存轮次增加。
现在,只要给小九纸牌的数量n,他能通过逆推法快速地计算出取的纸牌编号顺序,方法如下(以n=4为例):
逆推得到的纸牌顺序 | 1 | 4 | 2 | 3 |
最终得到的纸牌编号 | 1 | 2 | 3 | 4 |
即在第i轮,上一轮纸牌轮次加1,并在后面增加一张轮次为1的纸牌。然后将轮次为1放在最前的位置,最后整体循环向右移动n-i次。直到n轮后,可知每张纸牌被取走的顺序,根据此顺序,得到每次取走纸牌的编号。
轮次 | 数组 | 1 2 3 4 |
1 | a(1)=1 | 1 |
2 | ①前一轮所有值加1 ②第二位增加数值1 ③将轮次为1的数放在最前 ④整体右移动2位 | 2 2 1 1 2 1 2 |
3 | ①前一轮所有值加1 ②第三位增加数值1 ③将轮次为1的数放在最前 ④整体右移动1位 | 2 3 2 3 1 1 2 3 3 1 2 |
4 | ①前一轮所有值加1 ②第四位增加数值1 ③将轮次为1的数放在最前 ④整体右移动0位 | 4 2 3 4 2 3 1 4 2 1 4 2 |
根据以上算法小九编写了如下VB程序,请回答下列问题。
Dim n As Integer
Dim a(1 To 100) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer,k As Integer
Dim ans As String, x As Integer
n = Val (Text1. Text)
a(1) = 1
For i=2 To n
For j=1 To i-1
Next j
j=i
Do While j>1
a(j)=a(j-1)
j=j-1
Loop
a(1) = 1
For j=1 Ton - i
k = a(1)
a(x) = k
Next j
Next i
ans =“”
For i=1 Ton
ans = ans + Str(a(i))
Next i
Label1. Caption =“序列为:”+ ans
End Sub
Function yd(i As Integer) As Integer
Dim j As Integer, tmp As Integer
For j=i To 2 Step -1
tmp=j+1
If tmp > i Then
a (tmp) = a(j)
Next j
yd=j+1
End Function