相关试卷
-
1、现有包含10个元素的数组d,使用冒泡排序算法对此数组元素进行升序排序,部分VB代码如下:
For i=1 To 9
For j= ①
If ② Then
k=d(j) : d(j)=d(j+1) : d(j+1)=k
End If
Next j
Next i
画线①②处应填写的正确语句是( )
A、①i+1 To n,②d(j)>d(j+1) B、①i+1 To n,②d(j)<d(j+1) C、①1 To n-i,②d(j)<d(j+1) D、①1 To n-i,②d(j)>d(j+1) -
2、有如下程序段:
S=" "
For i=1 To 3
For j=7 To i+1 Step-1
If a(j)<a(j-1) Then
k=a(j) : a(j)=a(j-1) : a(j-1)=k
End If
Next j
s=s+Str(a(i))
Next i
Text1. Text=s
数组元素a(1)到a(7)的数据依次为“3,9,1,5,8,6,2”经过该程序段“加工”后,文本框Text1中显示的内容是( )
A、1 2 3 B、9 8 6 C、3 9 1 D、8 6 2 -
3、对11个元素进行排序,用冒泡法进行排序时,需比较的次数共为( )A、110 B、132 C、55 D、66
-
4、小方同学在某网站注册时需要预设登录密码,预设密码需要符合以下2点:①密码不少于6位字符组成;②必须同时包含大写英文,字母、小写英文字母、阿拉伯数字和标点符号。据此,该同学编写了生成密码的VB程序,程序运行界面如图a所示,当点击“生成密码”按钮( command1)时,在文本框Text1中输出符合要求的密码字符
图b为标准ASCII码表供你参考(其中ASCII为1-32,127的字符为特殊符号,不能用作密码):
实现上述功能的VB程序代码如下,请回答以下问题:
(1)、请在划线处填入合适的代码。Private Sub Command1_Click()
Dim t As Integer, flag as Boolean
Dim pwd as String ,n as Integer
Dim a(1 To 4) As Integer
flag= True
n=0
pwd=" "
Randomize
Do While flag
t= '随机生成33~126的ASCII码
pwd= pwd+Chr(t)
s= 0
For i=1 To 4
s=s+a(i)
Next i
n=n+1
If n>=6 And s=4 Then
Loop
Text1. Text= pwd
End Sub
'获取字符类型:1-小写字母,2-大写字母,3-阿拉伯数字,4-符号
Function check(x As Integer) As Integer
If x>=97 And x <= 122 Then
check= 1
ElseIf x >=65 And x <=90 Then
check= 2
ElseIf x>=48 And x <=57 Then
check= 3
Else
check= 4
End If
End Function
(2)、以下字符串不可能是上述程序生成的密码的一项是(填数字序号)①H2? N64Aj
②[26wv9,Q
③$ 14G/uv④zX}rb! T&}d2
-
5、小杜编写了一个统计每个字母出现次数的程序,字母统计时不区分大小写。程序功能如下:程序运行时在文本框Text1中输入一个ASCII码字符串,单击“统计”按钮Com-marnd1,程序统计每个字符出现的次数,结果输出在列表框List1中,未出现过的字母不输出。程序运行界面如图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)、已知大写字母“A”的ASCII内码为65,程序运行时单击“统计”按钮Command1后如图所示,数组元素count(66)的值为 。(2)、请在划线处填入合适的代码。Private Sub Command1_ Click( )
Dim a(1 To 100) As Integer '用于存储每个字母的ASCII码
Dim count(65 To 90) As Integer '用于存储26个字母出现的次数
Dim i As Integer, ch As String
s= Text1. Text
For i=1 To Len(s)
ch= Mid(s, i, 1)
If zm(ch)=1 Then
a(n)= Asc(ch)- 32
n=n+1
ElseIf zm(ch)=2 Then
a(n)= Asc(ch)
n=n+1
End If
Next i
For i=1 To n-1
Next i
For i=65 To 90
If Then
List1. AddItem Chr(i) +“个数为:”+ Str(count(i))
End If
Next i
End Sub
Function zm(x As String) As Integer
If x>=“a”And x <=“z”Then
zm= 1
ElseIf x>=“A”And x <=“Z”Then
zm= 2
Else
zm=3
End If
End F unction
-
6、从原点(0,0)出发,顺时针旋转,经过平面上所有整点恰好一次,我们称之为螺旋折线,如下图所示。对于整点(x,y),我们定义它到原点的距离是从原点到(x,y)的螺旋折线段的长度。例如:x=0,y=1,则螺旋折线段的长度为3;x=-2,y=-1,则螺旋折线段的长度为9。现要求计算从原点到整点(x,y)螺旋折线段的长度。小王根据,上述描述设计如下VB程序,请回答下列问题:(1)、从原点到整点(4, 0)螺旋折线段的长度为 。(2)、请在画线处填入合适的代码。
Dim x As Integer, y As Integer 'x用于存储横坐标的值,y用于存储纵坐标的值
Private Sub Command1_Click()
Dim sum As Integer, m As Integer
Dim dx As Integer, dy As Integer
Dim i As Integer, t As Integer
x= Val(Text1. Text)
y=Val(Text2. Text)
dx=0 : dy=0
sum= 0
m=1: t=- 1
Do While Not check(dx, dy)
For i=1 To m
If check(dx, dy) Then Exit Do 'ExitDo表示退出Do循环
dx=dx+t
sum= sum+ 1
Next i
For i=1 To m
If check(dx, dy) Then Exit Do
sum= sum+ 1
Next i
m=m+1
Loop
Label1. Caption= Str( sum)
End Sub
Function check(x1 As Integer, y1 As Integer) As Boolean
check= False
If x1=x And y1=y Then
End If
End Function
-
7、编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:(1)、如果输入的二进制数为“1101010”,则得到的结果为。(2)、实现上述功能的VB程序如下,请在划线处填入合适代码。
'函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数
Private Function bw (x As Integer, y As String) As String
Dim r As Integer, i As Integer
r=x Mod 4
If r<>0 Then
For i=1 To 4-r
y="0"+y
Next i
x= Len(y)
End If
bw=
End Function
Private Sub Command1_Click()
Dim m As String, n As Integer, i As Integer, a As Integer
Dim s As Integer, s1 As String, j As Integer
m= Text1. Text
n=Len(m)
Text2. Text= ""
m= '调整m的位数为4的倍数
For i=1 To n-3 Step 4
s=0
For j=I To i+ 3
a= Val(Mid(m, j, 1))
s=
Next j
If s>= 10 Then
s1=Chr(Asc("A")+s-10)
Else
s1= CStr(s) '函数CStr类似于Str,但无前导空格
End If
Text2. Text= Text2. Text+s1
Next i
End Sub
-
8、按下面公式计算y的值:
现要求编写VB程序,实现如下功能:在文本框Text1中输入x的值,单击“计算”按钮Command1 ,在标签Label3中显示y的值。按此要求编写的程序如下,其中函数f(x)用于计算y的值,但加框处代码有错,请改正。
Function f(x As Single) As Single
If x<0 Then
f=- x
ElseIf
Then '(1)
f=x*x+1
Else
f=2* x+1
End If
End Function
Private Sub Command_Click()
Dim x As Single, y As Single
x= Val(Text1.Text)
'(2)
Label3. Caption= Str(y)
End Sub
程序中加框处的语句应更正为
⑴;⑵。
-
9、下列VB程序运行时,单击命令按钮Command1后,文本框Text1中显示的内容是 , 文本框Text2显示的内容是。
Private Sub Command1_ Click( )
Dim a(1 To 6) As Long,i As Integer
a(1)=1
a(2)= 1
For i=3 To 6
a(i)=a(i-1)+2 * a(i- 2)
Next i
Text1. Text=Str(a(6))
Text2. Text= Str(i)
End Sub
-
10、某VB程序如下:
Function fx(n As Integer) As Long
If n=1 Then
fx=2
Else
fx=2+fx(n-1)
End If
End Function
Private Sub Command1_ Click()
Dim x As Integer, y As Integer
x=va1(Text1. Text)
y=fx(x)
Text2. Text= Str(y)
End Sub
程序运行时,在文本框Text1中输人数字10,单击命令按钮后,在Text2显示内容为( )
A、2 B、18 C、20 D、22 -
11、下列VB程序模块可以计算正整数n阶乘(n!)的值,该模块采样的算法是( )
Function f(n As Integer) As Long
If n<=1 Then
f= 1
Else
f=n* f(n-1)
End If
End Function
A、枚举算法 B、查找算法 C、排序算法 D、递归算法 -
12、[枚举的综合应用]在一个数组中存储了若干个同学的技术成绩小题分,其中a(1)存储学生个数,a(2)开始按顺序存储小题分数据。每个学生有33个小题的数据,例:a(2)~a(13)是学生1的信息选择题得分,a(27)~a(30)是学生1的信息4个主观题得分。具体如下表
题号
1-12
13-25
26-29
30- 33
科目题型
信息客观题
通用客观题
信息主观题
通用主观题
满分分值
每题2分
每题2分
4/8/7/7
6/9/3/6
小李根据上述描述,设计了一个统计所有同学信息各题得分率的算法。程序运行后首先在列表框List1显示信息技术各小题得分,单击“计算”按钮“Command1",在列表框List2显示信息各题的题号和得分率,在文本框Text1输出所有同学的信息平均分(平均分=各题得分率*分值之和)。算法的VB程序如下,回答下列问题。
(1)、根据题目描述,使用如图所示数据,a(95)的数值是。(2)、在程序划线处填上合适代码,使程序完整。Dim a(1 To 1000) As Integer, n As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim fz(1 To 16) As Integer 'fz数组存储信息各题满分值
Dim b(1 To 33) As Double '数组b存储全卷各题的平均得分
For i=1 To 16 '数组fz存储信息16个小题的满分值
If i<= 12 Then fz(i)=2
fz(13)=4 : fz(14)=8 : fz(15)=7 : fz(16)=7
Next i
For i=2 To n '把数组a数据分别统计到各题中
b(j)=a(i)+ b(j)
Next i
For i=1 To 33 '仅处理信息各题的平均分
If i<= 12 Then
b(i)=b(i) / (a(1) * fz(i)) ' 计算信息选择题各题的得分率
ElseIfi>= 26 Andi<= 29 Then
b(i)=
End If
Next i
For i=1 To 16
If i> 12 Then j=i+13 Else j=i
b(j)=Int(b(j) * 1000+0.5) / 10 '对结果四舍五入保留1位小数
List2. AddItem Str(i) 十Str(b(j))+"%"
ave=
Next i
Text1. Text=Str(ave / 100)
End Sub
Private Sub Form_ Load()
'读入数据到数组a,数据个数n,代码略
End Sub
-
13、[二进制枚举法]小明在玩一个翻转棋盘的游戏,其中棋子只有黑白两面,界面如图a所示:游戏规则是挑选几个棋子,对于每个被挑选的棋子,将该棋子和它上下左右4个相邻棋子一起翻转,若某个方向无棋子,则不作处理,最后使得棋盘纯色(纯白或纯黑)。现需要编写程序找出所选棋子最少的方案并输出所选棋子的个数,若无答案则输出“无法翻转为纯色”
(注:如图a所示,则需翻转第二行第二列、第四行第二列两个棋子便可使得棋盘纯黑)
一开始小明不知从何人手,但很快他发现了突破点。他先将棋盘状态利用二进制进行编码并存储在数组中,编码规则为0表示白,1表示黑,顺序为从左至右,从上至下,则第10题图a中的初始状态可以表示为数列1011000111110001。
随后,他将被选中的棋子的位置也进行二进制编码,0表示不选中,1表示被选中,则可以用一个16位二进制编码表示。例如,二进制编码0000010000000100表示选中了第2行第2列、第4行第2列这两个棋子,随后将编码转化为十进制数,即2^10+2^2= 1028;于是,整张棋盘的所有选棋子方案为000000000000000 ~ 11111111111111,也就是十进制下的0~65535,利用枚举算法即可找到最优方案。
程序界面如图b所示,VB代码如下,请回答下列问题。
(1)、若某方案用十进制表示为137,则总共选择了个棋子。(2)、完成程序中填空。Dim a(16) As Integer, b(16) As Integer, min_ _c As Long
'a数组储存棋盘原状态,b数组储存翻转后的棋盘状态
Function check() As Boolean '判断棋盘是否纯色
Dim flag As Boolean, i As Integer
flag= True
For i=1 To 15
If b(i) <> b(i+1) Then flag= False
Next i
check = flag
End Function
Private Sub Command1_Click()
Dim k As Integer, c As Integer, i As Long, j As Long
For i=0 To 2^16- 1
For j=1 To 16 '初始化棋盘
b(j)=a(j)
Next j
k=16
c=0
j=i
Do While j>0
If Then
b(k)=1- b(k)
If k> 4 Then b(k-4)=1-b(k-4)
If k< 13 Then b(k+4)=1- b(k+4)
If k Mod 4 <> 0 Then b(k+1)=1- b(k+1)
If Then b(k-1)=1-b(k- 1)
c=c+ 1
End If
j=j\2
k=k- 1
Loop
If Then
min_ c= c
End If
Next i
If min_ c=17 Then Label1. Caption= "无法翻转为纯色!" Else Label1. Caption= Label 1. Caption+Str(min_c)
End Sub
Private Sub Form_ Load()
'生成棋盘状态,用数组a(1)~a(16)表示,代码略
For i=1 To 16
s=s+Str(a(i))
If i Mod 4=0 Then List1. AddItem s : s=" "
Next i
End Sub
-
14、[二进制枚举法]有n个人(编号1、2、3……n)一起玩猜拳游戏,请输出n个人猜拳的所有的情况(每个人包括石头、剪刀和布三种情况)。
程序代码如下。
Dims(2) AsString, res AsString
Dim i AsInteger, p AsInteger
PrivateSub Command1_ Click()
s(0)="石头" : s(1)="剪刀" : s(2)="布"
n= Va1(Text1. Text)
For i=1 To n
res= res+Str(i)+"号"+”"
Next i
List1. AddItem res
For i=0 To ①
p=1 : res =" "
For j=1 To n
res= res+" "+ ②
p=p\ 3
Next j
List1. AddItem res
Next i
EndSub
(1)、若5个人进行游戏,则总方案数为。(2)、请完成程序中的填空。① ②
-
15、[矩阵上的枚举]大家有接触过地雷游戏吗?如图所示是一个“挖地雷”游戏的界面,9X9个格子里都有一个数字,红旗代表地雷可以用“★”表示,图中共有10个地雷,“一一”表示空白格,边上的“▲”表示边框。
定义规则:你需要标记出所有空白格子周边相邻的格子上有多少地雷(在正方向和斜45度方向挨着的格子均可视为相邻),并将数量标记在空白格中,如下图所示。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim n As Integer,m As Integer 'n 存储地雷区域大小,m存储地雷数目
Dim a(1 To 100 * 100) As String
Dim b(1 To 100 * 100) As Integer
Private Sub Command1_Click() '按要求生成数组a中的数据并显示
Randomize
List1. Clear
n=9 : m=10
Dim s As String, pos As Integer, i As Integer
s=" " : n=n+2
For i=1 To n * n
If isinside(i) Then a(i)="— —"
Else a(i)="▲"
Next i
For i=1 To m
pos=Int(Rnd * n * n)+1
Do While a(pos)="★" Or
pos= Int(Rnd * n *n)+1
Loop
a(pos)="★"
Next i
For i=1 To n* n
s= s+" "+a(i)
If i Mod n=0 Then
List1. AddItem s
s=" "
End If
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, row As Integer
Dim col As Integer, start As Integer, temp As String
For i=1 To n* n
If a(i)="★" Then
row=(i-1) \ n+1 : col=(i-1) Mod n+1
For j=1 To 3
start=
If a(start+col- 1)="— —" Then b
(start+ col- 1)= b(start+col- 1)+1
If a(start+col)="— —" Then
b(start+ col)= b(start+col)+1
If a(start+col+1)= "— —" Then b
(start+col+ 1)= b(start+ col+1)+1
Next j
End If
Next i
List2. Clear
For i=1 To n
temp=" "
For j=1 To n
If a((i-1) * n+j)="— —" Then
temp=temp+" "+ Str(b((i-1) * n+j))
Else
temp= temp+" "+a((i- 1)*n+j)
End If
Next j
List2. AddItem temp
Next i
End Sub
Function isinside(x As Integer) As Boolean
isinside= x>n And And x
Modn<;>1AndxMod<> 0
End Function
-
16、小李忘记了自己的银行账号密码,非常着急,请帮她尽快找出密码。幸亏她还隐约记得自己的密码信息:①密码是六位数字,前面两位为31;②最后两位数字相同;③能被16和46整除。程序界面如图所示,单击“帮助找回密码”按钮Command1后,可能的密码显示在列表框List1中,实现上述功能的VB代码如下。
请回答下列问题:
(1)、解决此问题的算法是(选填:枚举算法/解析算法)。(2)、在程序中划线处填入适当的代码。Private Sub Command1_ Click()
Dim s As Long
Dim iAs Integer,a As Integer,b As Integer
For i=0 To 9999 Step
s=310000+i
If s Mod 46=0 Then
a=
b=s\ 10 Mod 10
If a=b Then List1. AddItem Str(s)
End If
Next i
End Sub
-
17、幼儿园罗老师在班级活动课将全班小朋友进行分组:每3个小朋友组成1个小组,最后多出1个小朋友,每4个小朋友组成1个小组,最后也多出1个小朋友,每5个小朋友组成1个小组,最后1个小组差1个小朋友。若该班级小朋友不超过50人,编写VB程序实现求出当前班级至少有多少个小朋友,并将结果显示在文本框Text1中。程序设计界面如图所示。(1)、在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的属性。(2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_ Click()
Dim flag As Boolean,i As Integer,d As Integer
Dim t3 As Integer,t4 As Integer,t5 As Integer
i=5:flag= True
Do While i<= 50 And flag
t3=i Mod 3
t5=i Mod 5
If (t3=1) And (t4=1) And (t5=4) Then
flag= Flase
End If
i=i+1
Loop
Text1. Text = Str(d)
End Sub1
(3)、运行该程序,在文本框Text1中显示的值是 。 -
18、编写“寻找质因子”的程序,程序功能:在文本框Text1中输入[2,32767]之间的任意整数,单击“执行”按扭Command1后,在文本框Text2中显示该整数可分解出的所有质因子(若存在重复,只输出一次)。程序运行时界面如下图所示:(1)、观察程序界面,不具有Caption属性的对象有(填数字)个。(2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_ Click()
Dim n As Integer, m As Integer
Dim s As String
Dim bj As Boolean '用于标记该质因子是否已存在
n=Va1(Text1. Text)
s=" "
m= 2
bj= True
Do While n> 1
If n Mod m=0 Then
n=
If bj= True Then
s=s+Str( m)
bj= False
End If
Else
m=m+1
End If
Loop
Text2. Text= s
End Sub
(3)、运行,上述程序,若在文本框Text1中输入1024,单击“执行”按钮后,文本框Text2中显示的内容为 。 -
19、给定12个不同的正整数,任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。比如给定8 13 21 28 19 33 10 17 42 5 38 7,得到的答案是3,因为10是5的两倍,42是21的两倍,38是19的两倍。下列VB代码段能实现上述功能,请将划线处代码补充完整:
Private Sub Command2_Click()
Const n=12
Dim a(1 To n) As Integer, s As Integer
Dim i As Integer, j As Integer
Randomize
For i=1 To n
a(i)=Int(Rnd * 50)+1
For j=1 To i- 1
If a(i)=a(j) Then
Next j
If j <i Then
Next i
For i=1 To n
For j=1 To n
If Then
s=s+1
List1. AddItem Str(s)+":"+ Str(a(i)) + Str(a(j))
Exit For跳出内层循环
End If
Next j
Next i
End Sub
-
20、使用会声会影软件加工视频时的部分界面如下图所示。
从图中可知,加工该视频使用了( )
A、2个图片素材、1个视频素材、3个音频素材 B、1个图片素材、2个视频素材、2个音频素材 C、1个视频素材、2个图片素材、2个声音素材 D、2个音频素材、2个视频素材、2个图片素材