第1题
窗体的事件过程如下:
Private Sub Form MouseDown(Button As Integer ,Shift As integer,X As Single,Y As Single)
If Shift = 6 And Button = 2
Then MsgBox "Hello World."
End lf
End Sub
程序运行后,要在窗体消息框中显示"Hello World.",在窗体上应执行的操作是(同时按下 Ctr、Alt 键和鼠标右键)。
鼠标事件MouseDown中的Button参数用于判断鼠标操作的是左中右哪个键,可以分别用符号常量acLeftButton(左键1)、acRightButon(右键2)和acMiddleButton(中键4)来比较,本题中的if语句中条件语句Button=2,如果条件成立,那么应该按下鼠标右键;Shift参数用于判断鼠标操作的同时,键盘控制键的操作,可以分别用符号常量acAltMask (Shift键1)、acAItMask(ctrl键2)和acAItMask(AIt键4)来比较,本题中的if语句中条件语句Shift=6,如果条件成立,那么应该按下acAltMask(ctrl键2)和acAItMask(Alt键4)
第2题
假设有选课成绩表score(学号,课程号,成绩等),查询所选课程在两门以上(含两门)并且所选的课程成绩都在90分以上(含90分)的学号列表,正确的是
SELECT score.学号
FROM score WHERE score.学号 Not In(select 学号 from score where 成绩 < 90)
GROUP BY score.学号
HAVING Count(score.[学号]) >= 2
SELECT语句的一般格式为:
SELECT[ALL | DISTINCT | TOP n]*|<字段列表>[,<表达式>AS<标识符>]
FROM<表名1>[,<表名2>]...
[WHERE<条件表达式>]
[GROUP BY<字段名>[HAVING<条件表达式>]]
[ORDER BY<字段名>[ASC | DESC]];
第3题
假设数据库中有学生信息表 stud(sno,sname,ssex)其中 ssex 字段已建索引,要输出最后一名男同学的信息,程序空白处应填写的语句是
Private Sub Form Load()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.ActiveConnection ="Provider=Microsoft.Jet.OLEDB.4.0;"&"Data Source= e:\考试中心教程\教学管理.mdb;"
rs.CursorType = adOpenKeysetrs
rs.LockType = adLockOptimistic
rs.Index="ssex"
rs.Open "stud",,,,adCmdTableDirect
__________
Debug.Print rs("sno "), rs("sname "), rs("ssex ")
rs.Close
Set rs = Nothing
End Sub
DAO的Seek成员函数是在表类型记录集中基于表索引进行搜索记录,Find成员函数是在动态集类型或快照类型记录集中进行搜索记录。因为本题中性别ssex字段已建索引,因此采用Seek成员函数。AdSeekfirstEQ查找等于关键值的第一个关键字,AdseekLastEQ查找等于关键值的最后一个关键字。
第4题
窗体中有文本框Text1、Text2和Text3。运行程序时,输入整数m和n(n>0),单击按钮Command1计算下列表达式的值:
S
U
M
=
m
−
(
m
+
1
)
/
2
+
(
m
+
2
)
/
3
−
(
m
+
3
)
/
4
+
.
.
.
+
(
−
1
)
n
+
1
(
m
+
n
−
1
)
/
n
SUM=m-(m+1)/2+(m+2)/3-(m+3)/4+...+(-1)^{n+1}(m+n-1)/n
SUM=m−(m+1)/2+(m+2)/3−(m+3)/4+...+(−1)n+1(m+n−1)/n
在Text3给出结果,事件代码如下:
Private Sub Command1_Click()
Dim sum As Double
m = Val(me!Text1)
n = Val(me!Text2)
sum = 0
For k = 1 to n
sum = sum +【】/ k
Next k
Me!text3 = sum
End Sub
程序【】处应填写的语句是:llf(kMod2 = 0 , -(m + k - 1) , (m + k - 1))
窗体中有文本框Text1、Text2和Text3。运行程序时,输入整数m和n(n>0),单击按钮Command1计算下列表达式的值:
S
U
M
=
m
+
(
m
−
1
)
/
2
+
(
m
+
2
)
/
3
+
(
m
−
3
)
/
4
+
.
.
.
+
(
m
+
(
−
1
)
n
+
1
(
n
−
1
)
)
/
n
SUM=m+(m-1)/2+(m+2)/3+(m-3)/4+...+(m+(-1)^{n+1}(n-1))/n
SUM=m+(m−1)/2+(m+2)/3+(m−3)/4+...+(m+(−1)n+1(n−1))/n
在Text3给出结果,事件代码如下:
Private Sub Command1_Click()
Dim sum As Double
m = Val(me!Text1)
n = Val(me!Text2)
sum = 0
For k = 1 to n
sum = sum + (【】)/ k
Next k
Me!text3 = sum
End Sub
程序【】处应填写的语句是:m + llf(kMod2 = 0 , -k + 1 , k - 1)
窗体中有文本框Text1、Text2和Text3。运行程序时,输入整数m和n(n>0),单击按钮Command1计算下列表达式的值:
S
u
m
=
m
−
(
m
+
1
)
+
(
m
+
2
)
−
(
m
+
3
)
+
.
.
.
+
(
−
1
)
n
+
1
(
m
+
n
−
1
)
Sum=m-(m+1)+(m+2)-(m+3)+...+(-1)^{n+1}(m+n-1)
Sum=m−(m+1)+(m+2)−(m+3)+...+(−1)n+1(m+n−1)
Text3给出结果。事件代码如下:
Private Sub Command1_Click()
m = val(me!text1)
n = val(me!text2)
sum = 0
For k = 1 to n
sum = sum + 【】
Next k
Me!text3 = sum
End
程序【】处应填写的语句是:llf(kMod2 = 0 , -(m + k - 1) , ( m + k - 1))
窗体中有文本框Text1、Text2和Text3。运行程序时,输入整数m和n(n>0),单击"计算"按钮Command1计算下列表达式的值:
S
u
m
=
m
−
2
(
m
+
1
)
+
3
(
m
+
2
)
−
4
(
m
+
3
)
+
.
.
.
+
(
−
1
)
n
+
1
n
(
m
+
n
−
1
)
Sum=m-2(m+1)+3(m+2)-4(m+3)+...+(-1)^{n+1} n(m+n-1)
Sum=m−2(m+1)+3(m+2)−4(m+3)+...+(−1)n+1n(m+n−1)
Text3给出结果。事件代码如下:
第5题
窗体中有文本框Text1。运行程序,输入大于0的整数m,单击按钮Command1,程序显示由星号组成的高度和上底均为m的等腰梯形。事件代码如下:
Private Sub Command1_Click()
m= Val(Me!Text1)
result = ""
For k = 1 To m
For n = 1 To【】
if n < m - k + 1 Then
result = result & " "
Else
result = result & "*"
End lf
Next n
result = result + Chr(13)
Next k
MsgBox result,,"运行结果”
End Sub
程序【 】处应填写的语句是:k + 2 * m - 2
窗体中有文本框Text1。运行程序,输入大于0的整数m,单击按钮Command1,程序显示由星号组成的高度为m的等腰三角形。事件代码如下:
Private Sub Command1_Click()
Dim result As String
m = Val(Me!Text1)
result = ""
For k = 1 To m
For n = 1 To k + m - 1
if n < m - k + 1 Then
result = result & " "
Else
result = result & "*"
End lf
Next n
result = result + Chr(13)
Next k
MsgBox result,,"运行结果
End Sub
窗体中有文本框Text1。运行程序,输入大于0的整数m,单击按钮Command1,程序显示由星号组成的高度和边长均为m的平行四边形。事件代码如下:
Private Sub Command1_Click()
m = Val(Me!Text1)
result = ""
For k = 1 To m
For n = 1 To 【】
if n < m - k + 1 Then
result = result & ""
Else
result = result & " *"
End lf
Next n
result = result + Chr(13)
Next k
MsgBox result,,"运行结果”
End Sub
程序【 】处应填写的语句是:2 * m - k
第6题
窗体中有文本框为Text1和Text2。运行程序,在Text1中输入整数m(m>0),单击"运行"按钮Command1,将m分解为质因子之积,并在Text2中给出结果。例如,18=2*3*3,输出结果为"2,3,3,“;28=2*2*7,输出结果为"2,2,7,”。事件代码如下:
Private Sub Command1_Click()
m= Val(Me!Text1)
resule = ""
k = 2
Do While m > 1
if m Mod k = 0 Then
result = result & k & ","
m = m / k
Else
【】
End lf
Loop
Me!Text2 = result
End Sub
程序【 】处应填写的语句是:k = k + 1
第7题
窗体中有文本框Text1、Text2和Text3。运行时在Text1中输入整数m,在Text2中输入整数n(m<n),单击按钮Command1,计算m到n之间(含m和n)全部奇数之和,然后在Text3中输出结果。事件代码如下:
Private Sub Command1_Click()
m = Val(Me!Text1)
n = Val(Me!Text2)
sum = 0
For【 】To n Step 2
sum = sum + k
Next k
Me!Text3 = sum
End Sub
程序【 】处应填写的语句是:k = llf(m Mod 2 = 1 , m , m + 1)
窗体中有文本框Text1、Text2和Text3。运行时在Text1中输入整数m,在Text2中输入整数n(m<n),单击按钮Command1,计算m到n之间(含m和n)全部偶数之和,然后在Text3中输出结果。事件代码如下:
Private Sub Command1_Click()
m = Val(Me!Text1)
n = Val(Me!Text2)
sum = 0
For【 】To n Step 2
sum = sum + k
Next k
Me!Text3 = sum
End Sub
程序【 】处应填写的语句是:k = llf(m Mod 2 = 0 , m , m + 1)
第8题
在窗体中有文本框Text1和Text2。运行程序时,在Text1中输入整数m(m>0),单击Command1"运行“按钮,程序能够求出m的全部除1之外的因子,并使用Text2显示结果,例如,18的全部因子有2,3,6,9,18,输出结果为"2,3,6,9,18,“;28的全部因子为2,4,7,14,28,输出结果为"2,4,7,14,28”。事件代码如下:
Private Sub Command1_Click()
m = Val(Me!Text1)
result = ""
k = 2
Do
if m Mod k = 0 Then result = result & k & ","
K = k + 1
Loop Until【】
Me!Text2 = result
End Sub
程序【 】处应填写的语句是:k > m
在窗体中有文本框Text1和Text2。运行程序时,在Text1中输入整数m(m>0),单击Command1"运行“按钮,程序能够求出m的全部除1和自身之外的因子,例如,例如,20的因子有2,4,5,10,输出结果为"2,4,5,10,";16的因子为2,4,8,输出结果为"2,4,8,”。事件代码如下:
Private Sub Command1 Click()
m = Val(Me!Text1)
resule = ""
k = 2
Do
if m Mod k = 0 Then result = result & k & ","
k = k + 1
Loop While【】
Me!Text2 = result
End Sub
程序【 】处应填写的语句是:k < m
区别:Loop While和Loop Until
Do While当判断条件为真时,执行循环体,而Do Until是当判断为假时,执行循环体。
第9题
窗体中有文本框Text1和标签Label1,运行程序,输入大于0的整数m,单击按钮Command1,程序判断m是否为素数,若是素数,则Label1显示"m 是素数",否则显示”m 是合数"。事件代码如下:
Private Sub Command1_Click()
m = Val(Me!Text1)
result = m & "是素数"
k = 2
Do While k <= m / 2
if m Mod k = 0 Then
result = m & "是合数"
End lf
k = k + 1
Loop
Me!lLabel1.Caption = result
End Sub
程序【 】处应填写的语句是:Exit Do
DO…while退出时,用Exit Do。
第10题
(最大公约数)在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码:
Private Sub Command1 Click()
MsgBox f(24,18)
End Sub
Public Function f(m As Integer, n As Integer)As Integer
Do While m <> n
Do While m > n
m = m - n
Loop
Do While m < n
n = n - m
Loop
Loop
f = m
End Function
窗体打开运行后,单击命令按钮,则消息框的输出结果是6
第11题
(斐波拉契序列)运行下列程序,结果是13。
Private Sub Command32_Click()
f0 = 1 : f1 = 1 : k = 1
Do While k <= 5
f = f0 + f1
f0 = f1
f1 = f
k = k + 1
Loop
MsgBox "f="& f
End Sub
第12题
有如下事件程序,运行该程序后输出结果是x=1,y=0。
Private Sub Command33_Click()
Dim x As Integer, y As Integer
x = 1 : y = 0
Do Until y <= 25
y = y + x * x
x = x + 1
Loop
MsgBox "x=" & x & ",y=" & y
End Sub
Do Until循环采用的是先判断条件后执行循环体的做法,如果条件为True,则循环体一次都不执行,否则进入循环体执行。
运行下列程序,输入数据8、9、3、0后,窗体中显示结果是20。
Private Sub Form_click()
Dim sum As Integer, m As Integer
sum = 0
Do
m = InputBox("输入m")
sum = sum + m
Loop Until m = 0
MsgBox sum
End Sub
通过Do循环结构对键盘输入的数据进行累加,循环结束条件是输入的字符为0。
第13题
在窗体上有一个命令按钮Command1,编写事件代码如下:
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 12 : y = 32
Call Proc(x,y)
Debug.Print x;y
End Sub
Public Sub Proc(n As Integer, ByVal m As Integer)
n = n Mod 10
m = m Mod 10
End Sub
打开窗体运行后,单击命令按钮,立即窗口上输出的结果是2 32。
参数有两种传递方式:传址传递ByRef(形参的变化将会返回到实参)和传值传递BVal(不因形参的变化而变化)。如果没有说明传递类型,则默认为传址传递。
第14题
窗体中有命令按钮run34,对应的事件代码如下:
Private Sub run34_Enter()
Dim num As Integer, a As Integer, b As Integer, i As Integer
For i = 1 To 10
num = InputBox("请输入数据:","输入”)
If Int(num / 2) = num / 2
Then
a = a + 1
Else
b = b + 1
End
If
Next i
MsgBox("运行结果:a = "& Str(a)&",b = "& Str(b))
End Sub
运行以上事件过程,所完成的功能是对输入的10个数据分别统计奇数和偶数的个数。
第15题
在窗体中有一个命令按钮Command1,编写事件代码如下:
Private Sub Command1_Click()
Dim s As Integer
s = P(1) + P(2) + P(3) + P(4)
debug.Print s
End Sub
Public Function P(N As Integer)
Dim Sum As Integer
Sum = 0
For i = 1 To N
Sum = Sum + i
Next i
P = Sum
End Function
打开窗体运行后,单击命令按钮,输出结果是20。
第16题
窗体中有文本框Text1、Text2和Text3,运行时在Text1中输入整数m,在Text2中输入整数n(m<n),单击按钮Command1统计m到n之间(含m和n)个位为9的整数数量,然后在Text3中输出结果。事件代码如下:
Private Sub Command1_Click()
m = Val(Me!Text1)
n = Val(Me!Text2)
count0 = 0
For k = m To n
count0 = 【】
Next k
Me!Text3 = count0
End Sub
程序【 】处应填写的语句是:count0 + llf(k Mod 9 = 0, 1, 0)
第17题
下列程序的输出结果是35
Private Sub Command3_Click()
t = 0
m = 1
sum = 0
Do
t = t + m
sum = sum + t
m = m + 1
Loop While m <= 5
MsgBox "Sum=" & sum
End Sub
第18题
下列过程的功能是:从键盘输入一个大于2的整数,输出小于该整数的最大质数。例如,输入20,则输出19,输入10,则输出7。
Private Sub Command1_Click()
Dim x, k As Integer, flag As Boolean
x = Val(lnputBox("请输入一个大于2的整数"))
flag = True
Do While x > 2
For k = 2 To Sqr(x)
lf x Mod k = 0 Then
flag = False
Exit For
End lf
Next k
lf Not flag Then
【】
flag = True
Else
Exit Do
End lf
Loop
MsgBox x
End Sub
为实现指定功能,程序【】处应填写的语句是x = x - 1。
第19题
下列过程的功能是:将输入的整数分解为质数的乘积。例如,输入24,则输出2,2,2,3,,输入100,则输出2,2,5,5。
Private Sub command1_Click()
x = Val(lnputBox("请输入一个整数”))
out$ = ""
y =2
Do While y <=x
If x Mod y = 0 Then
out$ = out$ &y& ","
x = x / y
Else
【】
End lf
Loop
MsgBox out$
End Sub
为实现指定功能,程序【 】处应填写的语句是y = y + 1。
第20题
过程 WriteFile 的功能是,向指定文件 f 中追加4个数据。代码如下:
Sub WriteFile(fil As String)
Dim nfile As Long
nfile = FreeFile
num = 1
Open fil 【】 As nfile
Do While num < 5
Write #nfile , num * 1000
num = num + 1
Loop
Close nfile
End Sub
为实现指定功能,在【】中需要填写的语句是For Append Access Write
第21题
数据库有表“teacher”,包括“编号”、“姓名”、“性别”和“职称”4个字段。下面程序的功能是:通过窗体向“teacher”表中添加记录。对应“编号”、“姓名”、“性别”和“职称”的文本框名称分别为:tNo、tName、tSex和 tTitles。当单击窗体上“增加”命令按钮“Command1”时,先判断编号是否重复,若不重复,则向表中添加记录;若编号重复,则给出提示信息。
第22题
若有函数代码如下:
Sub File(fil As String
Dim nfile As Long
Dim strN As Integer
nfile = FreeFile
Open fil For input Access Read As nfil
eDo Until EOF(nfile)
Input #nfile, strN
MsgBox strN
Loop
Close nfile
End Sub
该函数的功能是打开指定文件fil,读入文件中的全部数据,并在消息框中逐个显示全部数据
第23题
已知,成绩表中有字段英语、数学、政治和总分,字段英语、数学和政治的正常取值范围为-1~100,其中-1代表缺考,非-1表示实际得分;字段总分的计算公式为:英语+数学+政治,对于缺考科目计算总分时按0分计入,若三科均缺考则总分记为-1,实现上述功能的代码如下:
Sub sumsub()
Dim ws As DAO.Workspace
Dim sb As DAO.Database
Dim rs As DAO.Recordset
Dim fd As DAO.Field
Set db= CurrentDb()
Set rs= db.OpenRecordset("成绩表")
Set fd = rs.Fields("总分")
Set yy=rs.Fields("英语")
Set sx=rs.Fields("数学")
Set zz = rs.Fields("政治")
Do While Not rs.EOF
rs.Edit
fd=【①】
If【② 】Then
fd=-1
End lf
rs.Update
rs.MoveNext
Loop
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Sub
在程序中【①】和【②】内应分别填写的是
【①】llf(yy= -1,0, yy) + llf(sx=-1,0,sx) + llf(zz=-1,0,zz)
【②】fd = -3