VB程序設計試題及答案
《VB程序設計》是2009年清華大學出版社出版的圖書。學了這些內容之后,會面臨一些考試,在寫試題的時候你知道正確的答案嗎?下面是小編整理的VB程序設計試題及參考答案,希望對你有用!
VB程序設計試題及參考答案
一、單選題
1. Visual Basic是一種面向對象的可視化程序設計語言,采取了 A 的編程機制。
(A) 事件驅動 (B) 按過程順序執行
(C) 從主程序開始執行 (D) 按模塊順序執行
2. 若要使標簽控件顯示時不覆蓋其背景內容,要對 D 屬性進行設置。
(A) Backcolor (B) BorderStyle
(C) Forecolor (D) Backstyle
3. 在Visual Basic中最基本的對象是 C ,它是應用程序的基石,是其他控件的容器。
(A) 文本框 (B) 命令按鈕
(C) 窗體 (D) 標簽
4. 要判斷在文本框是否按下Enter鍵,應在文本框的 D 事件中判斷。
(A) Change (B)KeyDown
(C) Click (D)KeyPress
5. 數學表達式3≤x<l0在VB中的邏輯表達式為 D 。
(A) 3<=x<10 (B) 3<=x AND x>10
(C) x>=3 Or x<10 (D) x>=3 AND x<10
6. Rnd函數不可能為下列 B 值。
(A) 0 (B) 1 (C) 0.1234 (D) 0.0005
7. 賦值語句:a=123+Mid("123456",3,2)執行后,a變量中的值是 D 。
(A) "12334" (B) 123 (C) 12334 (D) 157
8. 對于語句If x=l Then y=l,下列說法正確的是 C 。
(A) x=l和y=l均為賦值語句
(B) x=l和y=l均為關系表達式
(C) x=l為關系表達式,y=l為賦值語句
(D) x=l為賦值語句,y=l為關系表達式
9. 下面程序段表示求兩個數中的大數, D 不正確。
(A) Max=IIf(x>y,x,y) (B) If x>y Then Max=x Else Max=y
(C) Max=x (D) Ify>=x Then Max=y
If y>=x Then Max=y Max=x
10.當在文本框中輸入“ABCD”4個字符時,窗體上顯示的是 C 。
Private Sub Text1_Change( )
Print Text1;
End Sub
(A) ABCD (B) A (C) AABABCABCD (D) A
B AB
C ABC
D ABCD
11.下列哪個程序段不能分別正確顯示1!、2!、3!、4!的值 B 。
(A) For i=1 to 4 (B) For i=1 to 4
n=1 For j=1 to i
For j=1 to I n=1
n=n*j n=n*j
Next j Next j
Print n Print n
Next I Next i
(C) n=1 (D) n=1
For j=1 to4 j=1
n=n*j Do While j<=4
Print n n=n*j
Next j Print n
j=j+1
Loop
12.如下數組聲明語句,則數組a包含元素的個數有 A 。
Dim a(3, -2 to 2, 5)
(A) 120 (B) 75 (C) 60 (D) 13
13.以下程序的輸出結果是 D 。
Dim a
a=Array(1, 2, 3, 4, 5, 6, 7)
For i=Lbound(a) to Ubound(a)
a(i)=a(i)*a(i)
Next i
Print a(i)
(A) 49 (B) 0 (C) 不確定 (D) 程序出錯
14.在過程中定義的變量,若希望離開該過程后,還能保存過程中局部變量的值,則應使用關鍵字 D 在過程中定義局部變量。
(A) Dim (B) Private (C) Public (D) Static
15.如下程序,運行的結果是 B 。
Dim a%, b%, c%
Public Sub p1(x%, y%)
Dim c%
x=2*x: y=y+2: c=x+y
End Sub
Public Sub p2(x%, ByVal y%)
Dim c%
x=2*x: y=y+2: c=x+y
End Sub
Private Sub Command1_Click( )
a=2: b=4: c=6
Call p1(a, b)
Print “a=”; a; “b=”; b; “c=”; c
Call p2(a, b)
Print “a=”; a; “b=”; b; “c=”; c
End Sub
(A) a=2 b=4 c=6 (B) a=4 b=6 c=10
a=4 b=6 c=10 a=8 b=8 c=16
(C) a=4 b=6 c=6 (D) a=4 b=6 c=14
a=8 b=6 c=6 a=8 b=8 c=6
16.復選框的Value屬性為1時,表示 B 。
(A) 復選框未被選中 (B) 復選框被選中
(C) 復選框內有灰色的勾 (D) 復選框操作有誤
17.下面關于菜單的說法中,錯誤的是 B 。
(A) 每個菜單項都是一個控件,與其他控件一樣也有自己的屬性和事件
(B) 除了Click事件之外,菜單項還能響應其他的,如DbClick事件
(C) 菜單項的快捷鍵不能任意設置
(D) 在程序執行時,如果菜單項的Enabled屬性為False,則該菜單項變成灰色,不能被用戶選擇
18.下面關于多重窗體的敘述中,正確的是 B 。
(A) 作為啟動對象的Main子過程中能放在窗體模塊中
(B) 如果啟動對象是Main子過程,則程序啟動時不加載任何窗體,以后由該過程根據不同情況決定是否加載或加載哪一個窗體
(C) 沒有啟動窗體,程序不能執行
(D) 以上都不對
19.當用戶將焦點移到另一個應用程序時,當前應用程序的活動窗體將 D 。
(A) 發生DeActivate事件
(B) 發生LostFocus事件
(C) 發生DeActivate和LostFocus事件
(D) DeActivate和LostFocus事件都不發生
20.順序文件是因為 D 。
(A) 文件中的數據按每行的長度從小到大排序好的
(B) 文件中的數據按某個關鍵數據項從大到小進行排序
(C) 文件中的數據按某個關鍵數據項從小到大進行排序
(D) 數據按進入的先后順序存放的,讀出也是按原寫入的先后順序讀出
21.文件號最大可取值為 B 。
(A) 255 (B) 511 (C) 512 (D) 256
22.Print #1, STR$1中的Print是 A 。
(A) 文件的寫語句 (B) 在窗體上顯示的方法
(C) 子程序名 (D) 以上均不是
23.以下的屬性和方法中 C 可重定義坐標系。
(A)Drawstyle屬性 (B) DrawWidth屬性
(C) Scale方法 (D) ScaleMode屬性
24.封閉圖形的填充方式由下列 C 屬性決定。
(A) DrawStyle, DrawMode (B) AutoRedraw, ClipControls
(C) FillStyle, FillColor (D) ForeColor, BorderColor
25.下列字符串中, D 不包含在ADO數據控件的ConnectionString屬性中。
(A) Microsoft Jet 4.0 OLE DB Provider
(B) Data Source=C:\Mydb.mdb
(C) Persist Security Info=False
(D) 2-adCmdTable
二、填空題
1.在代碼窗口對窗體的BorderStyle、MaxButton屬性進行了設置,但運行后沒有效果,原因是這些屬性 在運行時設計是無效的 。
2.在文本框中,通過 SelStart 屬性能活得當前插入點所在的位置。
3.表達式Ucase(Mid(“abcdefgh”, 3, 4))的值是 CDEF 。
4.已知a=3.5,b=5.0,c=2.5,d=True,則表達式:a>=0 And a+c>b+3 Or Not d的值是 False 。
5.要獲得動態數組的上界通過 UBound 函數,下界通過 LBound 函數。
6.由Array函數建立的數組,其變量類型必須是 variant 類型。
7.VB中的變量按其作用域分為全局變量、模塊變量和 局部變量 變量。
8.復選框的 Value 屬性設置為2——Grayed時,變成灰色,禁止用戶選擇。
9.滾動條響應的重要事件有 Scroll 和Change。
10.假定有一個通用對話框控件CommonDialog1,除了用COmmonDialog1.Action=3顯示顏色對話框之外,還可以用 showcolor 方法顯示。
11.窗體Form1的左上角坐標為(-200, 250),窗體Form1的右下角的`坐標為(300, -150),則X軸的正向向 右 ,Y軸的正向向 上 。
12.使用Circle方法畫扇形,起始角、終止角取值范圍為 0~2π 。
13.在運行狀態改變ADO數據控件的數據源連接屬性后,必須使用 Refresh 方法激活這些變化。
14.VB中工程文件的擴展名為 vbg 。
15.如果在窗體上已經創建了一個文本框對象Text1,可以通過 Keypress 事件獲得輸入鍵值的ASCII碼。
16.VB中對象的三要素是 屬性 、 事件 和 方法 。
三、編程應用題
1.程序閱讀
(1)
Private Sub Command1_Click( )
Dim s as String, i%
s="abcd"
For i=Len(s) to 1 step -1
Print Mid(s, i, 1)
Next i
End Sub
輸出結果:
d
c
b
a
(2)
Sub Swap1(ByVal x%, ByVal y%)
Dim t%
t = x: x = y: y = t
End Sub
Sub Swap2(ByRef x%, ByRef y%)
Dim t%
t = x: x = y: y = t
End Sub
Sub Command1_Click()
Dim a%, b%
a = 10: b = 20
Print "調用Swap1前 a和b的值為:"; a; b
Call Swap1(a, b)
Print "調用Swap1后按傳值方式 a和b的值為:"; a; b
a = 10: b = 20
Call Swap2(a, b)
Print "調用Swap2后按傳地址方式 a和b的值為:"; a; b
End Sub
輸出結果
調用Swap1前 a和b的值為:10 20
調用Swap1后按傳值方式 a和b的值為:10 20
調用Swap2后按傳地址方式 a和b的值為: 20 10
(3)
Private Sub Command1_Click( )
Dim x%, y%, z%
x=242: y=44
z=x*y
Do Until x=y
If x>y Then x=x-y Else y=y-x
Loop
Print x, z/x
End Sub
輸出結果:
22 484
2.補充程序
(1) 以下是求1~18之間某個數的階乘的程序,具體的數值n由滾動條HScroll1獲得,結果顯示在窗體下部的兩個Label標簽里。補充完整如下程序。
Private Sub HScroll1_Change()
Dim i As Integer, s As Double
s = 1
n = Hscroll1.Value
If n <> 0 Then
For i = 1 To n
s = s*i
Next i
End If
Label2.Caption = n & "! = "
Label3.Caption = s
End Sub
(2)以下程序的功能是:已知數組a,刪除數組中某個元素。
Private Sub Command1_Click( )
Dim a( ), key%, i%, j%
a=Array(1, 6, 8, 3, 5, 9, 10, 2, 4, 7)
key=9
For i=0 to UBound(a)
If a(i)=9 Then
For j=i+1 to UBound(a)
a(j)=a(j+1)
Next j
ReDim a(j)=a(i)
MsgBox("刪除完成")
Exit Sub
End If
Next i
MsgBox("找不到要刪除的元素")