(加试题)王老师在使用 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
要该程序实现此功能,横线处的代码为(  )
A.x(x)*(x-1)B.fx(x)*xC.fx(x-1)*xD.fx(x-1)*(x-1)
当前题号:1 | 题型:选择题 | 难度:0.99
下面程序的功能是:找出10以内的奇数中能被3整除的正整数,并将它们累加起来。为了实现这一目标,请完善下列程序:
x=0
For i=1 to 10 step ____
If _______________________ then x=x+i
Next i
当前题号:2 | 题型:None | 难度:0.99
有如下 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 的值为(   )
A.247B.27C.72D.742
当前题号:3 | 题型:选择题 | 难度:0.99
某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中显示的是( )
A.18B.35C.63D.123
当前题号:4 | 题型:选择题 | 难度:0.99
对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()

'读取n个数据,并存储到数组a中(代码略)

End Sub
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()

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 Sub
Function lowbit(x As Integer) As Integer

Dim temp As Integer

temp = x: lowbit = 1

Do While ③_______________'

lowbit = lowbit * 2
temp = temp \ 2

Loop

End Function
当前题号:5 | 题型:None | 难度:0.99
选择算法,解决问题。
在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。
分析下面的问题,请选择最合适的算法:__________(请用英文字母填写)
A.解析法B.递归法C.穷举法D.排序法
搬砖问题:100块砖,100人搬,一个男人搬4块,一个女人搬3块,两个小儿抬1块,要求一次全搬完。请问需男、女、小儿各多少人?
当前题号:6 | 题型:填空题 | 难度:0.99
选择算法,解决问题。
在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。
分析下面的问题,请选择最合适的算法:_____________(请用英文字母填写)
A.解析法B.递归法C.穷举法D.排序法
猴子吃桃问题:
小猴有一天摘了若干个桃子,他非常贪吃,当天就吃掉了一半还多一个;第二天接着吃剩下的桃子一半多一个;以后每天都是如此,到了第七天吃桃子时,却发现只剩下一个。请问,小猴那天一共摘了几个桃子?
当前题号:7 | 题型:填空题 | 难度:0.99
已知一无序数组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

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+1

Else

j=m-1

End If

Loop
当文本框 Text1中输入的值为32时,程序运行结束后变量c的值为(   )
A.1B.2C.3D.4
当前题号:8 | 题型:选择题 | 难度:0.99
某学校高一年级共有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

For j=n To i+1 Step-1

If c(j)>cj(j-1) Then
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

 

Next j

Next i
k=1
For i=2 To n

If______Then

k=k+1
y=0

Else

y=1

End If

If (y=l And k> 1) Or (i=n And k> 1) Then

For d=i-k To i-2
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

End If

Next i
List2.Clear
List2.AddItem " "+"学号"+"  "+"技术成绩"+"  "+"考试号"
For i=1 To n
List2.AddItem Str(xh(i))+"  "+Str(cj(i))+"  "+_____
Next i
End Sub
当前题号:9 | 题型:None | 难度:0.99