相关试卷
-
1、有如下程序段:
For i = 2 To 6
For j = 1 To i - 1
If a(j) <= a(i) And d(j) >= d(i) Then
d(i) =d(j)+1 : pre(i) = j
End If
Next j
Next i
max = 0 : k = 0
For i = 1 To 6
If d(i)>max Then max = d(i) : k = i
Next i
Do While k <> 0
st = a(k) & ","& st
k=pre(k)
Loop
Text1.Text = Mid(st, 1, Len(st) - 1)
数组元素a(1)到a(6)的值依次为“2,6,5,9,8,8”,数组d各元素的值初始化为1,数组pre各元素的值初始化为0,经过该程序段“加工”后,Text1中的值是( )
A、2,5,9 B、2,6,8,8 C、2,5,8,8 D、2,5,6,8,8,9 -
2、火柴棒等式。用火柴棒可以摆出0-9的数字,摆放规则如下图所示:
有一种火柴棒游戏,将火柴棒摆成形如“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
(1)、请在划线处填入合适的代码。① ② ③
(2)、某次运行程序时,显示的等式中包含“7+17=24”,根据程序分析,输入的n的值为:。 -
3、尼克斯彻定理:任何一个大于等1的整数的立方等于一串连续奇数之和,如:13=1,23=3+5,33=7+9+11。编写一个VB程序验证尼克斯彻定理,程序运行时,在文本框Text1中输入一个于等于1的整数,单击“验证”按钮Command1,在文本框Text2中显示验证结果,运行界面如图所示。
实现上述功能的VB代码如下,请完善代码:
Private Sub Command1_Click()
Dim n As Integer, i As Integer, t As Integer, sum As Long, s As String
n=Val(Text1.Text)
For i=1 To n^3 step 2 '变量i表示连续奇数的首个整数
sum=0:t=i:flag=False
Do While sum<n^3 And flag= False
sum=
t=t+2
If Then flag=True
Loop
If flag=True Then Exit For
Next i
s=Str(n)+ "^"+Str(3)+ "="
Do While sum>0
If sum= 0 Then
s=s+Str(i)
Else
s=s+Srt(i)+ "+"
End If
i=i+2
Loop
Text2.Text=s
End Sub
-
4、小王编写了一个VB程序,该程序的功能是:15个数形成环状,现要分别找出3个相邻的数:使其相加之和最大或最小。如15个数依次为:18,14,42,61,13,19,14,13,28,52,61,58,30,则相邻三数之和最大为62(30+18+14),相邻三数之和最小为31(4+26+1)。
程序运行时,先随机生成15个[1,30]区间内的整数,存储在数组a(0)至a(14),并在文本框Text1中显示;单击“计算”按钮Command1,则在标签Labe14中显示连续三数最大和,在标签Label5中显示连续三数最小和,程序运行界面如图所示。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const n=14
Dim a(n) As Integer
Private Sub Form_Load()
'随机生成15个数,存储在数组元素a(0)~a(14)中,并显示在文本框Text1中
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim imax As Integer, imin As Integer
Dim smax As Integer, sum As Integer, smin As Integer
smax=0:smin=100
For i=0 To 14
j=
k=
sum=a(i)+a(j)+a(k)
If sum>smax Then
smax=sum
imax=i
End If
If sum<smin Then
smin=sum
imin=i
End If
Next i
Label4.Caption=Str(smax)
Label5.Caption=Str(smin)
End Sub
-
5、如果两个质数的差为2,则这两个质数称为孪生质数对;编写VB程序,实现如下功能:单击“显示孪生质数对”按钮Command1,在列表框List1中显示100以内的所有孪生质数对(运行效果如图所示)。
实现上述功能的VB代码如下。
Dim a(1 To 50) As Integer
Private sub Command1_Click()
Dim i As Integer
k=0: i=3
Do While i<= 100
If Not prime(i) Then
k=k+1
End If
i=i+2
Loop
For i=2 To k
If Then
List1 AddItem Str(a(i-1))+"和"+ Str(a(i))
End if
Next i
End Sub
Function prime (x As Integer)As Boolean
prime=False
For i=2 To Int(sar(x))
If x Mod i=0 Then
prime=True
Exit for
End If
Next i
End Function
(1)、语句“List1. AddItem Str(a(i-1))+"和"+Str(a(i))”中的AddItem是(单选,填字母:A .对象名/B .属性名/C .事件名/D .方法名)。(2)、程序代码中,加框处有错,请改正。(3)、程序代码中,将横线处语句补充完整。(4)、在自定义函数中,函数返回值prime=Flase表示的含义是。 -
6、给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是:
⑴找出等式中单个数字的最大值;
⑵从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;
⑶如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。
小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。
(1)、根据上述算法,则等式“5+7=13”成立,则该等式中的数属于进制数。(2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。Private Sub Command1_Click()
Dim s1 As String, ysf As String,t1 As String,t2 As String,t3 As String
Dim ch As String,t As String, max As Integer, jz As Integer, i As Integer
s1=Text1. Text
t1=0: max=0
For i=1 To Len(s1)
ch= Mid(s1,i,1)
If ch="+" Or ch="-" Or ch="*" Or ch="\" Then
ysf=ch: t1=t: t=" "
ElseIf ch="=" Then
t2=t: t=" "
ElseIf ch>="A" And ch <="F" Then
t=t+ch
temp=
If max<temp Then max=temp
Else
t=t+ch
If max<Val(ch)Then max=Val(ch)
End If
Next i
t3=t: jz=0
Do While i<= 16
If ysf="+" Then
If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
ElseIf ysf="-" Then
If XtoD(i, t1)-XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
ElseIf ysf="*" Then
If XtoD(i, t1)* XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
Else
If XtoD(i, t1)/XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
End If
i=i+1
Loop
If jz < >0 Then
Text2.Text="该数属于"+Str(jz)+"进制"
Else
Text2.Text="没有找到合适的进制"
End If
End sub
Function XtoD(x As Integer,s As String) As Integer
Dim j As Integer
j=0
For i=Len(s)To 1 Step-1
XtoD=XtoD+Val(Mid(s, i, 1))*x
Next i
End Function
-
7、用VB编程解决一个问题:求所有五位数中满足能被17整除且十位数字为5的数之和。(1)、本题的所有五位数所指的范围是1~10000,10000~99999,10000~90000,还是11111~99999?写出本题的所有五位数所指的范围。(2)、算术运算符:除/、整除\、求余Mod。例子,设五位数为参数i,则i\10000为万位,(i\1000)Mod 10 为千位,类推,则五位数中十位数字为 , i Mod 10为个位。写出五位数中十位数字为5的表示式。(3)、将本题程序填写完整。
Private Sub Command1_Click()
s = 0
For i =To
If i Mod 17 = 0 And =5 Then
s = s + i
End If
Next i
Print s
End Sub
(4)、本题程序采用了什么算法? -
8、找出满足各位数字之和等于5的所有三位数可采用的算法是( )。A、解析算法 B、冒泡排序 C、枚举算法 D、选择排序
-
9、小强在双十一购物期间忘记了支付宝账户密码,但他急用支付宝进行转账,请你帮他尽可能找回密码。他只记得自己密码的一些零星信息:
①密码是六位数字,前面两位为59;②最后两位数字相同;③能被12和38整除。
程序界面如图1所示,单击 “帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
(1)、应用程序界面设计时,为添加“List1”对象,应使用图2所示的“控件工具箱”中的(填写相应编号)。(2)、请根据题意将解决此问题的相应程序补充完整。Private Sub Command1_click( )
Dim x As Integer, s As Long
Dim y As Integer, i As Integer
For i = 0 To 9999
s = 590000 + i
If Then
x= s mod 10
y =
If x = y Then
List1.AddItem Str(s)
End If
End If
Next i
End Sub
(3)、该模块采用的算法是( )A、枚举 B、查找 C、排序 D、解析 -
10、一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数。如十进制整数26的二进制表示为11010,26是一个A类数。下列VB程序的功能是:统计前1000个自然数中A类数的个数,并在文本框中输出。请在划线处填入合适代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As Integer, t As Integer, k As Integer
s = 0
For i = 1 To 1000
n = i
t = 0
k = 0
Do While n > 0
If n Mod 2 = 1 Then t = t + 1 Else k = k + 1
Loop
If Then s = s + 1
Next i
Text1.Text = Str(s)
End Sub
-
11、下列问题适合使用枚举算法解决的是( )A、计算已知半径的圆面积 B、计程车计费 C、校园歌曲大赛的成绩排名 D、找出1000以内的所有素数
-
12、用枚举算法求解“找出所有满足各位数字之和等于5的三位数”时,在下列所列举的数值范围内,算法执行效率最高的是( )A、从0到999 B、从100到999 C、从100到500 D、从104到500
-
13、若一个正整数从左向右读与从右向左读都一样,我们就将其称之为回文数。如11、121均是回文数。请你编写程序,输出10至n之间的所有回文数。程序运行界面如图所示,在文本框Text1中输入一个正整数n,单击“查找”按钮Command1,在列表框List1中显示10–n之间的所有回文数,并且在标签Label1中输出查找到回文数的总数。
问题:实现上述功能的VB 代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim n as long , sum as long , i As Long Dim x as long , y as long
List1.Clear
n = Val(Text1.Text) sum = 0
For i = 10 To n
x =
‘①y = 0
Do While x > 0
y =
‘② x = x \ 10
Loop
If y = i Then
List1.additem Str(i)
sum = sum+1
End if
Next i
Label1.caption = “共有”& Str(sum) & “个回文数” End Sub
①②
-
14、小张的QQ密码忘记了,请你帮他找回密码。他只记得自己密码的一些零星信息:
①密码是六位数字,前面两位为59;
②最后两位数字相同;
③能被12和38整除。
程序界面如图所示,单击“找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
(1)、应用程序界面设计时,为添加“可能的密码有:”对象,应使用左图所示的“控件工具箱”中的(填写相应编号),并在右图所示的“属性窗口”中,将属性值设置为“可能的密码有:”。(2)、为实现上述功能,请在划线处填入合适的选项。Private Sub Command1_Click( )
Dim x As Integer, s As Long, y As Integer, i As Integer
For i=0 To 9999
s=590000+i
If ① Then
x=s mod 10
y=(s Mod 100)\10
If ② Then
List1.AddItem ③
End If
End If
Next i
End Sub
① , ② , ③
A.x=y B.Str(s) C.Str(i) D.s Mod 12=0 and s Mod 38=0
-
15、哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。下列程序的功能即验证哥德巴赫猜想。程序运行时,在文本框Text1中输入一个大于2的偶数,单击“证明”按钮Command1后,在列表框List1中输出所有符合猜想的组合,在标签Label2中输出共有多少个组合。程序运行效果如下图所示。
为实现上述功能程序如下,但加框处的代码有误,请改正。
Private Sub Command1_Click()
Dim n As Integer
Dim i As Integer, c As Integer
n = Val(Text1.Text)
List1.Clear
c = 0
If n Mod 2 = 0 Then
For
①If
Then ②List1.AddItem n & "=" & i & "+" & n - i
c = c + 1
End If
Next i
Label2.Caption = "共有" & c & "种组合"
Else
Label2.Caption = "请输入一个大于 2 的偶数"
End If
End Sub
Function is Prime(x As Integer) As Boolean
Dim i As Integer
Is Prime = True
For i = 2 To Int(Sqr(x))
If x Mod i = 0 Then
Is Prime = False
Exit For
End If
Next i
End Function
① ②
-
16、编写程序输出100~200之间不能被3整除的自然数,并统计出符合条件的个数。
程序如下:
Private Sub Form_Click()
Dim i As Integer
Dim t As Integer
For i = 100 To 200
If Then '不能够被3整除的条件
Print i
t=t+1
End If
Next i
End Sub
程序运行结束后t的值为
-
17、用蒙特卡洛法求圆周率PI的近似值,其算法如下:使用随机函数Rnd,随机生成两个[0,1)之间的随机数,由此构成一个投点坐标(x, y),然后根据x2+y2<=1投点是否在圆内来求PI的近似值。其中总共随机投点n次,统计落点在单位圆内的点数为s,则4s/n即为所求PI的近似值。程序界面如图所示,在Text1中输入投点的个数,单机“计算”按钮,PI的近似值结果显示在Text2中。)
(1)、要使得按钮的文字显示为“计算”,应该修改该对象的属性。(2)、要实现上述功能,请在划线处填入合适代码。Private Sub Command1_Click()
Randomize '随机数初始化
Dim i As Long, n As Long, s As Long
Dim x As Double, y As Double, z As Double
n = Val(Text1.Text)
①
s = 0
Do While i <= n '随机投点n次
x = Rnd: y = Rnd
z = ②
If z <= 1 Then
s = s + 1
End If
i = i + 1
Loop
Text2.Text = ③
-
18、(加试题)小李同学碰到了一个数学问题:400个同学按顺序进行编号后围成一个大圈,按1至2报数(从1号位置开始),报到2的同学出列,以此一直循环报数下去,问最后剩下的那位同学他的编号是几号?
例如以6个同学编号为例,按1至2报数(从1号位置开始)依次出列的编号次序为2-4-6-3-1-5,那么最后剩下的就是编号为5的同学。
为了解决这个问题,小李用VB编写了如下程序尝试解决,其中列表list1显示出列的顺序编号,文本框text1中显示最后留下的编号,程序代码如下(测试界面如下图):
Private Sub Command1_Click()
Dim s, f, t As Integer
Dim a(1 To 400) As Boolean
For i = 1 To 400
a(i) = False
Next i
s = 0
f = 0
i = 0
Do While f < 399
i = i + 1
If i = 401 Then i =
If a(i) = False Then s = s + 1
If s = 2 Then
List1.AddItem Str(i)
a(i) = True
f =
End If
Loop
For i = 1 To 400
If Then text1.text=str(i)
Next i
End Sub
在程序划线处填入合适的代码。
-
19、编写“素数查找”程序,实现如下功能:单击“生成”按钮,随机生成50个150至200(包括150和200)之间的正整数,显示在下方,每行显示10个,共5行。单击“筛选”按钮,从上面50个数中筛选出是素数的数,重复的只显示一次。程序运行界面如图所示。

请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Label3.Caption = ""
For i = 1 To 50
a(i) =
If i Mod 10 = 0 Then
Label3.Caption = Label3.Caption + CStr(a(i)) + vbCrLf '换行
Else
Label3.Caption = Label3.Caption + CStr(a(i)) + " "
End If
Next i
End Sub
Private Sub Command2_Click()
Label4.Caption = ""
n = 0
For i = 1 To 50
For k = 2 To a(i) - 1
If Then Exit For
Next k
If k = a(i) Then
n = n + 1
If n = 1 Then b(n) = a(i)
For j = 1 To n - 1
If b(j) = a(i) Then: Exit For
If j = n - 1 Then b(n) = a(i)
Next j
End If
Next i
For j = 1 To n
Label4.Caption = Label4.Caption + + " "
Next j
-
20、小明编写了一个寻找非常幸运数的程序。程序运行时,单击“求解”按钮,则在列表框中输出所有的六位数中的非常幸运数,在标签Label2中输出非常幸运数的个数。
所谓的非常幸运数是指符合下列条件的整数:
⑴该数的偶数位数字之和等于奇数位数字之和。
⑵该数的前一半的各位数字之和正好等于后一半的各位数字之和。
实现上述功能的VB程序如下,在程序划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(1 To 6) As Integer, sum(1 To 4) As Integer
Dim x As Long, i As Long, count As Long, k As Long
For i=100000 To 999999
x=i
k=1
Do While x > 0
a(k)=
x=x\10
k=k+1
Loop
sum(1)=a(1) +a(2)+a(3)
sum(2)=a(4)+a(5)+a(6)
sum(4)=a(2)+a(4)+a(6)
If sum(1)=sum(2) And sum(3)=sum(4)Then
List1.AddItem Str(i)
End If
Next i
Label2.Caption="共有个数:" + str(count)
End Sub