- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)王老师在使用 VB 程序要实现 n! 的功能。
Private Sub Command1_Click()
Dim p As Integer
Dim sum As Long
p = Val(Text1.Text)
sum = fx(p)
Text2.Text = CStr(sum)
End Sub
Function fx(x As Integer) As Long
If x = 1 Then
fx = 1
Else
fx =____________________
End If
End Function
要该程序实现此功能,横线处的代码为( )
Private Sub Command1_Click()
Dim p As Integer
Dim sum As Long
p = Val(Text1.Text)
sum = fx(p)
Text2.Text = CStr(sum)
End Sub
Function fx(x As Integer) As Long
If x = 1 Then
fx = 1
Else
fx =____________________
End If
End Function
要该程序实现此功能,横线处的代码为( )
A.x(x)*(x-1) | B.fx(x)*x | C.fx(x-1)*x | D.fx(x-1)*(x-1) |
下面程序的功能是:找出10以内的奇数中能被3整除的正整数,并将它们累加起来。为了实现这一目标,请完善下列程序:
x=0
For i=1 to 10 step ____
If _______________________ then x=x+i
Next i
x=0
For i=1 to 10 step ____
If _______________________ then x=x+i
Next i
有如下 VB 程序段:
Private Sub Command1_Click()
Dim i As Integer,s As string
s = ""
For i = 1 To 3 Step 2
s = str(f(i)) + s
Next i
Text1. Text = s
End Sub
Function f(n As Integer) As Integer
If n = 1 Then
f = 2
Else
f = f(n - 1) + n
End If
End Function
则执行该程序段后,s 的值为( )
Private Sub Command1_Click()
Dim i As Integer,s As string
s = ""
For i = 1 To 3 Step 2
s = str(f(i)) + s
Next i
Text1. Text = s
End Sub
Function f(n As Integer) As Integer
If n = 1 Then
f = 2
Else
f = f(n - 1) + n
End If
End Function
则执行该程序段后,s 的值为( )
A.247 | B.27 | C.72 | D.742 |
某VB程序段如下:
Function f (n As Integer) As Long
If n = 1 Then
f = 5
Else
f= 2*f(n-1) – 3
End If
End Function
Private Sub Command1_click()
Dim n As Integer
n = Val (Text1.Text)
Text2. Text = Str(f(n))
End Sub.
该程序段运行后,在文本框Text1中输入5,单击命令按钮Command1后,文本框Text2中显示的是( )
Function f (n As Integer) As Long
If n = 1 Then
f = 5
Else
f= 2*f(n-1) – 3
End If
End Function
Private Sub Command1_click()
Dim n As Integer
n = Val (Text1.Text)
Text2. Text = Str(f(n))
End Sub.
该程序段运行后,在文本框Text1中输入5,单击命令按钮Command1后,文本框Text2中显示的是( )
A.18 | B.35 | C.63 | D.123 |
对n项(n<=100)数据序列的前x项求和,可设计如下算法:将数据序列存储在数组a中,并按一定规则转换成数组c,再借助数组c实现求和.
将数组a转换成数组c的方法描述如下:
①将数组a中的元素依次存储到数组c中,把当前数组c看作第一层;
②把第一层中的各元素进行如下处理:奇数项值不变,偶数项的值更新为自己与自己前一项的和,将更新后的数组元素看作第二层;
③把第二层中的各元素,按上述方法进行同样操作,更新后的数组元素看作第三层;
④以此类推,直到当前层中仅有一项为止。
例如x=11时,转换过程如图所示:

借助数组c,可快速计算出数组a中前x项的和.例如,数组a中前11项的和,可由表达式c(11)+c(10)+c(8)得到.表达式具体分析过程如下:
② 表达式第一项为c(11);
②将下标11转换成二进制数1011,计算该二进制数最右边的“1”所对应的权值,再用11减去此权值得到10,即表达式第二项为c(10);
③按上述方法继续操作,直到计算结果等于0为止。
小龙依据上述方法设计了如下vb程序.请回答下列问题:
(1)计算数组a中前22项和的表达式为__________________(填写表达式,如c(11)+c(10)+c(8))。
(2)请在划线处填入合适的代码。
Dim n As Integer
Dim a(1 To 1000) As Long, c(1 To 1000) As Long
Private Sub Form_Load()
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, space As Integer
For i = 1 To n
c(i) = a(i)
Next i
k = 2 '当前层第一个偶数项的位置
space = 1 '当前层偶数项与前一项的间距
Do While k <= n
For i = k To n Step k
c(i) = c(i) + c(i - space)
Next i
k = k * 2
①______________________
Loop
End Sub
Private Sub Command2_Click()
②_________________
Function lowbit(x As Integer) As Integer
temp = temp \ 2
将数组a转换成数组c的方法描述如下:
①将数组a中的元素依次存储到数组c中,把当前数组c看作第一层;
②把第一层中的各元素进行如下处理:奇数项值不变,偶数项的值更新为自己与自己前一项的和,将更新后的数组元素看作第二层;
③把第二层中的各元素,按上述方法进行同样操作,更新后的数组元素看作第三层;
④以此类推,直到当前层中仅有一项为止。
例如x=11时,转换过程如图所示:

借助数组c,可快速计算出数组a中前x项的和.例如,数组a中前11项的和,可由表达式c(11)+c(10)+c(8)得到.表达式具体分析过程如下:
② 表达式第一项为c(11);
②将下标11转换成二进制数1011,计算该二进制数最右边的“1”所对应的权值,再用11减去此权值得到10,即表达式第二项为c(10);
③按上述方法继续操作,直到计算结果等于0为止。
小龙依据上述方法设计了如下vb程序.请回答下列问题:
(1)计算数组a中前22项和的表达式为__________________(填写表达式,如c(11)+c(10)+c(8))。
(2)请在划线处填入合适的代码。
Dim n As Integer
Dim a(1 To 1000) As Long, c(1 To 1000) As Long
Private Sub Form_Load()
'读取n个数据,并存储到数组a中(代码略)
End SubPrivate Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, space As Integer
For i = 1 To n
c(i) = a(i)
Next i
k = 2 '当前层第一个偶数项的位置
space = 1 '当前层偶数项与前一项的间距
Do While k <= n
For i = k To n Step k
c(i) = c(i) + c(i - space)
Next i
k = k * 2
①______________________
Loop
End Sub
Private Sub Command2_Click()
Dim x As Integer, sum As Long
x = Val(Text1.Text): sum = 0
Do While x <> 0
sum = sum + c(x)②_________________
Loop
Text2.Text = Str(sum)
End SubFunction lowbit(x As Integer) As Integer
Dim temp As Integer
temp = x: lowbit = 1
Do While ③_______________'
lowbit = lowbit * 2temp = temp \ 2
Loop
End Function选择算法,解决问题。
在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。
分析下面的问题,请选择最合适的算法:__________(请用英文字母填写)
搬砖问题:100块砖,100人搬,一个男人搬4块,一个女人搬3块,两个小儿抬1块,要求一次全搬完。请问需男、女、小儿各多少人?
在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。
分析下面的问题,请选择最合适的算法:__________(请用英文字母填写)
A.解析法 | B.递归法 | C.穷举法 | D.排序法 |
选择算法,解决问题。
在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。
分析下面的问题,请选择最合适的算法:_____________(请用英文字母填写)
猴子吃桃问题:
小猴有一天摘了若干个桃子,他非常贪吃,当天就吃掉了一半还多一个;第二天接着吃剩下的桃子一半多一个;以后每天都是如此,到了第七天吃桃子时,却发现只剩下一个。请问,小猴那天一共摘了几个桃子?
在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。
分析下面的问题,请选择最合适的算法:_____________(请用英文字母填写)
A.解析法 | B.递归法 | C.穷举法 | D.排序法 |
小猴有一天摘了若干个桃子,他非常贪吃,当天就吃掉了一半还多一个;第二天接着吃剩下的桃子一半多一个;以后每天都是如此,到了第七天吃桃子时,却发现只剩下一个。请问,小猴那天一共摘了几个桃子?
已知一无序数组a中的元素为“90,15,40,72,65,32,81,6”,通过引入数组b存储数组a元素按升序排列时的下标,b数组元素为“8,2,4,6,5,3,7,1”,使得a(b(1)≤a(b(2))≤a(b(3))≤......≤a(b(n)),从而对a数组中的数据进行对分查找。部分程序如下:
i=1:j=8:c=0
key= Val(Textl. Text)
Do While i<=j
当文本框 Text1中输入的值为32时,程序运行结束后变量c的值为( )
i=1:j=8:c=0
key= Val(Textl. Text)
Do While i<=j
m=Int((i+j)/2)
t=b(m)
c=c+1
If a(t)=key Then p=t:Exit Do
If a(t)<key Then
i=m+1Else
j=m-1End If
Loop当文本框 Text1中输入的值为32时,程序运行结束后变量c的值为( )
A.1 | B.2 | C.3 | D.4 |
某学校高一年级共有500名学生,10个班,现需要根据某次考试的技术成绩从高到低进行考试号编排,考试号从100开始,如出现成绩一样的情况,则考试号按学生学号从大到小编排,如图所示。为此,小王编写了一个VB程序,程序功能如下:单击“读取数据”按钮 Command1,程序从数据库中读取学生的学号、成绩分别存储在数组xh、cj中,并在列表框List1输出;单击“编排”按钮Command2,程序进行处理,输出结果在列表框List2中。程序运行界面如图所示。
实现以上功能的VB程序如下,请回答下列问题:
(1)如原始数据里漏输了一个学生,已知该学生的学号为“20170240”,成绩为“99”,则增加该学生数据后,运行程序时,该学生的考试号为________。
(2)请在画线处填入合适的代码。
Const n=500
Dim xh(1 To n) As Integer '存放学生学号
Dim cj(1 To n) As Integer '存放学生成绩
Dim I,d,k,t,y As Integer
Private Sub Command1 Click()
'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
'代码略
End Sub
Private Sub Command2_Click()
For i=1 To n-1
t=ci(j):cj(j)=cj(j-1):cj(j-1)=t
t=xh(j):xh(j)=xh(j-1):xh(j-1)=t
End If
k=1
For i=2 To n
y=0
For______To(i-k+1) Step-1
If xh(j)>xh(j-1) Then
t=xh(j):xh(i)=xh(j-1):xh(j-1)=t
End If
Next j
Next d
k=1
List2.Clear
List2.AddItem " "+"学号"+" "+"技术成绩"+" "+"考试号"
For i=1 To n
List2.AddItem Str(xh(i))+" "+Str(cj(i))+" "+_____
Next i
End Sub
实现以上功能的VB程序如下,请回答下列问题:
(1)如原始数据里漏输了一个学生,已知该学生的学号为“20170240”,成绩为“99”,则增加该学生数据后,运行程序时,该学生的考试号为________。
(2)请在画线处填入合适的代码。
Const n=500
Dim xh(1 To n) As Integer '存放学生学号
Dim cj(1 To n) As Integer '存放学生成绩
Dim I,d,k,t,y As Integer
Private Sub Command1 Click()
'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
'代码略
End Sub
Private Sub Command2_Click()
For i=1 To n-1
For j=n To i+1 Step-1
If c(j)>cj(j-1) Thent=ci(j):cj(j)=cj(j-1):cj(j-1)=t
t=xh(j):xh(j)=xh(j-1):xh(j-1)=t
End If
Next j
Next ik=1
For i=2 To n
If______Then
k=k+1y=0
Else
y=1End If
If (y=l And k> 1) Or (i=n And k> 1) Then
For d=i-k To i-2For______To(i-k+1) Step-1
If xh(j)>xh(j-1) Then
t=xh(j):xh(i)=xh(j-1):xh(j-1)=t
End If
Next j
Next d
k=1
End If
Next iList2.Clear
List2.AddItem " "+"学号"+" "+"技术成绩"+" "+"考试号"
For i=1 To n
List2.AddItem Str(xh(i))+" "+Str(cj(i))+" "+_____
Next i
End Sub