Dim i As Integer,j As Integer,flag As Boolean,t As Integer
i=1.j=6:flag=False:key=56
Do While i<=i
m=i+(j-i)\2
If a(m)<=key Then
i=m+1
Else
j=m-1:flag=True
End If
Loop
If flag Then t=i Else t=-1
数组元素a(1)到a(6)的值依次为10,18,25,30,45,56。该段程序运行后,t的值是( )
Private Sub Command1_Click()
Dim k As Integer,a As Integer,b As Integer
a=Val(Text1.Text)
b=Val(Text2.Text)
Label1.Caption=trans(a,b)
End Sub
Function trans(m As Integer,n As Integer)As String
If m<>0 Then
r=m Mod n
trans=trans(m\n,n)+Str(r)
Else
trans=0
End If
End Function
程序运行时,在文本框Text1和Text2中分别输入11和2,则Label1中的输出结果是( )
Private Sub Command1_Click()
Dim s As String,ch As String
Dim i As Integer,n As Integer
Dim max1 As Integer,max2 As Integer
s=Text1.Text:n=Len(Text1.Text)
If Mid(s,1,1)>Mid(s,2,1) Then
max1=1:max2=2
Else
max1=2:max2=1
End If
For i=3 To n
ch=Mid(s,i,1)
If ch>Mid(s,max1,1) Then
max1=i
ElseIf ch>=Mid(s,max2,1) Then
max2=i
End If
Next i
For i=1 To n
If Then Text2.Text=Text2.Text & Mid(s,i,1)
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, m As Integer, n As Integer
Label1.Caption = "1000以内的完全数如下:"
For i = 1 To 1000
n = 0
For m = 1 To i \ 2
If i Mod m = 0 Then n = n + m
Next
If n = i Then Label2.Caption = Label2.Caption & "" & Str(i)
Next
End Sub
该过程采用的算法是( )
i=1:j=8:k=0
key=95
Do While i<=j
k=k+1
m=Int((i+j)/2)
If key=a(m) Then Exit Do
If key<a(m) Then j=m-1 Else i=m+1
Loop
数组元素a(1)到a(8)的数据依次为“12,28,49,56,57,88,95,100”,该程序运行过程中,当变量k的值为2时,对应查找的a(m)值是( )
第一步:建立与的连接;第二步:根据需要;
第三步:访问记录集,;
第四步:根据需要把处理好的数据中;
第五步:与数据库的连接。
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
If c >= "0" And c <= "9" Then
x = Val(c)
a((x + 1) Mod 10) = a((x + 1) Mod 10) + 1
End If
Next i
s = ""
For i = 0 To 9
s = s & a(i)
Next i
Text2.Text = s
数组元素a(0)到a(9)的值均为0,执行该程序段后,文本框Text2显示的内容为“1302000100”。则文本框Text1中输入的内容可能是( )
Private Sub Form_Click()
Dim y, s, n As Integer
n = InputBox("输入n")
y = 0:
Do While n \ 10 <> 0
y = n Mod 10
s = s + y
n = n \ 10
Loop
Print s
End Sub
①处应填写:;②处应填写:。
5*5=25
6*6=36
25*25=625
76*76=5776
……
那么,5、6、25、76 等数被称为自守数。小袁编写一个 VB 程序,实现如下功能:找出 10000 以内所有可能的自守数,单击“统计”按钮 Command1,将符合要求的自守数显示在列表框 List1 中,统计个数显示在标签 Label1 中,运行界面如图所示。
Private Sub Command1_Click()
Dim n As Single, k As Integer, t As Integer, c As Integer
List1.Clear c=0
For n = 5 To 10000
k = Len(Trim(n)) 'Trim()函数用于删除字符串前后的空格
t = (n * n) Mod ①
If t = n Then
List1.AddItem Str(n)
②
End If
Next n
Label1.Caption = "自守个数为:" + Str(c)
End Sub
为实现上述功能,划线处应填入的代码分别为
① ②
有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:
⑴A、B都是不大于1000的正整数,若数值非零,则最高位不能是0;
⑵摆放“+”与“=”各使用两根火柴棒;
⑶A+B=C 与B+A=C视为相同的等式;
⑷n根火柴棒必须全部用上。
小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。
Dim sz(0 To 9) As Integer ‘数组元素sz(i)用于存储数字i所使用的火柴棒的数量
Private Sub Form_Load()
sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4
sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6
End Sub
‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量
Function hcs(ByVal x As Integer) As Integer
Dim s As Integer, k as integer
s = 0
Do While ①
k = x Mod 10
s=s+sz(k)
x = x \ 10
Loop
hcs = s + sz(x)
End Function
Private Sub Command1_Click()
Dim n As Integer
Dim a As Integer, b As Integer, c As Integer
n = Val(Text1.Text)
ans = 0
List1.Clear
For a = 0 To 999
For b = ② To 999
c = a + b
If ③ Then
List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))
ans = ans + 1
End If
Next b
Next a
List1.AddItem ("共有" + Str(ans) + "种等式")
End Sub
① ② ③
For i=1 To 2
For j=6 To i+1 Step -1
If a(j) Mod 10 > a(i) Mod 10 Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
Next i
执行上述程序段后,下列选项中,a(1)到 a(6)各元素值不可能的是( )
i=1: flag=True
Do While i<6 And flag=True
flag=False
For j =6 To i+1 step -1
If a(j) > a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
flag=True
End If
Next j
f(i)=1 'f 数组初值均为 0
i=i+1
Loop
For i=1 To 6
s=s+f(i)
Next i
数组元素a(1)到a(6)的值依次为“17,79,93,55,15,13”,执行该程序段后,s的值是( )
s ="ghi jabcdef"
key = Chr(97 + 3 * Int(Rnd * 4))
i =1:j=Len(s)
Do While i< = j
m=(i+j+1)\2
ans=ans+Str(m)
c = Mid(s,m,1)
If c=key Then Exit Do
If Mid(s,i,1) < c Then
If key>=Mid(s,i,1) And key<c Then j=m-1 Else i=m+1
Else
If key>c And key <= Mid(s,j,1) Then i =m+1 Else j=m- 1
End If
Loop
运行程序后,变量ans的值不可能是( )
①将明文字符串s中的每个字母字符根据它所在该字符串的位置,往后移动相应的位置,并转化为对应的小写或大写字母(例如:大写字母A往后移动5位变成F,转化成小写字母得到f;小写字母y往后移动8位得到g,转化成大写字母得到G),非字母字符不处理,得到新串ss。
②将①得到的新串ss平均切割成两部分,若ss的长度n为奇数,则第一部分长度为n//2+1,第二部分长度为n//2。再将后面一段字母依次逐个插入前一段字符后边,组成一段密文。
例如“Good.Luck!”生成密文过程如下:
①明文字符串s移位和大小写转换过程:
下标位置 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
原始字符 |
G |
o |
o |
d |
. |
L |
u |
c |
k |
! |
向后移动i位 |
H |
q |
r |
h |
. |
R |
b |
k |
t |
! |
大小写转换 |
h |
Q |
R |
H |
. |
r |
B |
K |
T |
! |
②将①得到的密文ss平均切割成两部分。
例如将上述①得到的字符串中6~10位置的字符依次逐个连接在1~5字符后面,生成密文如图a所示:
图a
下标位置 |
1 |
2 |
3 |
4 |
5 |
6 |
密文字符 |
i |
T |
C |
D |
S |
! |
位置交换 |
||||||
大小写转换 |
||||||
向前移动i位 |
例如能力值分别为“1,2,2,3,4,5”进行分组,分成两种方案:
方案一,可以分(2)和(1,2,3,4,5)两组:
方案二,可以分(1,2)和(2,3,4,5)两组:
可见,方案二分组中人数最少的组人数更多,因此该方案更优。根据上述要求编写VB程序,程序运行界面如16题图所示。
Private Sub Command1 Click()
Dim a(1000) As Integer, q(1000) As Integer
Dim top As Integer '表示分组数量
Dim sum(000 As Integer '存储每组的人数
‘初始化得到n位同学的能力值,分别存储在a(1)-a(n)中,并升序排序,代码略
top=0
For k= 1To n
i=0:j =top
Do While i< j
m=(i+j+1)\2
If q(m)<=a(k) Then
Else
j=m-1
End If
Loop
If q(i) <> a(k) Then
top=top+1
sum(top) = 1
Else
sum(i) = sum(i) + 1
End If
Next k
ans = sum(1)
For k= 2 To top
If sum(k) < ans Then ans = sum(k)
Next k
Label1. Caption = “人数最少的一组人数最多为” + Str (ans)
End Sub
i=1 : j=10 : key= 20
Do While i<=j
m=(i+j)\2
If a(m)> key Then
j=m- 1
Else
i=m+1
End If
Loop
如a数组中的元素依次为2,9,10,12,15,20,20,20,21,25,下列各变量值正确的是( )
编写VB程序,实现上述功能。运行程序,在列表框List1中显示每笔交易流水记录的商品货号与销售金额,单击“分析”按钮Command1,汇总同类商品的销售额并在列表框List2中显示销售额前3名的商品货号与销售金额。程序运行界面如图所示。
(单选,填字母: A .类名/B .属性名/C .方法名/D .事件名)
'n是交易流水的记录总数,ng是商品种类,代码略
Dim goods(1 To n) As String '每笔交易的商品货号
Dim money(1 To n) As Single '每笔交易的销售金额
Dim g(1 To ng) As String
Dim c(1 To ng) As Single
Private Sub Form_ Load ()
'读取每笔交易流水,分别将商品货号存入数组goods、销售金额存入数组money
'g(1)~g (ng)分别存储ng种商品的货号,在List1中显示交易记录信息,代码略
End Sub
Private Sub Command1_Click ()
Dim i As Integer, j As Integer, tc As Single, tg As String
For i=1 To n
For j=1 To ng
If goods(i) = g(j) Then
Next j
Next i
i =1
Do While i <= ng
Fo rj=ng To i+1 Step-1
If c(j)>c(j-1) Then
tc=c(j) : c(j)=c(j-1) : c(j-1)=tc
tg=g(j) : g(j)=g(j-1) : g(j-1)=tg
End If
Next j
If Then Exit Do
i =i+1
Loop
For j=1 To
List2.AddItem g(j) +“”+ Str(c(j))
Next i
End Sub