登录二一教育在线组卷平台 助您教考全无忧
高中信息技术综合库过程和自定义函数1
一、高中信息技术综合库过程和自定义函数1
1.编程找出100到1000之间满足以下条件的整数:该数和该数平方合并后的数字串中不存在重复的数字。例如209,其平方数为43681,209和43681合并后的数字串“20943681”中无重复数字,209就是符合条件的数。实现上述功能的VB代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim x As Integer, y As Long, st As String
For x=100 To 1000
y=x^2
st=Str(x) & Str(y)
If Then ‘①
List1. AddItem"x: "& Str(x) & "x2: "&Str(y) &"x&y: "& Str(st)
End If
Next x
End Sub
Private Function judge(s As String) As Boolean
Dim a(1 To 100) As String
For i=1 To Len(s)
a(i) =Mid(s, i, 1)
Next i
For i =1 To Len(s)-1
For j=i+ 1 To Len(s)
If Then Exit Function. ‘②
Next j
Next i
Judge=True
End Function
2.编写一个将十进制数转换为二进制的VB自定义函数,完成划线处应填的语句。
Function dTOb(x As Integer)As String
Dim s As String
Do While x>0
If x Mod 2=0 Then s="0"Else s="1"
x=x\2
Loop
End Function
3.在VB中,判断一个整数的各位上的数字是否重复的自定义函数,请在程序划线处填入合适的代码。
Private Function judge(t As Long)As Boolean
Dim s As String, s1 As String, i As Integer, j As Integer
s=Str(t): judge =False
For i =1 To Len(s)-1
s1 = Mid(s, i, 1)
For j =i+ 1 To Len(s)
If ① Then Exit Function
Next j
Next i
②
End Function
① ②
4.下列VB程序用于求2个正整数(均小于10000)的最大公约数,请在程序划线处填入合适的代码。
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x=Val(Text1.Text): y=Val(Text2.Text)
①
Text3.Text=Str(z)
End Sub
Function gcd(a As Integer, b As Integer)As Integer
Do While a< >b
If a>b Then a=a-b Else
b=b-a
Loop
②
End Function
① ②
5.小明编写了一个寻找奇妙整数的VB程序。此整数的平方与立方正好用了0~9的10个数且每个数只用一次,例如69的平方为4761,69的立方为:328509,4761和328509刚好用了0~9的10数,并且没有重复使用。现需从1至1000寻找这样的奇妙整数并在列表框List1中显示。实现上述功能的VB程序段如下:
Private mand1_Click()
Dim n As Integer, k As Integer, f
As Boolean ‘判断字符k是否重复出现
Dim s1 As String, s2 As String, i As Integer, j As Integer
For n= 1 To 1000
For i =0 To 9
a(i)= True
Next i
f = True
s1=CStr(n^2)
s2 =CStr(n^3) ‘Cstr()函数的作用是将数字型变量改变成字符型变量
For j = 1 To Len(s1)
①
If a(k)= True Then
a(k)=False
Else
f = False
Exit For
End If
Next j
If ② Then
j=0
Do While j<=9
If a(i)=True Then f=False: Exit Do
j=j+1
Loop
If f = True Then List1. AddItem Str(n)
End If
Next n
End Sub
Function Judge(s As String) As Boolean
Dim i As Integer, k As Integer
i=1: Judge True
Do While ③
k =Val(Mid(s, i, 1))
If a(k)=True Then
a(k)=False
Else
Judge = False
Exit Do
End If
i=i+1
Loop
End Function
请在程序划线处填入合适的代码。
① ② ③
6.对输人的明文(由英文字母或数字组成的字符串)进行加密,输出加密后得到的密文。数据加密方法为对明文中的每个字符进行如下处理:
1)将该字符ASCI码转换成对应8位二进制;
2)将对应8位二进制数进行按位取反(1变0;0变1);
3)将产生的8位二进制数循环左移3次;
4)最后产生的8位二进制数转换成对应的十六进制数。
例如:明文大写字母“A”通过上述算法加密算法加密后生成的密文是“F5”,在文本框Text1中输入明文,单击“生成密文”按钮Command1,加密后生成的密文显示在文本框Text2中。
(1)如果输入明文为大写字母“F”,则生成的密文是 。
(2)请在划线处填入合适的代码。
Function btoh(m As String)As String ‘将4位二进制数转换成对应的十六进制数
Dim s As Integer, i As Integer, str As String
str ="0123456789ABCDEF": s=0
For i=1 To 4
s=s*2+ Val(Mid(m, i, 1))
Next i
①
End Function
Private Sub Command1_Click()
Dim ans As String, s As String, ch As String, ret As String
Dim i As Integer, asc1 As Integer, n As Integer
②
ans=" "
For i = 1 To Len(s)
ch =Mid(s, i, 1) ‘取出第i个字符存入变量ch
asc1=Asc(ch)
ret" "
For m =1 To 8 ‘完成加密步骤1)和步骤2)
n=(asc1+1)mod 2
ret =n & ret
③
Next m
ret = Mid(ret, 4, 5)+ Mid(ret, 1, 3) ‘完成加密步骤3)和步骤4)
s1=btoh(Mid(ret, 1, 4))
s2 =btoh(Mid(ret, 5, 4))
ans =ans & s1 & s2 ‘将第i个加密后的字符添加到变量ans的末尾
Next i
Text2.Text = ans
End Sub
① ② ③
7.某ASCII字符加密方法算法如下:
⑴计算出该ASCII字符的8位二进制数值
⑵将该数值分割为前4位与后4位两个二进制数
⑶分别将上述两个4位二进制数转换为十进制数
⑷将每个十进制数转换为1个加密字符,对应的“密码表”如下
值(十进制) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
加密字符 I 1 i k e C H N p o s t c a r d
根据以上加密算法来推断解密算法,下表显示了字符串中两个字符的解密过程:
小明设计了一个解密程序,功能如下:在文本框Text1中输入密文,单击“解密”按钮Command1,在文本框Text2中输出解密结果。程序运行时界面如下图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim z As String, a As String, b As String
Dim i As Integer, y As Integer
z = Text1.Text
Text2.Text =" "
For i= 1 To ①
a=Mid(z, i, 1)
b= Mid(z, i+1, 1)
②
Text2.Text = Text2.Text + Chr(y)
Next i
End Sub
Function zn(x As String)As Integer '得出加密字符对应密码表中的十进制数
Dim m As String, i As Integer
m ="IlikeCHNpostcard"
For i =0 To 15
If ③ Then
zn=i
Exit For
End If
Next i
End Function
① ② ③
(2)若已知字符“a”的ASCI1码值为97(十进制),加密字符HN对应的英文字母是 。
8.有一数组 a 具有 n(1≤n≤100)个元素,分别为 a(1)到 a(n),数组元素都为正整数且有可能相等。对于每一个数组元素,如果它后面存在大于或等于该元素的数,则这两个数可以组成一对。每个元素和自己也可以组成一对。例如:{3,7,2,4,8},可以组成 11 对,分别为(数字为下标):(1,1),(1, 2), (1, 4), (1, 5), (2, 2),(2,
5), (3, 3), (3, 4), (3, 5), (4, 4), (4,
5), (5, 5)。其中(1, 5)是距离最远的一对,距离为4。小明编写了一个VB程序,用于计算n个数组元素的最远距离。具体功能如下:运行程序时,在列表框List1中显示n个数组元素,单击命令按钮Command1,在文本框中显示这n个数组元素的最远距离。运行效果如图所示。
实现上述功能的 VB 代码如下。
Const n = 5 'n=5为例
Dim a(1 To n) As Integer '用于记录每个数组元素的值
Dim b(1 To n) As Integer '用于记录每个数组元素在原数组中的下标
Private Sub Form_Load()
'读取一组正整数,存储在数组 a 中
'将每个数组元素在原数组中的下标存储在数组 b 中
'将数组元素显示在列表框 List1中
'代码略
End Sub
Function Getans() As Integer
Dim left As Integer, ans As Integer
left = 10000: ans = 0
For i = 1 To n
If b(i) < left Then left = b(i)
If b(i) - left > ans Then ans = b(i) - left
Next i
Getans = ans
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
For i = 1 To n
For j = n To i + 1 Step -1
If Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
t = b(j): b(j) = b(j - 1): b(j - 1) = t
End If
Next j
Next i
Text1.Text =
End Sub
(1)代码“Private Sub Command1_Click( )”中表示加载在Command1上的事件是 。(单选,填字母:A
.Click/B ._Click/C .Command1_Click)
(2)程序代码中,IF 语句后加框处代码有误,请改正 。
(3)程序代码中,将 Text1.Text 赋值语句补充完整 。
(4)如程序运行界面所示数据,单击命令按钮 Command1后,数组元素 b(2)的值为 。
9.数组 a 规模为(m+1)×n,其中 a(1) ~a(m n)元素中存储数据,数据中m×n个元素按行序排列成一个数字矩阵如图所示 计算每列数据的和,并依次存储在m+1行对应的数组元素中
依据该算法思想,设计一个VB程序,实现该功能的代码如下,请回答下列问题
(1)根据代码可知,该程序的按钮对象名是
(2)在程序划线处填上合适代码
Const m = 6
Const n = 5
Dim a(1 To (m + 1) n) As Integer
Private Sub Form_Load()
'数组初始化,生成 m×n 个两位数的随机整数并赋值给数组a
Randomize
For i = 1 To m n
a(i)= ①
Next i
End Sub
Private Sub Cod1_Click()
Dim i As Integer, j As Integer
For i = 1 To n
②
Next i
'将计算后数据,按 m + 1 行,n 列输出到列表框中,代码略
End Sub
Function sum(y As Integer) As Integer '函数功能是计算每列数据和
sum = 0
For i = ③
sum = sum + a(i)
Next i
End Function
① ② ③
10.用26个互不重复的ASCI字符作为密码本,根据英文字母在字母表中位置,替换为密码本该位置的字符。现编写将英文字母加密的VB程序,在文本框Text1中输入明文,单击“加密”按钮Command1,在文本框Text2、Text3中输出产生的密码本和密文。程序运行界面如下图所示。
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim i As Integer, mw As String, jm As String
mw= Text1.Text: Text2.Text = my(26)
For i =1 To Len(mw)
c= Mid(mw, i, 1)
If c>="A" And c<="Z" Or c>="a"
And c<="2"Then
‘①
jm =jm+ Mid(Text2.Text, t, 1)
Else
jm=jm +c
End If
Next i
Text3.Text =jm
End Sub
Function my(n As Integer)As String
Dim s As String, i As Integer, x As Integer
s ="ABCDEFGHIKLMNOPQRSTUVWXYZabc-defghijklmnopqrstuvwxyz0123456789"
i=1
Do While i <=n
t=63-i
x =Int(Rnd()*t+1)
‘②
s = Mid(s, 1, x-1)+ Mid(s, x+1, t-x)
i=i+1
Loop
End Function
① ②
11.有VB自定义函数的功能是求两个数之间被3除多2,被5除多3的所有整数个数,请在程序划线处填入合适的代码。
Function f(x1 As Integer, x2 As Integer)As Integer
Dim t As Integer, i As Integer
If x1 For i= ①
If i Mod 3=2 And i Mod 5 = 3 Then ②
Next i
End Function
① ②
12.在VB中,将一个二进制数转化成十六进制的自定义函数代码如下,请在程序划线处填入合适的代码。
Function btoh(s As String)As String
Dim i As Integer, s1 As String, t As Integer
Dim str As String, j As Integer
str="0123456789ABCDEF"
i= Len(s)
Do While i >=1
If ① Then
s1= Mid(s, i-3, 4)
Else
s1 = Mid(s; 1, i)
End If
t=0
For j =1 To Len(s1)
t= ②
Next j
btoh = Mid(str, t + 1, 1)+btoh
i=i-4
Loop
End Function
① ②
13.学校把各同学选考组合放在一个数据库中,小明编写了一个VB程序,用于查询每个同学的选考组合,程序界面如图所示,在文本框Text1中输入学号,单击“开始查询”按钮(Command1),就开始查找该学号的信息,如果找到对应的信息,就显示所属学生的姓名和选考组合;如果没有找到,则显示“找不到”。学校共有n名学生,数组a、b分别保存了本次考试所有学生的学号和姓名信息。数据库数据按学号从小到大排列,第i个学生的学号保存在a(i),对应的姓名保存在b(i),c(i)保存该学生的选考组合。
程序如下,在程序划线处填入适当的代码,把程序补充完整。
Dim n As Integer, a(1000)As String,
Dim b(1000)As String, c(1000)As String
Private Sub Command1_Click()
Dim x As String, pos As Integer
Dim conn As New ADODB. Connection,rs As New
ADODB. Recordset
conn. ConnectionString="provider =Microsoft. AC
A.OLEDB.12.0; data source="&.App. Path&"\students.accdb"
conn. Open
Set rs. ActiveConnection = conn
rs. Open"学生信息"
n=0 '考生数初始化
Do While Not rs. EOF
n =n+1
a(n)=rs. Fields(0)
b(n)=rs. Fields(1)
c(n)=rs. Fields(2)
①
Loop
x = Text1.Text
If pos >0 Then
②
Text2.Text=b(pos)
Text3.Text =c(pos)
Else
Text2.Text="找不到"
End If
End Sub
Function Search(Key As String)As Integer
Dim i As Integer, j As Integer, m As Integer
i=1: j=n: Search =0
Do While i <=j m=Fix((i+j)/2)
If Key =a(m)Then
③
Exit Function
Else lf a(m)> Key Then
j=m-1
Else
i=m+1
End If
Loop
End Function
① ② ③
14.如果一个数从左往右读和从右往左读都一样,那么这个数就叫做“回文数”。如果一个数的十进制和二进制表示都是回文数,则把这个数叫做“双重回文数”。例如,十制数33是回文数,将其转化为二进制表示(10001)也是回文数,所以33是双重回文数。编写程序用于查找1000以内的双重回文数。
(1)根据题目描述,十进制数99是否是“双重回文数” (填:是/不是)。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim n As Integer, d As String, b As String
For i = 1 To 999
n=i
d=CStr(n) 'CStr函数的功能是数值转换为字符串
①
If ishws(d)Aind ishws(b)Then
List1.AddItem Str(i)+" "+b
End If
Next i
End Sub
Function dtob(k As Integer)As String '进制转换
Do While k >0
dtob =CStr(k Mod 2)+ dtob
k=k\2
Loop
End Function
Function ishws(x As String)As Boolean
ishws = True
For j=1 To Len(x) \2
If ② Then
ishws = False
Exit For
End If
Next j
End Function
① ②
答案解析部分
1.【答案】judge(st);a(j)=a(i)
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )自定义函数judge的功能是判断数字s各位上的数字是否重复,并通过函数judge名返回函数的值。此处代码应修改为judge(st)。
( 2 ) 判断的条件是第i个数与他后面的所有数进行比较,如果相同则跳出自定义函数,返回函数的值为False,否则执行judge= True语句此处代码应修改为a(j)=a(i)。主程序中为调用自定义函数。
【分析】本题考查的是自定义函数的应用。
2.【答案】dTob=s+dTob
【知识点】过程与自定义函数;进制及数制转换
【解析】【解答】自定义函数dTob的功能是将x转换成二进制数,并通过函数名返回函数的值,横线处代码为: dTob=s+dTob。
【分析】本题考查的是进制转换与自定义函数的应用。
3.【答案】s1=Mid(s, j, 1);judge =True
【知识点】过程与自定义函数
【解析】【解答】自定义函数judge的功能是判断数字t各位上的数字是否重复,并通过函数judge名返回函数的值。判断的条件是第i个数与他后面的所有数进行比较,如果相同则跳出自定义函数,故①处代码为: s1=Mid(s, j, 1);返回函数的值为False,否则执行②语句,故②处代码为:judge= True。
【分析】本题考查的是自定函数的应用。
4.【答案】z= gcd(x, y);gcd= a或gcd=b
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】自定义函数gcd的功能是计算a、b的最大公约数,并通过函数名gcd返回函数的值。主程序是调用自定义函数,把x和y分别赋值给a和b,计算的结果赋值给z。故①处代码为:z=gcd(xy);②处代码为:gcd=a或gcd=b。
【分析】本题考查的是求最大公约数、自定义函数的应用。
5.【答案】k=Val(Mid(s1, j, 1));Judge(s2);Judge = True
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】自定义函数judge的功能是判断数字各位上的数字是否重复,并通过函数judge名返回函数的值。主程序中,先判断n的平方s1是否有重复,取出每个数字k,故①处代码为k=Val(Mid(s1, j, 1))。判断下标为k的数组元素值是否是True,在调用自定义函数判断s2不重复的基础上接着判断s1和s2中各个数字均不重复。故②处代码为Judge(s2) ,③处代码为Judge = True。
【分析】本题考查的是自定义函数的应用。
6.【答案】(1)CD
(2)btoh = Mid(str, s + 1,1);s = Text1.Text;asc1= asc112
【知识点】算法的控制结构;常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )字母F的内码为01000110 ,按位取反得到10111001,循环左移3位得到11001101对应十六进制数为CD。
( 2 )①自定义函数btoh将4位-二进制数转换成对应的十六进制数,先将4位二进制数转换为十进制数s=s*2+ Val(Mid(m, i, 1)),然后根据求得的s去字符串str找对应的16进制字符,并通过函数名返回函数的值,即btoh=Mid(str, s + 1, 1)。 ②先接收输入的明文放到变量s中即s =Text1.Text。③取得的字符ch对应的字符代码asc1 =Asc(ch)为十进制数,需要将其转换为二进制数并取反,所以asc1 =asc1\2.
【分析】本题考查循环结构和自定义函数。
7.【答案】(1)len(z)Step 2;zn(a)*16 + zn(b);Mid(m, i+ 1, 1)=x
(2)g
【知识点】算法的控制结构;过程与自定义函数
【解析】【解答】( 1 )建z是输入的密文,每次从中取出两个字符,所以循环变量的范围为i= 1 Tolen(z)Step 2。②所填内容肯定和y有关, y是-一个十进制数的ASCII值,该值应该去调用自定义函数,找出两个字母的位置,同时第1个位置是高4位,是原来的16倍即y=zn(a)*16 +zn(b)。日在自定义函数中,要找变量x在密码表中的位置,当他们相等时,就表示找到了,即Mid(m, i+ 1, 1)=x。
( 2 )输入HN后H在密码表位置是6,N在密码表位置是7,对应的二进制数为:01100111,转换成十进制数是103,103- 97=6,是字符a后面的第6个字符即g。
【分析】本题考查VB循环结构和自定义函数。
8.【答案】(1)A
(2)a(j) < a(j-1)
(3)Str(Getans( ))
(4)1
【知识点】类、对象、属性、方法、事件和事件处理的概念及应用;过程与自定义函数;排序算法及程序实现
【解析】【解答】( 1 )代码"Private SubCommand1_ Click0"中表示加载在Command1上的事件是Click。
( 2 )题中需要更改的代码的程序为典型的冒泡排序,加框处的功能为数组相邻两个元素比较大小,以便进行升序排序所以代码为a(j) < a(j- 1),如果两元素值相等就不需要交换了
( 3 )因为在"Text1.Text"输出的是字符串,所以需要将计算出的距离数值转换为字符串输出,而题中数组元素的最远距离是自定义函数Getans( )计算的,所以该处代码为Str(Getans())。
( 4 )如程序运行界面所示数据,单击命令按钮Command1后,数组a进行了升序排序,数组b存储的每个数组元素在原数组中的下标也跟着对应的数据元素进行了排序,所以数组元素b(2)的值为1。
【分析】本题考查对自定义函数的功能以及冒泡排序的理解。
9.【答案】(1)Cod1
(2)Int(Rnd * 90) + 10;a(m*n+i)=sum(i);ytom*nstepn
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )根据代码可知,该程序的按钮对象名是Cod1。
( 2 ) ①要生成mxn个两位数的随机整数并赋值给数组a,则需要使用随机函数,代码为: a(i)= Int(Rnd*90) +10。②把各列的和放到数组a中,代码为a(m*n+i)=sum(i) (调用自定义函数)。③计算每列数据和的代码为:for i =y to m*n step n sum=sum+a(i) next i , y为列数。
【分析】本题考查自定义函数的应用以及对程序代码的理解。
10.【答案】t= Asc(c) Mod 32;my=i my+ Mid(s,x,1)
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】 ( 1 )自定义函数的功能是产生不重复的字符串,t表示在s中长度, x是[1, x]之间的随机位置,把该位置上的字符连接到密钥中,同时把该字符在s中去除。此处代码修改为t= Asc(c) Mod 32。
( 2 )处需要记性字符连接,此处代码修改为my= my+ Mid(s, x, 1)。主程序中,找到字符c在字母表中位置t,并在密钥中取出对应的加密字符。
【分析】本题考查的是自定函数的应用。
11.【答案】x2 To x1或x1 To x2 Step -1;f=f+ 1
【知识点】过程与自定义函数
【解析】【解答】自定义函数f的功能是求x2和x1两个数之间被3除多2、被5除多3的所有整数个数。并通过函数名返回函数的值。①处循环从较大数到较小数,故此处代码为: x2 Tox1或x1 To x2 Step-1。②处对满足条件的数进行计数,故此处代码为: f=f+1。
【分析】本题考查的是自定义函数的应用。
12.【答案】i>=4;t=t*2+Val(Mid(s1, j, 1))
【知识点】常量、变量及变量的赋值;过程与自定义函数;进制及数制转换
【解析】【解答】自定义函数btoh的功能是将二进制数s转换成十六进制数。转换的方法是从低位开始,每4位二进制转换成十进制数(不足4位,取剩下的所有字符),故0处代码为: i>=4。根据十进制数的值在字符str中查找相应的十六进制值,故②处代码为:t=t*2 +Val(Mid(s1, j, 1))。
【分析】本题考查的是进制转换与自定义函数的应用。
13.【答案】rs. MoveNext;pos=Search(x);Search= m
【知识点】过程与自定义函数;程序访问数据库
【解析】【解答】在数据表进行查询时记录指针往下移,才能达到记录的尾部,故①处代码为rs.MoveNext。调用自定义函数去进行查找Text1中内容。故②处代码为pos=Search(x)。在自定义函数中,通过函数名返回函数的值。故③处代码为Search=m。
【分析】本题考查的是自定函数的应用以及VB访问连接数据库。
14.【答案】(1)是
(2)b= dtob(n);Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )十进制数99转换为二进制数是1100011,属于回文数,所以99是双重回文数。
( 2 )自定义函数dtob的功能是将k转换成二进制数。自定义函数ishws的功能是判断字符x是否是回文数。主程序中先调用自定义函数dtob将转换二进制数,若i及他对应的二进制数均为回文数,则他是双重回文数。故@处代码为b=dtob(n);②处代码为Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)。
【分析】本题考查的是自定函数的应用。
二一教育在线组卷平台(zujuan.21cnjy.com)自动生成 1 / 1登录二一教育在线组卷平台 助您教考全无忧
高中信息技术综合库过程和自定义函数1
一、高中信息技术综合库过程和自定义函数1
1.编程找出100到1000之间满足以下条件的整数:该数和该数平方合并后的数字串中不存在重复的数字。例如209,其平方数为43681,209和43681合并后的数字串“20943681”中无重复数字,209就是符合条件的数。实现上述功能的VB代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim x As Integer, y As Long, st As String
For x=100 To 1000
y=x^2
st=Str(x) & Str(y)
If Then ‘①
List1. AddItem"x: "& Str(x) & "x2: "&Str(y) &"x&y: "& Str(st)
End If
Next x
End Sub
Private Function judge(s As String) As Boolean
Dim a(1 To 100) As String
For i=1 To Len(s)
a(i) =Mid(s, i, 1)
Next i
For i =1 To Len(s)-1
For j=i+ 1 To Len(s)
If Then Exit Function. ‘②
Next j
Next i
Judge=True
End Function
【答案】judge(st);a(j)=a(i)
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )自定义函数judge的功能是判断数字s各位上的数字是否重复,并通过函数judge名返回函数的值。此处代码应修改为judge(st)。
( 2 ) 判断的条件是第i个数与他后面的所有数进行比较,如果相同则跳出自定义函数,返回函数的值为False,否则执行judge= True语句此处代码应修改为a(j)=a(i)。主程序中为调用自定义函数。
【分析】本题考查的是自定义函数的应用。
2.编写一个将十进制数转换为二进制的VB自定义函数,完成划线处应填的语句。
Function dTOb(x As Integer)As String
Dim s As String
Do While x>0
If x Mod 2=0 Then s="0"Else s="1"
x=x\2
Loop
End Function
【答案】dTob=s+dTob
【知识点】过程与自定义函数;进制及数制转换
【解析】【解答】自定义函数dTob的功能是将x转换成二进制数,并通过函数名返回函数的值,横线处代码为: dTob=s+dTob。
【分析】本题考查的是进制转换与自定义函数的应用。
3.在VB中,判断一个整数的各位上的数字是否重复的自定义函数,请在程序划线处填入合适的代码。
Private Function judge(t As Long)As Boolean
Dim s As String, s1 As String, i As Integer, j As Integer
s=Str(t): judge =False
For i =1 To Len(s)-1
s1 = Mid(s, i, 1)
For j =i+ 1 To Len(s)
If ① Then Exit Function
Next j
Next i
②
End Function
① ②
【答案】s1=Mid(s, j, 1);judge =True
【知识点】过程与自定义函数
【解析】【解答】自定义函数judge的功能是判断数字t各位上的数字是否重复,并通过函数judge名返回函数的值。判断的条件是第i个数与他后面的所有数进行比较,如果相同则跳出自定义函数,故①处代码为: s1=Mid(s, j, 1);返回函数的值为False,否则执行②语句,故②处代码为:judge= True。
【分析】本题考查的是自定函数的应用。
4.下列VB程序用于求2个正整数(均小于10000)的最大公约数,请在程序划线处填入合适的代码。
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x=Val(Text1.Text): y=Val(Text2.Text)
①
Text3.Text=Str(z)
End Sub
Function gcd(a As Integer, b As Integer)As Integer
Do While a< >b
If a>b Then a=a-b Else
b=b-a
Loop
②
End Function
① ②
【答案】z= gcd(x, y);gcd= a或gcd=b
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】自定义函数gcd的功能是计算a、b的最大公约数,并通过函数名gcd返回函数的值。主程序是调用自定义函数,把x和y分别赋值给a和b,计算的结果赋值给z。故①处代码为:z=gcd(xy);②处代码为:gcd=a或gcd=b。
【分析】本题考查的是求最大公约数、自定义函数的应用。
5.小明编写了一个寻找奇妙整数的VB程序。此整数的平方与立方正好用了0~9的10个数且每个数只用一次,例如69的平方为4761,69的立方为:328509,4761和328509刚好用了0~9的10数,并且没有重复使用。现需从1至1000寻找这样的奇妙整数并在列表框List1中显示。实现上述功能的VB程序段如下:
Private mand1_Click()
Dim n As Integer, k As Integer, f
As Boolean ‘判断字符k是否重复出现
Dim s1 As String, s2 As String, i As Integer, j As Integer
For n= 1 To 1000
For i =0 To 9
a(i)= True
Next i
f = True
s1=CStr(n^2)
s2 =CStr(n^3) ‘Cstr()函数的作用是将数字型变量改变成字符型变量
For j = 1 To Len(s1)
①
If a(k)= True Then
a(k)=False
Else
f = False
Exit For
End If
Next j
If ② Then
j=0
Do While j<=9
If a(i)=True Then f=False: Exit Do
j=j+1
Loop
If f = True Then List1. AddItem Str(n)
End If
Next n
End Sub
Function Judge(s As String) As Boolean
Dim i As Integer, k As Integer
i=1: Judge True
Do While ③
k =Val(Mid(s, i, 1))
If a(k)=True Then
a(k)=False
Else
Judge = False
Exit Do
End If
i=i+1
Loop
End Function
请在程序划线处填入合适的代码。
① ② ③
【答案】k=Val(Mid(s1, j, 1));Judge(s2);Judge = True
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】自定义函数judge的功能是判断数字各位上的数字是否重复,并通过函数judge名返回函数的值。主程序中,先判断n的平方s1是否有重复,取出每个数字k,故①处代码为k=Val(Mid(s1, j, 1))。判断下标为k的数组元素值是否是True,在调用自定义函数判断s2不重复的基础上接着判断s1和s2中各个数字均不重复。故②处代码为Judge(s2) ,③处代码为Judge = True。
【分析】本题考查的是自定义函数的应用。
6.对输人的明文(由英文字母或数字组成的字符串)进行加密,输出加密后得到的密文。数据加密方法为对明文中的每个字符进行如下处理:
1)将该字符ASCI码转换成对应8位二进制;
2)将对应8位二进制数进行按位取反(1变0;0变1);
3)将产生的8位二进制数循环左移3次;
4)最后产生的8位二进制数转换成对应的十六进制数。
例如:明文大写字母“A”通过上述算法加密算法加密后生成的密文是“F5”,在文本框Text1中输入明文,单击“生成密文”按钮Command1,加密后生成的密文显示在文本框Text2中。
(1)如果输入明文为大写字母“F”,则生成的密文是 。
(2)请在划线处填入合适的代码。
Function btoh(m As String)As String ‘将4位二进制数转换成对应的十六进制数
Dim s As Integer, i As Integer, str As String
str ="0123456789ABCDEF": s=0
For i=1 To 4
s=s*2+ Val(Mid(m, i, 1))
Next i
①
End Function
Private Sub Command1_Click()
Dim ans As String, s As String, ch As String, ret As String
Dim i As Integer, asc1 As Integer, n As Integer
②
ans=" "
For i = 1 To Len(s)
ch =Mid(s, i, 1) ‘取出第i个字符存入变量ch
asc1=Asc(ch)
ret" "
For m =1 To 8 ‘完成加密步骤1)和步骤2)
n=(asc1+1)mod 2
ret =n & ret
③
Next m
ret = Mid(ret, 4, 5)+ Mid(ret, 1, 3) ‘完成加密步骤3)和步骤4)
s1=btoh(Mid(ret, 1, 4))
s2 =btoh(Mid(ret, 5, 4))
ans =ans & s1 & s2 ‘将第i个加密后的字符添加到变量ans的末尾
Next i
Text2.Text = ans
End Sub
① ② ③
【答案】(1)CD
(2)btoh = Mid(str, s + 1,1);s = Text1.Text;asc1= asc112
【知识点】算法的控制结构;常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )字母F的内码为01000110 ,按位取反得到10111001,循环左移3位得到11001101对应十六进制数为CD。
( 2 )①自定义函数btoh将4位-二进制数转换成对应的十六进制数,先将4位二进制数转换为十进制数s=s*2+ Val(Mid(m, i, 1)),然后根据求得的s去字符串str找对应的16进制字符,并通过函数名返回函数的值,即btoh=Mid(str, s + 1, 1)。 ②先接收输入的明文放到变量s中即s =Text1.Text。③取得的字符ch对应的字符代码asc1 =Asc(ch)为十进制数,需要将其转换为二进制数并取反,所以asc1 =asc1\2.
【分析】本题考查循环结构和自定义函数。
7.某ASCII字符加密方法算法如下:
⑴计算出该ASCII字符的8位二进制数值
⑵将该数值分割为前4位与后4位两个二进制数
⑶分别将上述两个4位二进制数转换为十进制数
⑷将每个十进制数转换为1个加密字符,对应的“密码表”如下
值(十进制) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
加密字符 I 1 i k e C H N p o s t c a r d
根据以上加密算法来推断解密算法,下表显示了字符串中两个字符的解密过程:
小明设计了一个解密程序,功能如下:在文本框Text1中输入密文,单击“解密”按钮Command1,在文本框Text2中输出解密结果。程序运行时界面如下图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim z As String, a As String, b As String
Dim i As Integer, y As Integer
z = Text1.Text
Text2.Text =" "
For i= 1 To ①
a=Mid(z, i, 1)
b= Mid(z, i+1, 1)
②
Text2.Text = Text2.Text + Chr(y)
Next i
End Sub
Function zn(x As String)As Integer '得出加密字符对应密码表中的十进制数
Dim m As String, i As Integer
m ="IlikeCHNpostcard"
For i =0 To 15
If ③ Then
zn=i
Exit For
End If
Next i
End Function
① ② ③
(2)若已知字符“a”的ASCI1码值为97(十进制),加密字符HN对应的英文字母是 。
【答案】(1)len(z)Step 2;zn(a)*16 + zn(b);Mid(m, i+ 1, 1)=x
(2)g
【知识点】算法的控制结构;过程与自定义函数
【解析】【解答】( 1 )建z是输入的密文,每次从中取出两个字符,所以循环变量的范围为i= 1 Tolen(z)Step 2。②所填内容肯定和y有关, y是-一个十进制数的ASCII值,该值应该去调用自定义函数,找出两个字母的位置,同时第1个位置是高4位,是原来的16倍即y=zn(a)*16 +zn(b)。日在自定义函数中,要找变量x在密码表中的位置,当他们相等时,就表示找到了,即Mid(m, i+ 1, 1)=x。
( 2 )输入HN后H在密码表位置是6,N在密码表位置是7,对应的二进制数为:01100111,转换成十进制数是103,103- 97=6,是字符a后面的第6个字符即g。
【分析】本题考查VB循环结构和自定义函数。
8.有一数组 a 具有 n(1≤n≤100)个元素,分别为 a(1)到 a(n),数组元素都为正整数且有可能相等。对于每一个数组元素,如果它后面存在大于或等于该元素的数,则这两个数可以组成一对。每个元素和自己也可以组成一对。例如:{3,7,2,4,8},可以组成 11 对,分别为(数字为下标):(1,1),(1, 2), (1, 4), (1, 5), (2, 2),(2,
5), (3, 3), (3, 4), (3, 5), (4, 4), (4,
5), (5, 5)。其中(1, 5)是距离最远的一对,距离为4。小明编写了一个VB程序,用于计算n个数组元素的最远距离。具体功能如下:运行程序时,在列表框List1中显示n个数组元素,单击命令按钮Command1,在文本框中显示这n个数组元素的最远距离。运行效果如图所示。
实现上述功能的 VB 代码如下。
Const n = 5 'n=5为例
Dim a(1 To n) As Integer '用于记录每个数组元素的值
Dim b(1 To n) As Integer '用于记录每个数组元素在原数组中的下标
Private Sub Form_Load()
'读取一组正整数,存储在数组 a 中
'将每个数组元素在原数组中的下标存储在数组 b 中
'将数组元素显示在列表框 List1中
'代码略
End Sub
Function Getans() As Integer
Dim left As Integer, ans As Integer
left = 10000: ans = 0
For i = 1 To n
If b(i) < left Then left = b(i)
If b(i) - left > ans Then ans = b(i) - left
Next i
Getans = ans
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
For i = 1 To n
For j = n To i + 1 Step -1
If Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
t = b(j): b(j) = b(j - 1): b(j - 1) = t
End If
Next j
Next i
Text1.Text =
End Sub
(1)代码“Private Sub Command1_Click( )”中表示加载在Command1上的事件是 。(单选,填字母:A
.Click/B ._Click/C .Command1_Click)
(2)程序代码中,IF 语句后加框处代码有误,请改正 。
(3)程序代码中,将 Text1.Text 赋值语句补充完整 。
(4)如程序运行界面所示数据,单击命令按钮 Command1后,数组元素 b(2)的值为 。
【答案】(1)A
(2)a(j) < a(j-1)
(3)Str(Getans( ))
(4)1
【知识点】类、对象、属性、方法、事件和事件处理的概念及应用;过程与自定义函数;排序算法及程序实现
【解析】【解答】( 1 )代码"Private SubCommand1_ Click0"中表示加载在Command1上的事件是Click。
( 2 )题中需要更改的代码的程序为典型的冒泡排序,加框处的功能为数组相邻两个元素比较大小,以便进行升序排序所以代码为a(j) < a(j- 1),如果两元素值相等就不需要交换了
( 3 )因为在"Text1.Text"输出的是字符串,所以需要将计算出的距离数值转换为字符串输出,而题中数组元素的最远距离是自定义函数Getans( )计算的,所以该处代码为Str(Getans())。
( 4 )如程序运行界面所示数据,单击命令按钮Command1后,数组a进行了升序排序,数组b存储的每个数组元素在原数组中的下标也跟着对应的数据元素进行了排序,所以数组元素b(2)的值为1。
【分析】本题考查对自定义函数的功能以及冒泡排序的理解。
9.数组 a 规模为(m+1)×n,其中 a(1) ~a(m n)元素中存储数据,数据中m×n个元素按行序排列成一个数字矩阵如图所示 计算每列数据的和,并依次存储在m+1行对应的数组元素中
依据该算法思想,设计一个VB程序,实现该功能的代码如下,请回答下列问题
(1)根据代码可知,该程序的按钮对象名是
(2)在程序划线处填上合适代码
Const m = 6
Const n = 5
Dim a(1 To (m + 1) n) As Integer
Private Sub Form_Load()
'数组初始化,生成 m×n 个两位数的随机整数并赋值给数组a
Randomize
For i = 1 To m n
a(i)= ①
Next i
End Sub
Private Sub Cod1_Click()
Dim i As Integer, j As Integer
For i = 1 To n
②
Next i
'将计算后数据,按 m + 1 行,n 列输出到列表框中,代码略
End Sub
Function sum(y As Integer) As Integer '函数功能是计算每列数据和
sum = 0
For i = ③
sum = sum + a(i)
Next i
End Function
① ② ③
【答案】(1)Cod1
(2)Int(Rnd * 90) + 10;a(m*n+i)=sum(i);ytom*nstepn
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )根据代码可知,该程序的按钮对象名是Cod1。
( 2 ) ①要生成mxn个两位数的随机整数并赋值给数组a,则需要使用随机函数,代码为: a(i)= Int(Rnd*90) +10。②把各列的和放到数组a中,代码为a(m*n+i)=sum(i) (调用自定义函数)。③计算每列数据和的代码为:for i =y to m*n step n sum=sum+a(i) next i , y为列数。
【分析】本题考查自定义函数的应用以及对程序代码的理解。
10.用26个互不重复的ASCI字符作为密码本,根据英文字母在字母表中位置,替换为密码本该位置的字符。现编写将英文字母加密的VB程序,在文本框Text1中输入明文,单击“加密”按钮Command1,在文本框Text2、Text3中输出产生的密码本和密文。程序运行界面如下图所示。
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim i As Integer, mw As String, jm As String
mw= Text1.Text: Text2.Text = my(26)
For i =1 To Len(mw)
c= Mid(mw, i, 1)
If c>="A" And c<="Z" Or c>="a"
And c<="2"Then
‘①
jm =jm+ Mid(Text2.Text, t, 1)
Else
jm=jm +c
End If
Next i
Text3.Text =jm
End Sub
Function my(n As Integer)As String
Dim s As String, i As Integer, x As Integer
s ="ABCDEFGHIKLMNOPQRSTUVWXYZabc-defghijklmnopqrstuvwxyz0123456789"
i=1
Do While i <=n
t=63-i
x =Int(Rnd()*t+1)
‘②
s = Mid(s, 1, x-1)+ Mid(s, x+1, t-x)
i=i+1
Loop
End Function
① ②
【答案】t= Asc(c) Mod 32;my=i my+ Mid(s,x,1)
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】 ( 1 )自定义函数的功能是产生不重复的字符串,t表示在s中长度, x是[1, x]之间的随机位置,把该位置上的字符连接到密钥中,同时把该字符在s中去除。此处代码修改为t= Asc(c) Mod 32。
( 2 )处需要记性字符连接,此处代码修改为my= my+ Mid(s, x, 1)。主程序中,找到字符c在字母表中位置t,并在密钥中取出对应的加密字符。
【分析】本题考查的是自定函数的应用。
11.有VB自定义函数的功能是求两个数之间被3除多2,被5除多3的所有整数个数,请在程序划线处填入合适的代码。
Function f(x1 As Integer, x2 As Integer)As Integer
Dim t As Integer, i As Integer
If x1 For i= ①
If i Mod 3=2 And i Mod 5 = 3 Then ②
Next i
End Function
① ②
【答案】x2 To x1或x1 To x2 Step -1;f=f+ 1
【知识点】过程与自定义函数
【解析】【解答】自定义函数f的功能是求x2和x1两个数之间被3除多2、被5除多3的所有整数个数。并通过函数名返回函数的值。①处循环从较大数到较小数,故此处代码为: x2 Tox1或x1 To x2 Step-1。②处对满足条件的数进行计数,故此处代码为: f=f+1。
【分析】本题考查的是自定义函数的应用。
12.在VB中,将一个二进制数转化成十六进制的自定义函数代码如下,请在程序划线处填入合适的代码。
Function btoh(s As String)As String
Dim i As Integer, s1 As String, t As Integer
Dim str As String, j As Integer
str="0123456789ABCDEF"
i= Len(s)
Do While i >=1
If ① Then
s1= Mid(s, i-3, 4)
Else
s1 = Mid(s; 1, i)
End If
t=0
For j =1 To Len(s1)
t= ②
Next j
btoh = Mid(str, t + 1, 1)+btoh
i=i-4
Loop
End Function
① ②
【答案】i>=4;t=t*2+Val(Mid(s1, j, 1))
【知识点】常量、变量及变量的赋值;过程与自定义函数;进制及数制转换
【解析】【解答】自定义函数btoh的功能是将二进制数s转换成十六进制数。转换的方法是从低位开始,每4位二进制转换成十进制数(不足4位,取剩下的所有字符),故0处代码为: i>=4。根据十进制数的值在字符str中查找相应的十六进制值,故②处代码为:t=t*2 +Val(Mid(s1, j, 1))。
【分析】本题考查的是进制转换与自定义函数的应用。
13.学校把各同学选考组合放在一个数据库中,小明编写了一个VB程序,用于查询每个同学的选考组合,程序界面如图所示,在文本框Text1中输入学号,单击“开始查询”按钮(Command1),就开始查找该学号的信息,如果找到对应的信息,就显示所属学生的姓名和选考组合;如果没有找到,则显示“找不到”。学校共有n名学生,数组a、b分别保存了本次考试所有学生的学号和姓名信息。数据库数据按学号从小到大排列,第i个学生的学号保存在a(i),对应的姓名保存在b(i),c(i)保存该学生的选考组合。
程序如下,在程序划线处填入适当的代码,把程序补充完整。
Dim n As Integer, a(1000)As String,
Dim b(1000)As String, c(1000)As String
Private Sub Command1_Click()
Dim x As String, pos As Integer
Dim conn As New ADODB. Connection,rs As New
ADODB. Recordset
conn. ConnectionString="provider =Microsoft. AC
A.OLEDB.12.0; data source="&.App. Path&"\students.accdb"
conn. Open
Set rs. ActiveConnection = conn
rs. Open"学生信息"
n=0 '考生数初始化
Do While Not rs. EOF
n =n+1
a(n)=rs. Fields(0)
b(n)=rs. Fields(1)
c(n)=rs. Fields(2)
①
Loop
x = Text1.Text
If pos >0 Then
②
Text2.Text=b(pos)
Text3.Text =c(pos)
Else
Text2.Text="找不到"
End If
End Sub
Function Search(Key As String)As Integer
Dim i As Integer, j As Integer, m As Integer
i=1: j=n: Search =0
Do While i <=j m=Fix((i+j)/2)
If Key =a(m)Then
③
Exit Function
Else lf a(m)> Key Then
j=m-1
Else
i=m+1
End If
Loop
End Function
① ② ③
【答案】rs. MoveNext;pos=Search(x);Search= m
【知识点】过程与自定义函数;程序访问数据库
【解析】【解答】在数据表进行查询时记录指针往下移,才能达到记录的尾部,故①处代码为rs.MoveNext。调用自定义函数去进行查找Text1中内容。故②处代码为pos=Search(x)。在自定义函数中,通过函数名返回函数的值。故③处代码为Search=m。
【分析】本题考查的是自定函数的应用以及VB访问连接数据库。
14.如果一个数从左往右读和从右往左读都一样,那么这个数就叫做“回文数”。如果一个数的十进制和二进制表示都是回文数,则把这个数叫做“双重回文数”。例如,十制数33是回文数,将其转化为二进制表示(10001)也是回文数,所以33是双重回文数。编写程序用于查找1000以内的双重回文数。
(1)根据题目描述,十进制数99是否是“双重回文数” (填:是/不是)。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim n As Integer, d As String, b As String
For i = 1 To 999
n=i
d=CStr(n) 'CStr函数的功能是数值转换为字符串
①
If ishws(d)Aind ishws(b)Then
List1.AddItem Str(i)+" "+b
End If
Next i
End Sub
Function dtob(k As Integer)As String '进制转换
Do While k >0
dtob =CStr(k Mod 2)+ dtob
k=k\2
Loop
End Function
Function ishws(x As String)As Boolean
ishws = True
For j=1 To Len(x) \2
If ② Then
ishws = False
Exit For
End If
Next j
End Function
① ②
【答案】(1)是
(2)b= dtob(n);Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】( 1 )十进制数99转换为二进制数是1100011,属于回文数,所以99是双重回文数。
( 2 )自定义函数dtob的功能是将k转换成二进制数。自定义函数ishws的功能是判断字符x是否是回文数。主程序中先调用自定义函数dtob将转换二进制数,若i及他对应的二进制数均为回文数,则他是双重回文数。故@处代码为b=dtob(n);②处代码为Mid(x, j, 1)< > Mid(x, Len(x)-j+ i, 1)。
【分析】本题考查的是自定函数的应用。
二一教育在线组卷平台(zujuan.21cnjy.com)自动生成 1 / 1