- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 程序设计语言
- 循环结构
- 分支结构
- 顺序结构
- 类、对象、属性、方法、事件和事件处理的概念
- VB应用程序的界面设计与调试
- 基本数据类型
- 常量、变量、数组
- 常用的标准函数
- 基本运算及表达式
- 赋值语句
- 选择语句
- + 循环语句
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
x=0
For i=1 to 10 step ____
If _______________________ then x=x+i
Next i
将数组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实现以上功能的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
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
ElseIf a(m)<k And k<=a(j)Then i=i+1 Else j=j-1
End IfLabel1 Caption=Label1 Caption+ Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输人的值为35,执行该程序段,标签 Label1中显示的值是( )
A.72 35 | B.24 35 |
C.72 24 35 | D.72 24 24 35 |
算法思路: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的个数是个________个。
例如,共有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 cd(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属性值为黑色,以下代码正确的是______(单选,填字母)。
End Sub |
(2)若有7个景点,且每个景点的连接情况为:6,3,7,2,7,5,4,那么小龙最多可以游玩的景点数是__________。
(3)请把划线处的代码补充完整:
①__________
②__________
(4)程序加框处代码有错,请改正:_________
以下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)请在划线处填入合适的代码:
①__________
②__________
③__________
有一张单据,编号为四位数,号码为: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 |
•路线每个位置只能向右或向下
•任何一个岔口优先向右走,右侧不通再向下走
•一条路线中每个位置只能走一次,不能重复
算法思路:探路过程中,记录每个位置坐标到数组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 10Text1.Text=Text1.Text+Str(lu(i))
Next i
End If
End SubPrivate Sub Form_Load()
‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略
End Sub程序1: If m<n Then t=m:m=n:n=t End IfDo 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” |