相关试卷
-
1、在美国国家信息交换码中,ASCII值从32到127是可以打印并显示的字符,把这96个字符随机调整次序,生成密码本。根据输入的密钥和明文,单击“加密”按钮Command1,输出密文。基本算法如下:
1)用数组mab分别记录1~96个字符的ASCII值,用数组zm记录对应字符在密码本中位置,如mab(9)=65,表示密码本中第9个字符是“A”,则对应的zm(65)=9;
2)把密钥中每个字符的ASCII值的各个数字进行累加(如Hi分别为(7+2)+(1+0+5)),将累加的和除以9取余数后加7,作为将密码本转换成二维表的列数;
3)每个明文在转换后二维表中位置作为密文,该位置是用十六进制表示的行号和列号。
程序运行的界面如下图所示:
实现上述功能的VB程序如下,请回答以下问题:
(1)、若输入密钥为“AB”,则根据算法及密码本,字母“A”加密后的密文是。(2)、请在划线处填入合适的代码。Dim Mab(96) As Integer '存储密码本中每个字符的ASCII值
Dim zm(127) As Integer '存储ASCII值32至127的字符在密码本数组mab中的下标
Private Sub Form_Load()
'产生密码本及96个字符在密码本中位置,代码略。
End Sub
Function p(s As String) As Integer
Dim i As Integer, t1 As Long
Dim sum As Integer, s1 As String
t1=0
i=1
Do While i<=Len(s)
s1=Mid(s, i, 1)
t1=Asc(s1)
i=i+1
Loop
p=sum Mod 9+7
End Function
Private Sub Command1_Click()
Dim i As Integer, t As Integer, hang As Integer
Dim s As String, s1 As String, Lie As Integer
List1.Clear
s1=Text1.Text
t=p(s1)
Label5.Caption= “将密码本换成一张”+Str(t)+ “列的二维表”
i=1
Do While i<=96
s=s+Chr(Mab(i))+ “”
If i Mod t=0 Or i=96 Then
List1.AddItem s
s= “”
End If
i=i+1
Loop
wz= “123456789ABCDEF”
s=Text2.Text
For i =1 To Len(s)
s1=Mid(s, i, 1)
hang=(t1-1)\t+1
lie=(t1-1) Mod t+1
s2=
Next i
Text3.Text=s2
End Sub
-
2、小岩设计了一个顺时针旋转矩阵的程序,其功能为:运行程序时,在文本框Text1中输入矩阵规模n,点击“产生矩阵”按钮Command1,在列表框List1中显示一个n*n的矩阵,该矩阵数据由从1开始的连续自然数组成。点击“旋转矩阵”按钮Command2,该矩阵顺时针旋转90度并显示在列表框List2中,此后每点一次“旋转矩阵”按钮Command2,列表框List2中显示的矩阵顺时针旋转90度。请完成程序填空。
Dim n As Integer
Dim st As String
Dim a(1 To 100) As Integer
Dim b(1 To 100) As Integer
Private Sub Command1_Click()
'产生矩阵,代码略
End Sub
Private Sub Command2_Click() '旋转矩阵
For i=1 To n '行
st= “”
For j= 1 To n '列
b((i-1)*n+j)=
st=st+adj(Str(b((i-1)*n+j)),3)
Next j
List2.AddItem st
Next i
End Sub
Function adj(a As String, n As Integer) As String
'在字符串a前加入适当的空格,使a的长度为n位,代码略
End Function
-
3、对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。
小杜编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10),单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输排序后的矩阵。在程序运行界面如下图所示,实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim n As Integer
Dim a(1 To 100) As Integer
‘随机生成数并存储在List1中,代码略
Private Sub Command1_Click() ‘按行排序
Dim i As Integer, j As Integer, t As Integer
Dim s As String
s=“”
For i=1 To
k=i
For j=i+1 To
If a(j)<a(k) Then k=j
Next j
If k<> i Then t = a(k): a(k)=a(i): a(i)=t
If I Mod n=0 Then List2.AddItem s: s=“”
Next i
End Sub
Private Sub Command2_Click() ‘按列排序
Dim i As Integer, j As Integer, t As Integer
Dim s As String
s= “”
For i=1 To i-1
k=i
For j= i+n To
If a(j)<a(k) Then k=j
Next j
If k<> i Then t=a(k): a(k)=a(i): a(i)=t
If I Mod n=0 Then List2.AddItem s: s= “”
Next i
End Sub
-
4、某仓库物品代码格式为“X-XXX-XXXXX-Y”,其中“X”和“Y”均为0到9之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1 加上第2个数字乘以2……依此类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。
小吴设计一个根据校验码校验物品代码的VB程序,功能如下:在文本框Text1中输入物品代码,单击“校验”按钮Command1,如果输入的校验码与计算所得的校验码一致,则输出“校验通过。”(如下左图所示),否则输出“校验不通过!”(如下右图所示)。
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
实现上述功能的VB程序如下,加框处代码有错,请改正。
-
5、有如下VB程序段:
Dim a(1 to 5) as Integer, i as Integer, c as Integer
a(1) = 2 : a(2) = 1 : a(3) = 3 : a(4) = 4 : a(5) = 5
c = 0
For i = 3 to 5
If a(i - 2) + a(i - 1) = a(i) Then c = c + 1
Next i
Text1.Text = Str(c)
该程序运行后,文本框text1中显示的内容是( )
A、1 B、2 C、3 D、4 -
6、执行下面的程序段后,x的值为( )
x=5
For i=1 To 20 Step 2
x=x+i\5
Next i
A、21 B、22 C、23 D、24 -
7、水仙花数也被称为超完全数字不变数,是指一个3位数,它的每个位上的数字的3次幂之和等于它本身(例如:13+53+33=153)。课堂上老师布置作业要求用VB编写一个程序,找出所有的水仙花数,下面是小丽同学完成的作业,其中有几处错误,请帮她修改。
Private Sub Command1_Click()
Dim i As Long, j As Long, k As long
Dim As long
For i=0 To 9
For j=0 To 9
For k=0 To 9
s=i*100+j*10+k
If(i^3)+(j^3)+(k^3)=s Then
Debug. Print s
End If
Next k
Next j
Next i
End Sub
(1)、修改“Dim As Long”行中的错误;(2)、修改“For i=0 To 9”行中的错误;(3)、修改“If(i^3)+(j^3)+(k^3)= s Then”行中的错误; -
8、有如下程序段:
Dim a(1 To 5) As Integer
a(1) = 3: a(2) = 2: a(3) = 7: a(4) = 5: a(5) = 1
For i = 5 To 2 Step -1
For j = 1 To i - 1
If a(j) > a(j + 1) + Int(Rnd * 2) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
程序运行后,a(1)到a(5)的值不可能是( )
A、1 2 3 5 7 B、3 2 1 5 7 C、2 1 3 5 7 D、1 2 5 3 7 -
9、数组a中存储的是两个数列交替排序的n个正整数,下标为奇数的数组元素都是奇数且为升序排列,下标为偶数的数组元素都是偶数且为降序排列。排序示例如下。
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
a(8)
a(9)
a(10)
1
10
3
8
5
6
7
4
9
2
依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,请回答下列问题:
Private Sub Search_Click()
Const n = 10
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, m As Integer, f As Boolean, key As Integer
'读取一组正整数,按上述规则存入数组 a 中。代码略
key = Val(Text1.Text)
If key Mod 2 = 1 Then i = 1 Else i = 2
j = n :f = False
Do While i <= j And Not f
If key Mod 2 = 0 Then
m = (i + j) \ 2 - (i + j) \ 2 Mod 2
Else
m = ①
End If
If key = a(m) Then
f = True
ElseIf
Thenj = m - 2
Else
i = ②
End If
Loop
If f Then Label1.Caption = Str(m) Else Label1.Caption = "不存在"
End Sub
(1)、观察程序代码,该事件处理过程名为。(2)、程序加框处代码有错,请改正。(3)、请在划线处填入合适的代码。① ②
-
10、对于数列:1、2、3、4、5,用二分法查找数据“4”,最少的查找次数是( )。A、4次 B、3次 C、2次 D、1次
-
11、5个学生的身高(单位:cm)依次为:172,177,180,168,165,采用冒泡排序对这5个学生的身高数据进行从高到低排序,第二遍加工后的数据为( )。A、180,177,172,168,165 B、180,172,177,168,165 C、165,172,177,180,168 D、165,168,172,177,180
-
12、对10个数据进行冒泡排序,需要比较的次数是( )A、90 B、110 C、45 D、55
-
13、在 Visual basic中,要将字符串变量a和b的值连接并将结果在文本框Text1中输出,下列代码合适的是( )。A、Str(a+b)=Text1. Text B、Text. Text=a+b C、a+b= Text1. Text D、Text1. Text=a+b
-
14、下图是王明同学编写的一段VB代码,运行后A和B的值分别是( )。
Dim A, B As Integer
A=5
B=6
B=A+B
A=A*B
Print A,B
A、30 11 B、55 11 C、55 66 D、11 55 -
15、张羽用VB编写了一个程序,保存在计算机中根据图标判断,下面4个文件中,其中为张羽编写的工程文件是( )。A、
算法的特征.htm
B、
斐波那契数列问题.vbp
C、
Visua Basic精简版.exe
D、
VB精编程技巧.wmv
-
16、小张同学在学习了选修教材《算法与程序设计》后,准备小试牛刀一下,就编了“判断一个数能否被7整除”的小程序,其中有三处错误,请帮助他修改。
Private Sub Command1_ Click()
Dim i As Integer
Dim As String
i= Text1.Text
If i/7=0 Then '判断文本框中输入的数是否是7的倍数
j=i & “是7的倍数,能被7整除! ” '是7的倍数,输出能被7整除!
Else
j=i&"不是7的倍数,不能被7整除!" '不是7的倍数,就输出不是7的倍数,不能被7整除!!
EndIf
Label3. Caption=j
End Sub
(1)、修改语句“Dim As String”行中的错误;(2)、修改语句“If i/7=0 Then”行中的错误;(3)、修改语句“End”行中的错误。 -
17、张文同学使用VB编写了一个程序用来求半径为r(通过Text1输入)的圆面积(π取值3.14),该程序如下。请帮助他修改程序中的错误。
Private Sub Command1_ Click( )
Dim pi As Single
Const pi=3. 14
Text2.Text=2 pi*Text1.Text
Text3.Text=pi*Text2.Text*Text2.Text
End Sub
①删除程序中多余的语句;
②修改语句“Text2.Text=2 pi*Text1.Text”行中的错误;
③修改语句“Text3.Text=pi*Text2.Text*Text2.Text”行中的错误;
④使用常用工具栏中的“保存工程”按钮保存文件。 -
18、以下程序中的循环体执行的次数是( )
For A=1 To 200 Step 4
S=S+A:
Next APrint S
A、48 B、49 C、50 D、51 -
19、在下图所示的VB“代码窗口”中,“对象”“过程”列表分别是( )
A、①② B、①③ C、③④ D、②③ -
20、现有VB程序“矩形面积和.vbp”,可计算100个矩形序列的面积和,计算公式为s=1 * 2+2 * 3+…+100 * 101,该程序运行时,单击“计算”按钮,即显示结果。但该程序代码有3处错误,请修改。
Private Sub Command1_Click()
Dim i AS Integer
Dim As Long
For i = 1 To 100
s = s + i *(i+1)
Nest i
Text1. Caption = s
End Sub
(1)、修改“Dim As Long”行中的错误;(2)、修改“Nest i”行中的错误;(3)、修改“Text1. Caption=s”行中的错误;