相关试卷
-
1、现有二进制数
,则加框处数码所对应的权值是( ) A、21 B、22 C、23 D、24 -
2、某对分查找算法的VB程序段如下:
i=1: j=6: n=0: f=False
key=Val(Text1.Text)
Do While i<=j and Not f
n=n+1
m=Fix((i+j)/2)
If key=a(m)then f=True
If key<a(m)then j=m-1 Else i=m+1
Loop
数组元素a(1)到a(6)的值依次为“12,19,27,31,46,55”,文本框Text 1中输入“31”后运行该程序,则以上程序段运行结束后,下列说法不正确的是( )
A、变量i的值为4 B、变量j的值为4 C、变量m的值为4 D、变量n的值为3 -
3、某排序算法,VB代码如下:
i=1
Do While i<=5
If i = 0 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(5)依次为:“0,41,22,53,99,36”,经过该程序段处理后,数组元素a(3)的值为( )
A、36 B、53 C、41 D、22 -
4、在平面坐标系中,给定任意个点,求出这些点中与点(1,1)距离最远的点。小李编写出了相应功能的程序:在文本框Text1中输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这些点到(1,1)的距离后,结果显示在列表框List1中,并且输出最大距离的点。程序运行界面如图所示。
(1)、由图可知,窗体中的对象共有类;(2)、实现上述功能的VB程序如下,请在画线处填入合适的代码。Private Sub Command1_Click()
Dim i, k As Integer
Dim x1, y1, x2, y2 As Single
Dim v As Singie, maxd As Single
Dim s As String, pos zb As String
List1.Clear
s=Text1.Text
x1=1: y1=1
t="": k=1: j=1
List1.AddItem"坐标点" & "距离"
For i=1 To Len(s)
If Mid(s, i, 1)="," Then
v=Val(Mid(s,j,i-j))
j=
If k Mod 2=1 Then
x2=v
Else
y2=v
d=Sqr((x2-x1)^2+(y2-y1)^2)
If Then
maxd=d
pos="(" & Str(x2)& "," & Str(y2)& ")"
End If
List1.AddItem"(" & Str(x2)& "," & Str(y2)& ")" & Str(d)
End If
k=k+1
End If
Next i
Label1.Caption="距离(1, 1)最远的点为"& pos &"距离为"& Str(maxd)
End Sub
(3)、若文本框Text1中输入的内容为“31,41,26,51,1,56”,程序运行结束后,距离(1,1)最远的坐标点是。 -
5、有如下ⅤB程序段:
For i=1 To 10
b(a(i) Mod 10)= b(a(i) Mod 10)+1
b(a(i)\10)=b(a(i)\10)+1
Next i
num=0
For i=0 To 9
If b(i)>num Then num b(i)
Next i
数组b各元素初始值为0,数组元素a(1)到a(10)的值依次为“68,17,24,30,36,40,55,58,61,66”,执行该程序段,num的值为( )
A、2 B、3 C、4 D、5 -
6、阅读程序,回答问题。(1)、将程序中的空白处补充完整。
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
(2)、将流程图中的空白处补充完整。
①处应填写:;②处应填写:。
(3)、若输入n的值为62,程序执行完毕,s的值是 , 该程序采用类型的算法。(解析法/穷举法) -
7、对一段字符(仅包含大小写字母和数字)加密,加密规则为:①字母和数字都往后循环顺移3位,如“a”变为“d”,“y”变为“b”;“0”变为“3”,“7”变为“0”②加密后字母在前,数字在后③字母按逆序排列,数字按顺序排列,如输入明文“ab7Z8x3”,这密文为“aCed4016”。
小王利用VB程序实现这一加密功能,程序界面和代码如下所示:
Private Sub Com_ jm_ Click()
Dim x As String, ch As String, cl As String
Dim s1 As String, s2 As String, s As String
Dim i As Integer, n As Integer, y As Integer
x= Text1. Text
n=Len(x)
For i=1 To n
ch= Mid(x, i, 1)
If ch >= "0" And ch <= "9" Then
①
s2=s2 & y
Elself ch >="a" And ch<="z" Then
y=(Asc(ch)-Asc("a")+3) Mod 26
②
s1=c1+s1
Else
y=(Asc(ch)- Asc("A")+3) Mod 26
c2=Chr(Asc("A")+y)
s1=c2+s1
End If
Next i
③
Text2 Text=s
End sub
(1)、根据程序代码分析,“加密”按钮的名称是。(2)、根据加密规则,明文“9G78fbY5”,则密文为。(3)、请在画线处填入合适的代码:① ② ③
-
8、给定区间[a1,a2]和[b1,b2],若a2≥b1,则认为这两个区间是有重叠的,可进行合并。如区间[1,3]和[2,6]可合并为[1,6];区间[1,6],[2,5]可合并为[1,6];区间[1,4]和[4,5]可合并为[1,5]。
编写一个“合并重叠区间”的VB程序,功能如下:在文本框Text1中按各区间起始值升序依次输入各区间的起始值和终止值(数据都用逗号分隔并以逗号结尾),单击“确定”按钮后,在Text2中显示合并后的各个区间。例如,在文本框Text1中输入“1,2,3,5,4,6,9,12,10,11,”,表示区间[1,2],[3,5],[4,6],[9,12],[10,11],合并后的区间分别为[1,2],[3,6],[9,12]。程序运行界面如图所示,实现上述功能的VB代码如下:
Const n=100
Private Sub Cmd1_Click()
Dim i As Integer, k As Integer, L As Integer, R As Integer
Dim s As String, c As String, t As String, result As String
Dim a(1 To n) As Integer
s= ① : t=" ": k=0
For i=1 To Len(s)
c=Mid(s, i, 1)
If c<>"," Then
②
Else
k=k+1
a(k)=Val(t)
t=""
End If
Next i
L=a(1): R=a(2)
i=3
Do While i<=k
If a(i)>R Then
result = result+"("+Str(L)+","+Str(R)+"),"
L=a(i): R=a(i+1)
R=a(i+1)
End If
③
Loop
result=result+"("+Str(L)+","+Str(R)+"),"
Text2. Text=result
End Sub
(1)、码中①②③划线处代码补充完整。① ② ③
(2)、程序代码中的加框处代码有误,请改正。(3)、运行该程序,输入数据如图所示,程序执行完毕时,变量k为。 -
9、反转字符串,如输入字符串为“123ABCD”,则输出字符串为“DCBA321”。部分程序如下所示,划线处的正确语句是( )
s=Text1.Text:n=Len(s):i=1
‘按变量s中字符顺序从左到右依次存入字符串数组a中,代码略
Do While I < n
t=a(i)
For j= I+ 1 To n
①
Next j
a(j-1)=t
②
Loop
For i = 1 To lean(s)
Texts2.Text = Texts2.Text + a(i)
Next i
A、①a(j+1)=a(j) ②n=n-1 B、①a(j)=a(j+1) ②n=n+1 C、①a(j-1)=a(j) ②n=n-1 D、①a(j-1)=a(j) ②n=n+1 -
10、若在文本框Text1、Text2,Text3中分别输入2,5,6,下列程序段运行后,标签Labe12中显示的内容是( )
Private Sub Command1_Click( )
Dim a As Integer, b As Integer, c As Integer
A=Val(Text1.Text): b=Val(Text2.Text): c=Val(Text3.Text)
Label2.Caption=Str(fx(a, b, c))
End Sub
Function fx(x As Integer, y As Integer, z As Integer) As Integer
If x<y Then fx=z
If x>y Then fx=y Else fx=x
End Function
A、2 B、5 C、6 D、0 -
11、有如下VB程序段:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="provider=Microsoft.ACE.OLEDB.12.0;data sourc="
+App.Path+"\socre.accdb"
Conn.Open
Set rs.ActiveConnection=conn
Rs. Open"Selec*from cj"
n=1
Do While Not rs.EOF
Score(n)=rs.fields("成绩"):Name(n)=rs.fields("姓名")
n=n+1:rs.MoveNext
Loop
下列说法中不正确的是( )
A、定义的ADO的Connection对象实例名称是“conn” B、连接的数据库文件名是“\socre.accdb” C、查询的数据表名是“cj” D、该程序段运行后,可知所查询的数据表共有n-1条记录 -
12、“不重复数”的特征是任何相邻两个数位上的数字都不相同。如1101是重复数,1201是不重复数。判断某数是不是重复数的VB程序段如下:
s = Text1.Text
⑴
i = 1: flag = True
Do While i <= n - 1 And flag
If ⑵ Then flag = False
i = i + 1
Loop
If ⑶ Then
Label1.Caption = "重复数"
Else
Label1.Caption = "不重复数"
End If
上述程序中方框处可选语句为:
①flag=False
②n=Len(s)
③Mid(s,i,1)=Mid(s,i+1,1)
则⑴、⑵、⑶处语句依次是( )
A、②、③、① B、①、③、② C、②、①、③ D、③、②、① -
13、有如下ⅤB程序段:
a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98
a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59
For i=1 to 9
b(i)=Abs(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上显示的内容是( )
A、2 3 2 1 1 B、1 3 2 2 1 C、2 3 2 2 1 D、1 3 2 1 2 -
14、在文本框Text1中输入待加密的n个字符(仅由ASCII码字符构成,最多支持960个字符),输入后单击加密按钮,在文本框Text2中产生密文。加密方式如下:
①定义一个数组a(1 to 961)。产生一个3到6之间的随机整数k,将十进制数960均分成k份,字符在字符串中的位置除以k的余数决定该字符存放在第几份数据中(余数为1保存在第一份数据中,余数为2保存在第二份数据中……,余数为0保存在第k份数据中);
②用十进制数127减去每个字符的ASCII码值,得到的差作为该字符的密文,并保存在数组a中,同一段内的密文依次存放;
③将随机产生的数k加64后保存在数组元素a(961)中,并一起参与加密;
④将数组a中所有有密文值的数组元素从后往前依次存放到数组b中;
⑤将数组b中的每个密文用3位数字保存,不足3位的前面用0补足,然后依次连接保存在变量sc中;
⑥在文本框Text2中输出sc。
例如:
①若现有待加密的字符串为“zp123”,产生的随机数k=3,则960分成3份,每份可存放320个值,分别为a(1)至a(320),a(321)至a(640),a(641)至a(960);
②由于Asc(“z”) =122,则127-122=5。字符“z”在待加密字符串中的位置是1,除以k的余数为1,因此数字“5”放在第一份数据的第一个位置,即a(1)=5;同理可得,第一份数据为a(1)=5,a(2)=77;第二份数据为a(321)=15,a(322)=76;第三份数据为a(641)=78;
③将随机产生的k与十进制数64的和保存到a数组的最后一个值中,即a(961)=64+3=67;
④将数组a中所有有密文值的数组元素从后往前依次存放到数组b中,得到b(1)=67,b(2)=78,b(3)=76,b(4)=15,b(5)=77,b(6)=5;
⑤将数组b中的每个元素用0补足3位后依次连接并保存在sc中,得到sc=“067078076015077005”;
⑥输出sc。
注:(asc(“0”)=48,asc(“A”)=65,asc(“a”)=97)
Private Sub command1_Click()
Dim a(1 To 961) As Integer
Dim sr, sc As String
Dim i, j, k, m, n, t As Integer
Dim b(1 To 961) As Integer
Randomize
k = Int(Rnd * 4 + 3)
sr = text1.Text
For i = 1 To 961
a(i) = -1
Next i
a(961) = k + 64
t = 960 / k
For i = 1 To Len(sr)
m = i Mod k - 1
n = i \ k + 1
If i Mod k = 0 then n = n - 1: m = m + k
① = 127 - Asc(Mid(sr, i, 1)) ‘将密文存储到数组a中
Next i
For i = 1 To Len(sr) + 1
j = j + 1
Do While a(j) = -1
j = j + 1
Loop
b(Len(sr) + 2 - i) = a(j) ‘将有密文值的a数组元素存储到数组b中
Next i
For i = 1 To Len(sr) + 1
sc = ② ‘连接密文并保存到sc中
Next i
text2.Text = sc
End Sub
Function space(x As Integer) As String
For i = 1 To ③
space = space & "0"
Next i
End Function
(1)、若加密后的密文为“068029041”,则随机数是;在Text1中输入的明文是。(2)、在填写空白处缺失的代码。① ② ③
-
15、对用户输入的字符串进行解密的VB程序段如下:
s= Text. Text
For i =1 To Len(s)
ch= Mid(s,i,1)
nk=Asc(ch)-i
If nk <0 Then nk nk+127
Text2. Text= Text2 Text Chr(nk)
Next i
已知大写字母A的ASCII码值为65,小写字母a的ASCII码值为97,在文本框Text1中输入内容“yhT5”,执行程序段后,文本框Text2显示的内容为( )。
A、YHt5 B、xgS4 C、zjw9 D、xfQ1 -
16、某仓库物品代码格式为“X-XXX-XXXXX-Y”,其中“X”和“Y”均为0到9之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1加上第2个数字乘以2……依此类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。
小吴设计一个根据校验码校验物品代码的VB程序,功能如下:在文本框Text1中输入物品代码,单击“校验”按钮Command1,如果输入的校验码与计算所得的校验码一致,则输出“校验通过。”(如下左图所示),否则输出“校验不通过!”(如下右图所示)。
实现上述功能的VB程序如下,加框处代码有错,请改正。
Dim s As String '用于存储输入的物品代码
Dim t As String
Dim i As Integer, j As Integer
Dim sum As Integer '用于存储计算校验码的累加和
Dim check_old As Integer '用于存储输入物品代码中的校验码Y
Dim check_new As Integer '用于存储按照前面9个数字X计算所得的新校验码
Dim a(1 To 10)As Integer
Private Sub Command1_Click()
'从物品代码中取出9个数字X依次存储到a(1)到a(9)中,取出校验码Y存储到a(10)中
s=
Text ①j=0
For i=1 To 13
t=Mid(s, i, 1)
If(t>="0")And(t<="9") Then
j=j+1
a(j)=Val(t)
End If
Next i
'计算新的校验码并和输入的校验码进行比较
sum=0
For i=1 To 9
sum=sum+
②Next i
check_new=
③check_old=a(10)
If check_old=check_new Then
Label1.Caption="校验通过。"
Else
Label1.Caption="校验不通过! "
End If
End Sub
① ② ③
-
17、有求和式 ,编写程序计算并输出当n=20时,s的值。
-
18、数字反转,下面程序的功能是:输入一个非负整数,将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。如输入120,反转后输出21,程序运行时,在文本框Text1中输入反转前的数字,单击“反转”按钮后,在文本框Text2中显示反转后的数字。程序运行效果如图所示。
为实现上述功能的程序如下,请在程序划线处填入合适的代码。
Private Sub Command1_Click()
Dim a As String
Dim n As Integer
a = Text1.Text
n = Len(a)
Do While ① and Mid(a, n, 1)="0"
n = n - 1
Loop
For i = n To 1 Step -1
Text2.Text = Text2.text + ②
Next i
End Sub
(1)、划线①处应填入的语句为:(2)、划线②处应填入的语句为: -
19、小李编写了一个程序,用以实现下列功能:在文本框Text1中一个十进制数,在文本框Text2中输入需转换数的进制(小于等于16),点击转换按钮,在文本框Text3中输出转换后的数字;点击“退出”按钮,关闭程序。程序运行界面如下图所示:
(1)、根据题目意思,应该在编辑界面将对象“command2”的属性改为“退出”。(2)、为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click()
Dim x As Long
Dim y As Integer
x = Val(Text1.Text)
y =
Text3.Text =
End Sub
Function trans(n As Long, b As Integer) As String
Dim hex As String
hex = "0123456789ABCDEF"
Do while n<>0
r = n Mod b
n = n \ b
trans = + trans
Loop
End Function
Private Sub Command2_Click()
End Sub
-
20、对称字符串的特征是从左到右读和从右到左读是完全一样的。如“abba”是对称的,“abcba”也是对称的。判断字符串是否对称的VB程序段如下, 请完善以下两处代码
s=Text1.Text
n=Len(s) 's是待判断的字符串
k=0: j=n
For i=1 to n\2
c1=Mid(s, i, 1)
c2=Mid(s, j, 1)
If c1 <> c2 Then k = k+1: Exit For
j=
Next i
If Then Label1.Caption="对称" Else Label1.Caption="不对称"