Dim n,s As Integer 'n为试题计数器,s为得分
Dim a, b As Integer 'a,b 为两个运算数
Dim c As String 'c为运算符:"+ "表示加法,"-"表示减法
Private Sub Form_Load()
n = 0:
s = 0
End Sub
Private Sub Command1_Click() ‘出题按钮
Randomize
n = n + 1
If n < 11 Then
Label1.Caption = "No:" + Str(n)
a = Int(Rnd * 100) 'a,b为运算数,且要求a不小于b
b = Int(Rnd * 100)
If Then t = a: a = b: b = t '(1)
If Rnd > 0.5 Then c = "+" Else '(2)
Label5.Caption = Str(a) + c + Str(b) + "="
Text1.Text = ""
Else
Command1.Caption = "完成测试"
End If
End Sub
Private Sub Command2_Click() ‘判断按钮
If c = "+" Then
If a + b = Val(Text1.Text) Then s = s + 10
Else
If Then s = s + 10 '(3)
End If
Label3.Caption = "得分:" + Str(s)
End Sub
实现上述功能的VB代码如下, 但划线处代码有错,请改正。
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer
k = 0: i = 3
Do While i <= 100
If ① prime(i) Then ‘⑴
k = k + 1
a(k) = i
End If
i = i + 2
Loop
For i = 2 To k
If ②a(i) = a(i +1)+2 Then ‘⑵
List1.AddItem Str(a(i - 1)) + "和" + Str(a(i))
End If
Next i
End Sub
Function prime(x As Integer) As Boolean
prime = False
For i = 2 To Int(Sqr(x))
If x Mod i = 0 Then
prime = True
Exit For
End If
Next i
End Function
① ②
原始数据 | 65 | 57 | 59 | 44 | 45 | 69 |
第1遍 | 44 | 65 | 57 | 59 | 45 | 69 |
第2遍 | 44 | 45 | 55 | 57 | 59 | 69 |
第3遍 | 44 | 45 | 57 | 65 | 59 | 69 |
… | … | … | … | … | … | … |
图1 | 图2 |
Private Sub Command1_Click()
Const code = "0123456789ABCDEF"
Dim s1 As String, s As String '变量s存储转换后的结果
Dim x As Long, R As Integer
If R >= 2 And R <= 16 Then
x = Val(Text1.Text)
s = ""
Do While x > 0
y = x Mod R
x =
s1 = Mid(code, y + 1, 1) '将余数转换为对应的字符
s =
Loop
List1.AddItem "(" & Text1.Text & ")10" & " →(" & s & ")" & R
End If
End Sub
Private Sub Command1_Click()
Dim a(1 To 100) As Integer
x = Val(Text1.Text)
y = Val(Text2.Text)
For i = 1 To 100
(1)
List1.AddItem Str(a(i))
Next i
For i = x To y - 1
k = i
For (2)
If a(k) > a(j) Then k = j
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
Next i
For i = x To y
List2.AddItem Str(a(i))
Next i
End Sub
⑴ ⑵
Do While i <= 5
If i = 1 Or a(i - 1) <= a(i) Then i = i + 1
Else
t = a(i): a(i) = a(i - 1): a(i - 1) = t i = i - 1
End If Loop
数组元素a(0)到a(8)的初始值依次为“0,4,7,3,5,1,8,6,2”。执行该程序段后,数组元素a(1)到a(8)的值分别是
小明编写了一个VB程序来计算e的近似值,功能为在文本框Text1中输入公式n值,单击“计算”命令按钮Command1,在标签Labe2中显示计算结果,程序运行界面如图所示。
Private Sub Command1__Click()
Dim I As Double,p As Double
Dim e As Double
n= ①
e=1
i=1
p=1
Do While i<=n
p= ②
e=e+p
③
Loop
Label2. Caption=“e的值是:”+Str(e)
End Sub
① ② ③
t = 0
For i = 1 To n
If a(i) Mod 2 = 1 Then
t = t+1
End If
Next i
For i = 1 To t-1
For j = t To i + 1 Step-1
If b(j) < b(j-1) Then
temp = b(j): b(j) = b(j-1): b(j-1) = temp
End if
Next j
Next i
方框中应填写的正确语句是( )
Private Sub Command1_Click()
Dim sum As Integer, a As Integer, b As Integer
Dim i As Integer, c As Integer, d As Integer
List1.Clear
sum = 0 '玫瑰花个数
For i = 1000 To 9999
a = i Mod 10 '求个位上的数字
b =① '求十位上的数字
c = i \ 100 Mod 10 '求百位上的数字
d = i \ 1000 '求千位上的数字
If a ^ 4 + b ^ 4 + c ^ 4 + d ^ 4 = i Then
List1.AddItem Str(i)
②
End If
Next i
Label1.Caption = "玫瑰花个数为:" + Str(sum)
End Sub
实现上述功能的VB代码如下:
Private Sub Command1_Click()
Dim s As String, m As String
Dim t As String
s1=Len(Text3.Text)
If s1 < 26 Then
Text2.Text=“请重新输入密钥!”
Exit Sub
End If
s=Text1.Text
n=Len(s)
For i=1 To n
k=Mid(s,i,1)
m= “abcdefghijklmnopqrstuvwxyz”
a=1:b=26
Do While a<=b
c= ①
If k= Mid(m,c,1) Then
Exit Do
End If
If ② Then
b=c-1
Else
a=c+1
End If
Loop
s3=Text3.Text
t=t+ ③
Next i
Text2.Text=t
End Sub
① ② ③
i=1:j=10:k=0
key=Val(Text1.Text)
Do While i<=j
k=k+1
m=(i+j+1)\2
If a(m)<key Then
i=m+1
Else
j=m-1
End If
Loop
数组元素a(1)到a(10)的值依次为10,12,14,17,19,20,20,27,29,32。在文本框Text1中输入12,执行该程序段后,以下变量值正确的是( )。
排序前 |
55 |
70 |
70 |
78 |
71 |
79 |
75 |
80 |
80 |
90 |
排序后 |
55 |
70 |
70 |
71 |
75 |
78 |
79 |
80 |
80 |
90 |
查找该组数据中满足[k1, k2]范围的数据个数为:8 |
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Const n = 10
Dim a(1 To n) As Integer, k As Integer
Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer
Dim p As Integer, q As Integer
Dim b As Integer '查找满足条件的第一个数据所在数组元素的下标
'读取排序前的一组正整数,存储在数组a中。代码略
p= Val(Text1.Text)
q = Val(Text2.Text)
For i = p To q - 1
For j = Step -1
If a(j) < a(j - 1) Then
k = a(j): a(j) = a(j - 1): a(j - 1) = k
End If
Next j
Next i
k1 = Val(Text3.Text)
k2 = Val(Text4.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If ① Then
i = m + 1
Else
j = m - 1
End If
Loop
b = ②
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If a(m) <= k2 Then
i = m + 1
Else
j = m - 1
End If
Loop
Label1.Caption = Str ③
End Sub
① ② ③
1)上靠:若退的房间号为3,则原来登记的记录变为1_3,6_3,10_1;
2)下靠:若退的房间号为5,则原来登记的记录变为1_2,5_4,10_1;
3)上下靠:若退的房间号为9,则原来登记的记录变为1_2,6_5;
4)上下都不靠:若退的房间号为4,则原来登记的记录变为1_2,4_1,6_3,10_1
据上述规则,小明编写了相应的VB程序,程序启动时读入空房间数据,并在列表框List1中显示,在文本框Text11中输入退房号,单击“退房”按钮后更新列表框List1中的数据。程序界面如图所示,请回答下列问题:
|
|
Dim a(0 To 10) As Integer ‘保存第i条记录的开始房间号
Dim b(0 To 10) As Integer ‘保存第i条记录的房间数
Dim sp As Integer
Private Sub Form_load()
‘程序启动时从数据库读取原始k条记录,依次存入a(1),b(1),a(2),b(2),...a(k),b(k)代码略
a(0)=0: b(0)=0: sp=k+1: a(sp)=0: b(sp)=0
End sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
c = Val(Text1.Text)
i = 1
Do While a(i) < c
i = i + 1
Loop
i = i - 1
'处理退房登记问题
If a(i) + b(i) = c Then
If a(i + 1) = c + 1 Then ‘处理第3种情况
For j = i + 1 To sp - 1
a(j) = a(j + 1): b(j) = b(j + 1)
Next j
sp = sp - 1
Else ‘处理第1种情况
b(i) = b(i) + 1
End If
ElseIf c + 1 = a(i + 1) Then ‘处理第2种情况
a(i + 1) = c: b(i + 1) = b(i + 1) + 1
Else
For j =
a(j) = a(j - 1): b(j) = b(j - 1)
Next j
a(i + 1) = c: b(i + 1) = 1:
End If
List1.Clear
For i = 1 To sp - 1
List1.AddItem "" & Str(i) & Str(a(i)) & Str(b(i))
Next i
End Sub
tail=6: i=1: r=2
Do While i<r
For j= tail To i+1 Step-1
If a (j)> a(j-1) Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
i=i+1
For j=i To tail-1
If a(j)<a(j+1) Then
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
tail=tail-1
Loop
数组元素值“73、56、28、61、44、92”,运行程序,数组元素a(1)到a(6)的值依次为( )
For i=a To b- 1
For j=
If Then
t=x(j):x(j)=x(j+1):x(j+ 1)=t
End If
Next j
Next i
方框处的语句分别是( )
实现以上功能的VB程序如下,请回答下列问题:
Const n=500
Dim xh(1 To n) As Integer '存放学生学号
Dim cj(1 To n) As Integer '存放学生成绩
Dim i, d, k, t, y As Integer
Private Sub Command1 Click()
'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
'代码略
End Sub
Private Sub Command2_Click()
For i=1 To n-1
For j=n To i+1 Step-1
If c(j)>cj(j-1) Then
t=ci(j): cj(j)=cj(j-1): cj(j-1)=t
t=xh(j):xh(j)=xh(j-1):xh(j-1)=t
End If
Next j
Next i
k=1
For i=2 To n
If ① Then
k=k+1
y=0
Else
y=1
End If
If (y=1 And k> 1) Or (i=n And k> 1) Then
For d=i-k To i-2
For ② To (i-k+1) Step-1
If xh(j)>xh(j-1) Then
t=xh(j): xh(i)=xh(j-1): xh(j-1)=t
End If
Next j
Next d
k=1
End If
Next i
List2.Clear
List2.AddItem " "+"学号"+" "+"技术成绩"+" "+"考试号"
For i=1 To n
List2.AddItem Str(xh(i))+" "+Str(cj(i))+" "+ ③
Next i
End Sub
① ② ③
i = 1: j = 20
m = (i + j + 1) \2
Do While i < j And Key <> a(m)
If a(m) > Key Then i = m+ 1 Else j = m -1
m = (i + j + 1) \2'①
Loop
数组元素a(1)到a(20)各不相同且按降序排列,若查找键key与a(4)相等,执行该程序段,①处语句的执行次数有( )
a(1) |
a(2) |
a(3) |
…… |
a(n-2) |
a(n-1) |
a(n) |
3 |
25 |
38 |
…… |
55 |
31 |
12 |
依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click( )
Const n=6
Dim a(1 To n) As Integer,flag As Boolean
Dim i As Integer,j As Integer,m As Integer,key As Integer
′读取一组正整数,按上述规则存入数组a中,代码略。
key=Val (Text1.Text)
i=1
j=(n+1)\2
flag=True
Do While And Not flag′
m=(i+j)\2
If key=a(m) Then
flag=True
ElseIf key<a(m) Then
j=m-1
Else
i=m+1
End If
Loop
If Not flag And j>0 Then
m=
If key=a(m) Then flag=True
End If
If flag Then
Text2.Text=Str(m)
Else
Text2.Text=“找不到”
End If
End Sub
其中,加框处应改正为、
Dim a As String, b As String, p As String, s As String
a = Text1.Text
b = Text2.Text
c = Text3.Text
p = “ ”
For i = 1 To Len(a)
If b = Mid(a, i, Len(b)) Then
s = s + c
p = p + Str(i)
Else
s = s + Mid(a, i, 1)
End If
Next i
Label1.Caption = p
若文本框Text1中输入“Hello,Python!I use Python!”,文本框Text2中输入“Python”, 文本框Text3中输入“VB”运行该段程序后,标签Label1中显示的是( )
比如有7个选手,他们的等级分别是30,17,26,41,19,38,18,要进行3场比赛。最好的安排是选手2对选手7,选手7对选手5,选手6对选手4。此时等级差的总和等于(18-17)+(19-18)+(41-38)=5达到最小。
窗体form1的运行界面如下图所示,用户在文本框Text1中输入各位选手的等级(以逗号分隔),在文本框Text2中输人要对弈的场数k,单击计算按钮Commmand1,在文本框Text3中显示最小等级差总和。程序运行界面如图所示。
Dim a(0 To 1000) As Integer
Dim b(0 To 1000) As Integer
Private Sub Command1_ Click()
Sum=0
k = Val(Text2. Text)
s =Text1. Text
cnt =1
For i=1 To Len(s)
c=mid(s, i, 1)
If c="," Then cnt=cnt+1 Else
Next i
For i=1 To cnt-1
For j=1 To cnt-i
If Then
t = a(j): a(j) = a(j+ 1): a(j+1)= t
End If
Next j
Next i
'计算出各等级选手之间差值
For i=1To cnt- 1
b(i)=a(i+1)-a(i)
Next i
For i=1 To k
Min=i
If b(j) < b(Min) Then Min = j
Next j
Sum = Sum + b(Min)
Next i
Text3. Text = Str(Sum)
End Sub