下面程序的功能是:找出10以内的奇数中能被3整除的正整数,并将它们累加起来。为了实现这一目标,请完善下列程序:
x=0
For i=1 to 10 step ____
If _______________________ then x=x+i
Next i
当前题号:1 | 题型:None | 难度: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
当前题号:2 | 题型:None | 难度: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
当前题号:3 | 题型:None | 难度:0.99
某查找算法的VB程序段如下:
k= Val(Text1.Text)
i=1:j=6:Label1.Caption="":f=False
Do While i<=j And Not f
m=(i+j)\2
If a(m)=k Then f= True
If a(m)>a(i) Then

If a(i)<=k And k<a(m)Then j=m-1 Else i=i+1

Else

If a(m)<k And k<=a(j)Then i=i+1 Else j=j-1

End If
Label1 Caption=Label1 Caption+ Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输人的值为35,执行该程序段,标签 Label1中显示的值是(   )
A.72  35B.24  35
C.72  24  35D.72  24  24  35
当前题号:4 | 题型:选择题 | 难度:0.99
趣味数学题:n的阶乘n!=1*2*3*4*5*…*n,当n≥5时,其结果末尾必然包含多个0,求n!(5≤n≤32 726)末尾包含0的个数。
算法思路:n较大时,n!的值将超出long类型范围,求出n!的结果再数0的个数不现实。那么末尾的0到底是从哪里来的?每一个因子5与任一偶数相乘就会产生一个0。所以末尾有多少0是由因子5的个数决定的,求出因子5的个数即是末尾0的个数。程序运行界面和代码如图所示。

(1)为使窗体加载时,窗体标题栏自动显示为“第14题程序”,则可以在___________过程(填写过程名)中添加代码:Form1. Caption="第14题程序"。
(2)实现上述算法的VB程序如下,请补充程序中画线处的代码。
Private Sub Command1_Click()
Dim n As Integer
n=Val(Textl. Text)
i=1
Do While___________
s=s+n\5^i
i=i+1
Loop
List1. AddItem Str(n)+"!末尾包含0的个数:"+_______
End sub
(3)根据上述算法,2018!末尾包含0的个数是个________个。
当前题号:5 | 题型:None | 难度:0.99
星期天,小龙来到动物园游玩,园内共有N个景点(可在10个以上),每个景点都有一个标号,标号为1至N。现在只知道每个景点有一条路连接下一个景点。小龙想知道,根据这些道路信息,从其中一个景点出发,最后再回到出发景点,最多能游玩多少个景点。
例如,共有N=5个景点,每个景点连接的下一个景点分别是2,4,5,5,2。
景点号
1
2
3
4
5
下一景点号
2
4
5
5
2
 
则他可以从2号景点出发,最多可以游玩2号、4号、5号三个景点。

程序代码如下:
Private Sub Command1_Click()

Dim a(1 To 100) As Integer, d(1 To 100) As Integer

Dim jd As String, m As String, c As Integer, i As Integer

Dim s As Integer, p As Integer, k As Integer, ans As Integer

jd = Text1.Text + ","

s = 0: c = 0

For i = 1 To Len(jd)

m = Mid(jd, i, 1)
If m <> "," Then
      
Else
c = c + 1: a(c) = s: s = 0
End If

Next i

ans = 0: k = 0

For i = 1 To c

For k = 1 To c
d(k) = 0
Next k
If d(i) = 0 Then
p = i
Do While p <= c
If d(p) = 0 Then
k = k + 1: d(p) = k
Else
        
If y > ans Then ans = y
k = 0
Exit Do
End If

Loop
End If

Next i

Text2.Text = Str(ans)

End Sub
(1)要使程序运行时,Form1的BackColor属性值为黑色,以下代码正确的是______(单选,填字母)。
A.Private Sub Form_Load()

Form1. BackColor = RGB(255, 255,255)

End Sub
B.Private Sub Form_Load()
Form1.BackColor = RGB(0, 0, 0)
End Sub
C.Private Sub Form1_Load()

orm1.BackColor = RGB(255,255,255)

End Sub
D.Private Sub Form1_Load()
Form1.BackColor = RGB(0, 0, 0)
End Sub
 
(2)若有7个景点,且每个景点的连接情况为:6,3,7,2,7,5,4,那么小龙最多可以游玩的景点数是__________。
(3)请把划线处的代码补充完整:
①__________
②__________
(4)程序加框处代码有错,请改正:_________
当前题号:6 | 题型:None | 难度:0.99
方格填数。在n个连续的方格内填写字母A或B但相邻两格内不能都填B。求所有可能的填写方案数。例如,n=3,可能的方案有AAA、AAB、ABA、BAA、BAB等5种
以下VB程序用于解决这个问题,在文本框Text1输入n的值,点击“求解”按钮 command1后,在列表框List1中输出所有方案。运行界面如下图所示:
提示:若用0代表A,用1代表B,那么每一种方案都对应一个n位的二进制数。

(1)要使command1按钮上显示的文本改为“求解”,可在其属性窗口中将_____(填属性名)属性的属性值改为“求解”。
实现上述功能的程序如下:
Private Sub Command1_Click ()

Dim n As Integer, m As Integer, k As Integer

Dim flag As **

Dim i As Integer, j As Integer

Dim a(1 To 1000) As Integer

   

List1. Clear  '清空文本框list1

s = ""

For i =0 To

'每一种方案对应一个n位的二进制数,枚举i对应的方案是否符合要求
m =i
For j=1 To n
a(j)= m Mod 2
 
Next j
flag =True
For 
If a(k-1)= a(k) And a(k)= 1 Then
flag = False
End IF
Next k
If flag Then
For k= 1 To n
If a (k) = 1 Then s = "B" + s Else s = "A" + s
Next k
List1. AddItem s
End If
s = ""

Next i

End Sub
(2)阅读代码,变量flag的数据类型应定义为_____
(3)加框处代码有错,请改正:__________
(4)请在划线处填入合适的代码:
①__________
②__________
③__________ 
当前题号:7 | 题型:None | 难度:0.99
分析解决问题。
有一张单据,编号为四位数,号码为:8□□0.中间两位被污浊看不出来。已知该单据能被23和37整除,请用编程求出该单据号码。
(算法设计)
设百位数字为x,十位数字为y;x和y的范围都是0到9。
4位数:8xy0=8*1000+x*100+y*10
列举()()里的两个数字的所有可能情况:
00,01,02,03,04,05,06,07,08,09
10,11,12,13,14,15,16,17,18,19
……
90,91,92,93,94,95,96,97,98,99
逐一判断找出符合条件的数字。
(参考代码)
Dim  x  as long
Dim  y  as long
Dim  n  as long
For x=0  to  9
For y=0  to  9
n=8*1000+x*100+y*10
If   then
Print n
End if
Next y
Next x
根据上述回答下列问题
(1)解决该问题采用的算法是:___________(填:解析法/穷举法/排序法/递归法)
(2)根据题意,程序中空白处应填写:______(填写字母:A/B/C/D)
A.n mod 23 =0 or n mod 37 =0
B.n\23=0 and n\37=0
C.n\23=0 or n\37=0
D.n mod 23 =0 and n mod 37 =0
(3)根据算法设计,参考程序中循环体中的语句“n=s*1000+x*100+y*10”,一共重复执行了_________次。
当前题号:8 | 题型:None | 难度:0.99
(加试题)用一个6*5矩阵表示地图,分别用a数组元素表示,第1行从左到右为a(1)到a(6),依次类推,右下角为a(30)。其中数字0表示不通,数字1I表示畅通。现在要从左上角到右下角寻找一条畅通的路径。线路规则如F:
•路线每个位置只能向右或向下
•任何一个岔口优先向右走,右侧不通再向下走
•一条路线中每个位置只能走一次,不能重复
算法思路:探路过程中,记录每个位置坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧不通;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下角为止,最后输出整体线路坐标。
实现算法的程序如下,运行结果如图所示。
回答下列问题:
(1)根据规则,如图迷宫矩阵正确路线的第6个位置是a数组的第_________个元素(填数字)

(2)在程序划线处填上合适代码,使程序完整。
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer,j As Integer,pos As Integer
Dim cha(1 To 10)As Integer'记录一条路线中各个岔路口
Dim lu(1 To 10) As Integer’记录路线经过的位置
pos=1:j=0:lu(1)=1:i=1
Do While i <=9‘第1个和最后1个固定,中间有9个需要路过的路径点

If pos Mod 6<>0 And a(pos+1)=1 Then' 向右畅通

If pos+6 <=30 and a(pos+6)=1 Then‘记录岔路口
j=j+1
_____________
End If
pos=pos+1
i=i+1
1u(i)=pos
Else If pos+6 <=30 And a(pos+6)=1 Then’向下畅通
pos=pos+6
i=i+1
lu(i)=pos
Else’坐标退回到上一个岔路口
If j=0 Then Exit Do
Do While lu(i)<>cha(j)
_____________
Loop
a(cha(j)+1)=0’标记此路口右侧不可用
_____________
j=j-1
End If;

Loop

If j=0 Then

Text1.Text="没有畅通道路"

Else

For i=1 To 10
Text1.Text=Text1.Text+Str(lu(i))
Next i

End If

End Sub
Private Sub Form_Load()

‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略

End Sub
当前题号:9 | 题型:填空题 | 难度:0.99
以下两个VB程序段,其中变量m和n为正整数,下列说法不正确的是(   )
程序1:
If m<n Then

t=m:m=n:n=t

End If
Do While m Mod n<>0
r=m Mod n
m=n
n=r
Loop
Text1.Text=Str(n)
程序:
2n2
Do Whife m
程序2
Do While m<>n
Do While m>n
m=m-n
Loop
Do While n>m
n=n-m
Loop
Loop
Textl.Text=Str(n)
 
A.“程序1”和“程序2”中的代码实现相同的功能
B.若变量m和n的值为25,35,则“程序1”代码运行后文本框Text1显示“5”
C.“程序2”中的输出语句改为Textl.Text=Str(m),会影响文本框Textl显示的内容
D.若变量m和n的值为11,7,则“程序2”代码运行后文本框Text1显示“1”
当前题号:10 | 题型:选择题 | 难度:0.99