第二部分 Visual Basic 程序设计
(2001 年 秋季)
一、选择题
(用答题卡答题,答案依次填在21-30答题号内)
21. 窗口上有多个控件,在 Form_Activate() 事件过程添加___21___语句,就可确保每次运行程序时,都将光标定位在文本框Text上。
A. Text1.Text=""
|
B. Text1.SetFocus
|
C. Form1.SetFocus
|
D. Text1.Visible=True
|
22. 在程序中分别将变量Inta、Bl、St、D定义为整型、布尔形、字符串型和日期型,下列赋值语句在执行时会出错的是___22___。
A.Inta=4.6
|
B.Bl=#True#
|
C.St=5&123.5
|
D.D=#10/05/01#
|
23.代数表达式
对应的Visual Basic表达式是__23___。
A. Sqr((x+log(x))/(a+b))+exp(-2*t)+cos((x+y)/2)
B. Sqr(x+log(x))/(a+b)+exp(-2*t)+cos((x+y)/2)
C. Sqr((x+ln(x))/(a+b))+exp(-2t)+cos((x+y)/2)
D. Sqr((x+log(x))/(a+b))+exp(-2*t)+cos(x+y/2)
24. 以下有关变量作用域的说法中 ,正确的是___24___。
A. 只有在标准模块中用Public语句说明的变量才是全局变量
B. 在过程中不能使用Public语句说明全局变量
C. 在标准模块的通用声明处可用Private语句说明模块级变量
D.在窗体的通用声明处可用Private语句说明窗体级变量
25. 语句Print "5*20"输出的结果是___25___。
A. "5*20"
|
B. 出现错误信息
|
C. 5*20
|
D. 100
|
26. 下列不正确的变量名是___26___。
A. Form
|
B. Command
|
C. Text
|
D. Arry@
|
27. 若磁盘文件C:\Data1.dat不存在,下列打开文件语句中,会产生错误的是___27___。
A. Open "C:\Data1.dat" For Output As #1
B. Open "C:\Data1.dat" For Input As #2
C. Open "C:\Data1.dat" For Append As #3
D. Open "C:\Data1.dat" For Binary As #4
28. 改变目录列表框(DirListBox)控件的Path属性的途径可以有___28___。
①单击目录列表框某一项
②程序代码中改变目录列表框的Path属性值
③双击目录列表框某一项
④ 在程序中用ChDir命令设置当前工作目录
A. ①②
|
B. ②③
|
C. ②③④
|
D. ①②③④
|
29. 以下有关数组的说明中,错误的是___29___。
A. 根据数组说明的方式,可将数组分为动态数组和静态数组
B. 在过程中,不能用Private语句定义数组
C. 利用ReDim语句重新定维时,不得改变已经定义说明过的数组的数据类型
D. 数组重新定维后,原有的数组元素内容将不予保留
30. 窗体的Name属性为Frm1,在窗体模块通用声明处和过程Sub1中分别用Public K As Integer, Dim K As Integer声明了两个同名变量K,则在过程Sub1中要访问全局变量K,可采用___30___。
A. Frm1.K
|
B. Form.K
|
C. Form1.K
|
D. K
|
31. 名为sort的Sub子过程的形式参数为一数组,以下的定义语句中正确的是___31___。
A. Private Sub sort(A() As Integer)
B. Private Sub sort(A(10) As Integer)
C. Private Sub sort(ByVal A() As Integer)
D. Private Sub sort(A(,) As Integer)
32. 可以在___32___中,使用语句Public PubStr As String*20定义一个定长字符串。
A. 窗体模块
|
B. 标准模块
|
C. 类模块
|
D. 三者均可
|
33. 以下有关由多个窗体和标准模块组成的应用程序设计方法的叙述中,错误的是___33___。
A. 在缺省情况下,设计时的第一个窗体被指定为启动窗体
B. 通过人为设置,可指定任一窗体为启动窗体
C. 通过人为设置,可指定标准模块中的Main()过程为启动过程
D. 通过人为设置,可指定窗体模块中的Main()过程为启动过程
34. 在过程中由语句For I=N1 To N2 Step N3,在该循环体内有下列四条语句,其中___34___会影响循环执行的次数。
①N1=N1+I
|
②N2=N2+N3
|
③ I=I+N3
|
④N3=2*N3
|
35. 在窗体Form1上,有一个列表框控件List1,在窗体的Click事件中有如下代码:
Private Sub Form_Click()
Dim K As Integer
Dim entry As String, item As String
entry="EDCBA"
For k=Len(entry) To 1 Step -1
item=LCase(Mid(entry,k,1))&k
List1.AddItem item
Next k
End Sub
运行此程序,单击窗体后在窗体的列表框中显示的第四个列表项内容是___35___。
二、填空题
(请把答案填写在答题纸的相应答题号内,每个答题只占一行)
1. 执行下面的程序,在窗体上显示的输出结果的第一行是___
this is a book.
___,第二行结果是___
This Is A Book.
___。
Option Explicit
Private Sub Form_Click()
Dim s As String,i As Integer,flag As Boolean
s="THIS IS A BOOK."
s=LCase(s)
Print s
flag=True
For i=1 To Len(s)
If Mid(s,i,1)="" Then
flag=True
ElseIf flag Then
s=Left(s,i-1)&UCase(Mid(s,i,1))&Right(s,len(s)-i)
flag=False
End If
Next i
Print s
End Sub
2. 执行下面的程序,在窗体上显示的输出结果的第二行是
_4 9 13_
_,第三行结果是__
19.5
__。
OPtion Explicit
Dim a As Integer,b As Integer
Private Sub Form_Click()
Dim c As Integer
a=1
b=3
c=5
Print fun(c)
Print a,b,c
Print fun(c)
End Sub
Private Function fun(x As Integer)As Single
fun=a+b+x/2
a=a+b
b=a+x
x=b+a
End Function
3. 执行下面的程序,第一行输出结果是_
_18_
__,第二行输出结果是__
_30_
__。
Option Explicit
Private Sub Form_Click()
Dim M As Integer,N As Integer
M=1:N=2
Print M+N+Fun1(M,N)
M=2:N=1
Print Fun1(M,N)+Fun1(M,N)
End Sub
Private Function Fun1(X As Integer,Y As Integer)
X=X+Y
Y=X+3
Fun1=X+Y
End Function
4. 执行下面程序,在窗体上显示的输出结果的第二行是___
4 5 6
___,第五行是__
_9 8 7__
_,第六行是___
6 5 4
___。
Option Explicit
Private Sub Form_Click()
Dim a(3,3) As Integer, iAs Integer
Dim j As Integer,k As Inteher
For i=1 To 3
For j=1 To 3
a(i,j)=(i-1)*3+j
Print a(i,j);
Next j
Print
next i
print
k=(i-1)*3
For i=1 To 3
For j=1 To 3
a(i,j)=k
k=k-1
Print a(i,j);
Next j
Print
Next i
End Sub
5. 执行下面的程序,在窗体上显示的第一行输出结果是__
_1 3 5 7 9
__,第三行输出结果是___
4
_
__, FOrm_Click()事件过程中的第二个For--Next循环共执行了___
2
_
__次。
Option Explicit
Option Base 1
Private Sub Form_Click()
Dim a(5) As Integer,i As Integer,j As Integer
For i=1 To 5
a(i)=2*i-1
Print a(i)
Next i
Print
For j=1 To I-2
Call sub1(a(j),j)
Print j
Next j
End Sub
Public Sub Sub1(x As Integer,p As Integer)
If x-p<=2 Then
p=p+1
Else
p=p+2
End If
End Sub
6.下面程序的功能是统计随机产生的十个两位正整数中偶数于奇数的个数,并求出偶数与奇数各自的总和。
Option Explicit
Private Sub Form_Click()
Dim x As Integer, s1 As Integer,s2 As Integer
Dim n1 As Integer, n2 As Integer,i As Integer
Randomize
For i=1 To 10
x=Int(Rnd*90)+10
Print x
If _
_x mod 2=0_
__Then
n2=n2+1
s2=s2+x
Else
__
_n1=n1+1
___
s1=s1+x
End If
Next i
Print
Print "奇数个数=";n1,"偶数个数=";n2
end
7. 下面程序功能为:单击命令按纽Command1,找出100以内的所有约数之和为一个完全平方数的正整数,并按图中所示的格式将结果显示在图形框Picture1中。
Option Explicit
Private Sub Command1_Click()
Dim i As Integer,j As Integer
Dim F() As Integer,sum As Integer
For i=3 To 100
___
sum=0
___
If Fac(i,F,sum) Then
Picture1.Print i; ":";
FOr j=1 To UBound(F)-1
Picture1.Print F(J); "+";
Next J
Picture1.Print F(J); "="; sum; "="; Sqr(sum); "^2"
End If
Next i
End Sub
Private Function Fac(ByVal K As Integer,A() As Integer,sum As Integer) As Boolean
Dim N As Integer,J As Integer
For N=1 To K
If___
k mod n=0
___Then
J=J+1
__
_ReDim Preserve A(J)
___
A(J)=N
sum=sum+N
End If
Next N
If sum=__
_Int(Sqr(sum))^2
__Then Fac=True
End Function
8. C盘根目录下文件Data4.txt的内容是:2,4,6,8,10,1,3,5,7,9。下面程序的功能是将文件后半部分的奇数分别按序插入到前半部分的适当位置,得到的新数列是:1 2 3 4 5 6 7 8 9 10。(实现方法:第一次调整后的数列是:1 2 6 8 10 3 5 7 9第二次调整后的数列是:1 2 3 4 6 8 10 5 7 9)。
Option Explict
Private Sub Form_Click()
Dim A(10) As Integer,i As Integer,J As Integer
Open "c:\Data4.txt" For Input As #12
Do ___
while not Eof(12)
__
J=J+1
Input #12,A(J)
Loop
Call Insert(A)
For i=1 To 10
Print A(i)
Next i
Print
Close #12
End Sub
Private Sub Insert(A() As Integer)
Dim i As Integer,Putp As Integer,J As Integer
Dim Getp As Integer,N As Integer,Tem As Integer
N=UBound(A)/2
Putp=1
Getp=N+1
For i=1 To N
Tem=A(Getp)
For J=Getp To Putp +1 Step -1
__
A(J)=A(J-1)
__
Next J
A(Putp)=Tem
Getp=Getp+1
Putp=__
_Putp+2_
_
Next i
End Sub
9.下面程序的功能是从键盘上输入一个不超过4位的十进制正整数,先把该十进数的每一位数字转换位一个4位二进制数,再把得到的二进制数依次合并成为一个16位的二进制数。例如输入十进制数359,会得到二进制数0000001101011001。
Private Sub Form_Click()
Dim num As Integer,s As Integer,M As Integer
Dim i As Integer,j As Integer,n As Integer
num=InputBox("输入一个长度不超过4位的十进制正整数:",,1)
__
_M=num_
_
Do While num>0
j=j+1
n=num Mod 10
s=cover(n)&s
___
num=num\10
_
_
Loop
For i=1 To 4-j
s="0000"&s
Next i
Text1.Text="十进制数"&CStr(M)&"的转换结果是:"&s
End Sub
Private Function cover(ByVal n As Integer)As String
Dim i As Integer,s As String,k As Integer
Do Until n<1
__
_k=n Mod 2_
_
s=CStr(k)&s
n=n\2
Loop
If Len(s)<4 Then
s="0000"&S
cover=_
_right(s,4)__
Else
cover=s
End If
End Function
posted on 2006-10-14 15:28
木子李 阅读(432)
评论(0) 编辑 收藏 引用 网摘 所属分类:
Visual Basic 课堂