n = 10
Text1.Text = ""
For i = 1 To 5
For j = n To i + 1 Step -1
If a(j) < a(i) Then
temp = a(j): a(j) = a(i): a(i) = temp
End If
Next j
Next i
For i = 1 To 10
Text1.Text = Text1.Text + Str(a(i))
Next i
数组元素a(1)到a(10)的值依次为“965,155,195,444,106,734,172,983,898,360”,执行该程序段,文本框Text1中显示的是( )
⑴分别将十进制数x,y转换为二进制,并将转换的每位二进制数存储到数组a,b中;如果两个二进制位数不相等,则位数较少的前面用“0”补足,使之a,b数组元素个数一致;
⑵取出数组a,b中下标相同的数组元素进行运算,若值相同,则结果为0,否则为1;
根据上述运算方法,示例如表所示。
变量 | 十进制 | 二进制 | ||||
x | 19 | 1 | 0 | 0 | 1 | 1 |
数组a | a(1) | a(2) | a(3) | a(4) | a(5) | |
y | 9 | 0 | 1 | 0 | 0 | 1 |
数组b | b(1) | b(2) | b(3) | b(4) | b(5) | |
x xor y | 1 | 1 | 0 | 1 | 0 |
小明编写了一个VB程序,功能如下:在文本框Text1、Text2中分别输入x、y的值,单击“异或”按钮Command1,程序对数据进行异或运算,并将结果显示在列表框List1中。
Function f(z As Integer) As String
'此程序段实现将十进制数z转换为二进制数f
Dim y As Integer
Do While z > 0
y = z Mod 2
z = ①
f = str(y) & f
Loop
End Function
Private Sub Command1_Click()
Dim x,y,k,m As Integer
Dim s1 As String, s2 As String, s3 As String
Dim a(15) As String, b(15) As String
x = Val(Text1.Text): y = Val(Text2.Text)
If x < y Then
m = x: x = y: y = m
End If
s1 = f(x): s2 = f(y) 's1表示x的二进制数,s2表示y的二进制数
k = Len(s1)
For i = 1 To k '将转换后的二进制数按位分别存储到数组a和b
a(i) = Mid(s1, i, 1)
If i <= Len(s2) Then
b(i) = Mid(s2, i, 1)
Else
'②
End If
Next i
S3=""
For i = 1 To k
If Then '③
s3 = "0" + s3
Else
s3 = "1" + s3
End If
Next i
List1.AddItem "异或结果是:" + s3
End Sub
① ② ③
Private Sub Command2_Click()
Dim i As Integer, j As Integer, tmp As Integer
Dim s1 As String, t As Integer, s2 As String
t=1
For i=1 To n-2
For j= To n Step 2 ‘改错
If a(i)*t>a(j)*t Then
tmp =a(i): a(i)= a(j): a(j)=tmp
End if
Next j
‘填空①
Next i
For i =1 To n
If Then ‘填空②
s1 =s1 Str(a(i))
Else
s2=s2+Str(a(i))
End If
Text2. Text=“奇数位:”+s1
Text3. Text=“偶数位:”+s2
End Sub
回答以下问题:
排序前 |
86 |
71 |
5 |
41 |
81 |
79 |
37 |
89 |
排序后 |
5 |
37 |
41 |
71 |
79 |
89 |
86 |
81 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer
Private Sub Command1_ click ( )
Dim i As Integer, j As Integer, k As Integer, t As Integer
Dim flag As Boolean, sl As String, s2 As String
‘ 读取一组正整数,存储在数组a中
‘ 代码略
For i = 1 To n
s1 = s1 + Str(a(i))
Next i
Text1. Text = s1
For i = 1 To n-1
‘①
If IsPrime(a(k)) Then flag = True
Else flag = False
For j = i + 1 To n
If IsPrime (a(j)) Then
If Then ‘②
k = j
flag = True
End If
End If
Next j
If k <> i Then
t = a(k):a(k) = a(i):a(i) = t
End If
If Not flag Then Exit For ‘ Exit For表示退出循环
Next i
‘依次输出排序后的数据
‘代码略
For i=1 To n
s2 = s2 + Str(a(i))
Next i
Text2. Text = s2
End Sub
Function IsPrime (m As Integer) As Boolean
‘ 本函数判断整数m是不是素数。是素数返回值为True,不是素数返回值为False
‘ 代码略
End Function
加框①处代码应改为。
加框②处代码应改为。
Key = Val (Text2. Text)
i =1
j=9
flag = False
Do While i <= j And flag = False
m=(i+j)\2
If ⑴ Then
j=m-1
ElseIf ⑵ Then
i=m+1
Else
If ⑶ Then
j=m-1
ElseIf ⑷ Then
i=m+1
Else
flag = True
End If
End If
Loop
If flag Then Text3. Text = “在第”+ Str(m) +“个”Else Text3. Text =“找不到”
上述程序段中横线处可选语句为:
①Key \ 10 > a(m) \ 10 ②Key Mod 10 < a(m) Mod 10
③Key \ 10 < a(m) \ 10 ④Key Mod 10 > a(m) Mod 10
则(1)(2)(3)(4)处语句依次为( )
假设银行的年存储利率为3%,如果现在存储10000元钱,问多少年后连本带利超过12000元。设定:连本带利=本金*(1+利率)∧年数。
假设n年后连本带息超过12000,根据题意得出数学关系式:10000*(1+3%)∧n>12000,求最小的n。
Dim s as single
Dim r as single
Dim n as integer
s=10000
r=0.03
n=0
Do while
n=n+1
s=s*(1+r)
Loop
Print n;”年后”:”连本带利超过”;s
根据上述回答下列问题
实现上述功能的VB程序如下,在橫线处填入合适的代码。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
Dim k As Integer, bottom As Integer
'获取排序前数据,依次存储在数组 a 中,并在文本框 Text1 中显示。代码略
bottom = n: i = 1
Do While i <= bottom - 1
k = i: j = bottom
Do While j > i
If a(j) < a(k) Then
k = j
ElseIf a(j) = a(i) Then '若发现重复数据,进行剔除处理
a(j) = a(bottom)
IfThen k = j
bottom = bottom - 1
End If
j = j - 1
Loop
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
Else
EndIF
Loop
For i = 1 To
Text2.Text = Text2.Text + Str(a(i))
Next i
End Sub
请回答下列问题。
Constn= 10
Dim a(1 To n) As Integer
Private Sub Command1_ Click()
Dim Left As Integer, Right As Integer, Lstart As Integer, Rstart As Integer
Dim i As Integer, j As Integer, t As Integer, s As String
'随机生成n个不重复元素的数组a,并在左边环形显示,代码略
k= 1
For i= 2 Ton
If a(i) < a(k) Thenk=i
Next i
Lstart = (k+n- 2) Mod n+ 1: Rstart= k Mod n+ 1
i= 1
Do Whilei<= (n-1)\2
Left = Lstart
For j= 1 To
p= (Left+ n-2) Mod n+ 1
If a(Left) > a(p) Then
t= a(Left): a(Left) = a(p): a(p)= t
End If
Left= p
Next j
Rstart= Rstart Mod n + 1
Right = Rstart
Do While
p=RightModn+1
If Then
t= a(Right): a(Right) = a(p): a(p)=t
End If
Right= p
Loop
Lstart =
i=i+ 1
Loop
排序后的数据在右边环形显示,代码略
End Sub
key = Val(Text1.Text)
i = 1 : j = 9
Text2.Text = ""
Do While i <= j
If key = a(m) Then Exit Do
If key < a(m) Then
i = m + 1
Else
j = m – 1
End If
Text2.Text = Text2.Text + " " + Str(a(m))
Loop
数组元素a(1)到a(9)的值依次为88,75,70,68,61,58,55,50,43,本框Text1中输入的值是58,执行该程序段,文本框Text2中显示的是61,50,55,则方框处的代码应为( )
Dim a(1 To 10) As Integer
a(1) = 20: a(2) = 19: a(3) = 17: a(4) = 15: a(5) = 15
a(6) = 15: a(7) = 16: a(8) = 20: a(9) = 25: a(10) = 27
L = 1: R = 10
Do While L <= R
m = (L + R) \ 2
If a(m) > a(m - 1) Then
R = m - 1
Else
L = m + 1
End If
Loop
Text1.Text = Str(R)
该程序段运行后,文本框Text1中显示的内容是( )
Key = Int(Rnd * 5 + 5)
i = 1: j = 10: sum = 0
Do While i <= j
m = (i + j ) \ 2
If a(m) <= Key Then
i = m + 1
Else
j = m - 1
End If
sum = sum + m
Loop
数组元素a(1)到a(10)分别是2、4、5、6、6、6、8、8、10、12,程序运行后,sum的值不可能是 ( )
密码强度判断条件如下:密码长度小于6,则强度为“弱”。在密码长度大于等于6的情况下,若只出现一种字符,则密码强度为“弱”;若出现两种不同字符,则密码强度为“中”,出现三种以上不同字符,则密码强度为“强”。
Private Sub Cmd1_Click()
Dim n As Integer, i As Integer, m As Integer, s As String, c As String
If n<6 Then
Label3.Caption="弱"
Else
s="0000"
For i=1 To n
c=Mid(Text1.Text, i, 1)
If c>="0" And c<="9" Then
Mid(s, 4, 1)="1" '将字符串s第4位上的字符替换为"1"
ElseIf c>="A" And c<="Z" Then
Mid(s, 3, 1)="1"
ElseIf c>="a" And c<="z" Then
Else
Mid(s, 1, 1)="1"
End If
Next i
m=0
For i=1 To 4
If Mid(s, i, 1)="1" Then
Next i
If m<2 Then
Label 3.Caption="弱"
ElseIf m=2 Then
Label 3.Caption="中"
Else
Label3.Caption="强"
End If
End If
End Sub
'人员编号和笔试成绩分别存储到数组变量id 和score中,应聘总人数存储在变量n中面试比例在文本框Text1中输入,所输入比例值必须使面试人数大于1且小于n,代码略。
Private Sub Command1_Click( )
Dim i As Integer, j As Integer, st As String, t As Integer
For i = 1 To n - 1 '按笔试成绩从高到低排序
k = i
For j = i + 1 To n
If Then k = j
Next j
If k <> i Then
st = id(k): id(k) = id(i): id(i) = st
t = score(k): score(k) = score(i): score(i) = t
End If
Next i
num =
j=num+1
Do while j<=n
If Then Exit Do
j=j+1
Loop
For k=
List2.AddItem Str(k) + " " + id(k) + " " + Str(score(k))
Next k
End Sub
原1-7号男生身高 |
171 172 180 174 176 179 178 |
筛选排序后序列 |
171 172 174 176 178 179 180 |
“造型设计”后序列 |
180 178 174 171 172 176 179 |
王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command1,选出“男生”且按身高升序排列显示在文本框Text1中;单击“设计造型”按钮Command2,根据身高仿“V”字的造型进行有序排列,并将结果显示在文本框Text2 中。程序运行界面如图所示。举例说明如下:
Const n = 7
Dim h2(1 To n) As Integer
Dim height1(1 To n) As Integer, height 2 (1 To n) As Integer
Dim i As Integer, j As Integer, temp As Integer
Dim sex(1 To n) As Boolean ' 男生sex=true
Private Sub Form_Load()
'n名学生的身高和性别由数据库导出,分别存储在数组height1和sex中,代码略!
End Sub
Private Sub Command1_Click()
For i = 1 To n - 1
For j = n To i + 1 Step -1
IfThen
temp = height1(j): height1(j) = height1(j - 1): height1(j - 1) = temp
End If
Next j
Next i
For i = 1 To n
Text1.Text = Text1.Text + " " + Str(height1(i))
Next i
End Sub
Private Sub Command2_Click()
Dim left, right As Integer, i As Integer, mid As Integer
mid = Int((1 + n) / 2)
left = 0: right = 0
For i = 2 To n Step 2
right = right + 1
height2(mid + right) = height1(i)
left = left + 1
Next i
For i = 1 To n
Text2.Text = Text2.Text +“ “ + Str(height2(i))
Next i
End Sub
为实现以上功能,请在画线处填写正确代码。
i=1 : j=8
key=Text1.Text
Do While i<j
m=(i+j)\2
If key>=a(m) Then i=m+1 Else j=m
Loop
数组a(1)至a(7)分别是"123","25","35","477","66","8","82",当在Text1中输入5时,运行这段程序后,下面说法错误的是( )
For i=1 To 6
k=i
For j=i+1 To 7
If a(j)<a(k) Then k=j
Next j
If i<>k then
t=a(i) : a(i)=a(k) : a(k)=t
End If
Next i
在排序过程中,经过某一遍排序“加工”后,数组元素a(1)到a(7)的数据依次为“10,41,75,12,63,11,85”,则下一遍排序“加工”后数组元素a(1)到a(7)的数据依次是( )
For i=1 To 2
For j=1 To 6-i
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
数组元素a(1)到a(6)的值依次为“71,54,58,29,31,78”,经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为( )
For i = 1 To 4
For j = i + 1 To 5
If a(j) > a(i) Then t = a(j): a(j) = a(i): a(i) = t
Next j
Next i
数组元素a(1)~a(5)的值依次为“15,4,12,7,9”,整个排序过程中,数组中数据比较次数和交换次数分别是( )