2010年3月全國計算機等級考試二級筆試試卷
Visual Basic數據庫程序設計
(考試時間90分鐘,滿分100分)
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應位置上,答在試卷上不得分。
(1)下列敘述中正確的是 A)對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數為n B)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2) C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n) D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(nlog2n)
(2)算法的時間復雜度是指 A)算法的執行時間 B)算法所處理的數據量 C)算法程序中的語司或指令條數 D)算法在執行過程中所需要的基本運算次數
(3)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是 A)編輯軟件 B)操作系統 C)教務管理系統 D)瀏覽器
(4)軟件(程序)調試的任務是 A)診斷和改正程序中的錯誤 B)盡可能多地發現程序中的錯誤 C)發現并改正程序中的所有錯誤 D)確定程序中錯誤的性質
(5)數據流程圖(DFD圖)是 A)軟件概要設計的工具 B)軟件詳細設計的工具 C)結構化方法的需求分析工具 D)面向對象方法的需求分析工具
(6)軟件生命周期可分為定義階段,開發階段和維護階段。詳細設計屬于 A)定義階段 B)開發階段
C)維護階段 D)上述三個階段
(7)數據庫管理系統中負責數據模式定義的語言是 A)數據定義語言 B)數據管理語言
C)數據操縱語言 D)數據控制語言
(8)在學生管理的關系數據庫中,存取一個學生信息的數據單位是 A)文件 B)數據庫 C)字段 D)記錄
(9)數據庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬于數據庫設計的 A)需求分析階段 B)邏輯設計一階段
C)概念設計階段 D)物理設計階段
(10)有兩個關系R和T如下:
|
R |
|
|
|
T |
|
A |
B |
C |
|
A |
B |
C |
a |
1 |
2 |
|
c |
3 |
2 |
b |
2 |
2 |
|
d |
3 |
2 |
c |
3 |
2 |
|
|
|
|
d |
3 |
2 |
|
|
|
|
則由關系R得到關系T的操作是 A)選擇 B)投影 C)交 D)并
(11)在VB集成環境中要結束一個正在運行的工程,可單擊工具欄上的一個按鈕,這個按鈕是
(12)設x是整型變量,與函數Ⅱf(x>0,-x,x)有相同結果的代數式是 A)|x| B)-|x| C)x D)-x
(13)設窗體文件中有下面的事件過程: Private Sub Command1_Click() Dim s a%=100 Print a End Sub 其中變量a和s的數據類型分別是 A)整型,整型 B)變體型,變體型 C)整型,變體型 D)變體型,整型
(14)下面哪個屬性肯定不是框架控件的屬性 A)Text B)Caption C)Left D)Enabled
15)下面不能在信息框中輸出“VB”的是 A)MsgBox "VB" B)x=MsgBox("VB") C)MsgBox("VB") D)Call MsgBox "VB"
(16)窗體上有一個名稱為Option1的單選按鈕數組,程序運行時,當單擊某個單選按鈕時,會調用下面的事件過程 Private Sub Option1_C1ick(Index As Integer) … End Sub 下面關于此過程的參數Index的敘述中正確的是 A)Index為1表示單選按鈕被選中,為O表示未選中 B)Index的值可正可負 C)Index的值用來區分哪個單選按鈕被選中 D)Index表示數組中單選按鈕的數量
(17)設窗體中有一個文本框Text1,若在程序中執行了Text1.SetFocus,則觸發 A)Text1的SetFocus事件 B)Text1的GotFocus事件 C)Text1的LostFocus事件 D)窗體的GotFocus事件
(18)VB中有3個鍵盤事件:KeyPress、KeyDown、KeyUp,若光標在Text1文本框中,則每輸入一個字母 A)這3個事件都會觸發 B)只觸發KeyPress事件 C)只觸發KeyDown、KeyUp事件 D)不觸發其中任何一個事件
(19)下面關于標準模塊的敘述中錯誤的是 A)標準模塊中可以聲明全局變量 B)標準模塊中可以包含一個Sub Main過程,但此過程不能被設置為啟動過程 C)標準模塊中可以包含一些Public過程 D)一個工程中可以含有多個標準模塊
(20)設窗體的名稱為Form1,標題為Win,則窗體的MouseDown事件過程的過程名是 A)Form1_MouseDown B)Win_MouseDown C)Form_MouseDown D)MouseDown_Form1
(21)下面正確使用動態數組的是 A)Dim arr() As Integer … ReDim arr(3,5) B)Dim arr() As Integer … ReDim arr(50)As String C)Dim arr() … ReDim arr(50) As Integer D)Dim arr(50) As Integer … ReDim arr(20)
(22)下面是求最大公約數的函數的首部 Function gcd(ByVal x As Integer, ByVal y As Integer) As Integer 若要輸出8、12、16這3個數的最大公約數,下面正確的語句是 A)Print gcd(8,12),gcd(12,16),gcd(16,8) B)Print gcd(8,12,16) C)Print gcd(8),gcd(12),gcd(16) D)Print gcd(8,gcd(12,16))
(23)有下面的程序段,其功能是按圖1所示的規律輸出數據 Dim a(3,5) As Integer For i=1 To 3 For j=1 To 5 A(i,j)=i+j Print a(i,j); Next Print
Next
若要按圖2所示的規律繼續輸出數據,則接在上述程序段后面的程序段應該是 A)For i=1 To 5 For j=1 To 3 Print a(j,i); Next Print Next B)For i=1 To 3 For j=1 To 5 Print a(j,i); Next Print Next C)For j=1 To 5 For i=1 To 3 Print a(j,i); Next Print Next D)For i=1 To 5 For j=1 To 3 Print a(i,j); Next Print Next
(24)窗體上有一個Text1文本框,一個Command1命令按鈕,并有以下程序 Private Sub Commandl_Click() Dim n If Text1.Text<>"23456" Then n=n+1 Print "口令輸入錯誤" & n & "次" End If End Sub
希望程序運行時得到左圖所示的效果,即:輸入口令,單擊“確認口令”命令按鈕,若輸入的口令不是“123456”,則在窗體上顯示輸入錯誤口令的次數。但上面的程序實際顯示的是右圖所示的效果,程序需要修改。下面修改方案中正確的是 A)在Dim n語句的下面添加一句:n=O B)把Print "口令輸入錯誤" & n & "次"改為Print "口令輸入錯誤" +n+"次" C)把Print "口令輸入錯誤" & n & "次"改為Print "口令輸入錯誤"&Str(n)&"次" D)把Dim n改為Static n
(25)要求當鼠標在圖片框P1中移動時,立即在圖片框中顯示鼠標的位置坐標。下面能正確實現上述功能的事件過程是 A)Private Sub P1_MouseMove(Button AS Integer,Shift As Integer,X As Single, Y As Single) Print X,Y End Sub B)Private Sub P1_MouseDown(Button AS Integer,Shift As Integer,X As Single, Y As Single) Picture.Print X,Y End Sub C) Private Sub P1_MouseMove(Button AS Integer,Shift As Integer,X As Single, Y As Single) P1.Print X,Y End Sub D)Private Sub Form_MouseMove(Button AS Integer,Shift As Integer,X As Single, Y As Single) P1.Print X,Y End Sub
(26)計算二的近似值的一個公式是 。 某人編寫下面的程序用此公式計算并輸出π的近似值: Private Sub Comand1_Click() PI=1 Sign=1 n=20000 For k=3 To n Sign=-Sign/k PI=PI+Sign/k Next k Print PI*4 End Sub 運行后發現結果為3.22751,顯然,程序需要修改。下面修改方案中正確的是 A)把For k=3 To n 改為 For k=1 To n B)把n=20000改為n=20000000 C)把For k=3 To n改為For k=3 To n Step 2 D)把PI=1改為PI=0
(27)下面程序計算并輸出的是 Private Sub Comand1_Click() a=10 s=0 Do s=s+a*a*a a=a-1 Loop Until a<=0 Print s End Sub A)13+23+33+…+103的值 B)10!+…+3!+2!+1!的值 C)(1+2+3+…+10)3的值 D)10個103的和
(28)若在窗體模塊的聲明部分聲明了如下自定義類型和數組 Private Type rec Code As Integer Caption As String End Type Dim arr(5) As rec 則下面的輸出語句中正確的是 A)Print arr.Code(2),arr.Caption(2) B)Print arr.Code,arr.Caption C)Print arr(2).Code,arr(2).Caption D)Print Code(2),Caption(2)
(29)設窗體上有一個通用對話框控件CD1,希望在執行下面程序時,打開如圖所示的文件對話框 Private Sub Comand1_Click() CD1.DialogTitle="打開文件" CD1.InitDir="C:\" CD1.Filter="所有文件|*.*|Word文檔|*.doc|文本文件|*.Txt" CD1.FileName="" CD1.Action=1 If CD1.FileName=""Then Print"未打開文件" Else Print"要打開文件"& CD1.FileName End If End Sub
但實際顯示的對話框中列出了C:\下的所有文件和文件夾,“文件類型”一欄中顯示的是“所有文件”。下面的修改方案中正確的是 A)把CD1.Action=1改為CD1.Action=2 B)把“CD1.Filter=”后面字符串中的“所有文件”改為“文本文件” C)在語句CD1.Action=1的前面添加:CD1.FilterIndex=3 D)把CD1.FileName=""改為CD1.FileName="文本文件"
(30)下面程序運行時,若輸入395,則輸出結果是 Private Sub Comand1_Click() Dim x% x=InputBox("請輸入一個3位整數") Print x Mod 10,x\100,(x Mod 100)\10 End Sub A)3 9 5 B)5 3 9 C)5 9 3 D)3 5 9
(31)窗體上有List1、List2兩個列表框,List1中有若干列表項(見圖),并有下面的程序: Private Sub Comand1_Click() For k=List1.ListCount-1 To 0 Step -1 If List1.Selected(k) Then List2.AddItem List1.List(k) List1.RemoveItem k End If Next k End Sub
程序運行時,按照圖示在List1中選中2個列表項,然后單擊Commandl命令按鈕,則產生的結果是 A)在List2中插入了“外語”、“物理”兩項 B)在List1中刪除了“外語”、“物理”兩項 C)同時產生A)和B)的結果 D)把List1中最后1個列表項刪除并插入到List2中
(32)設工程中有2個窗體: Form1、Form2,Form1為啟動窗體。Form2中有菜單。其結構如表。要求在程序運行時,在Form1的文本框Text1中輸入口令并按回車鍵(回車鍵的ASCII碼為13)后,隱藏Form1,顯示Form2。若口令為“Teacher”,所有菜單項都可見;否則看不到“成績錄入”菜單項。為此,某人在Form1窗體文件中編寫如下程序: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii=13 Then If Text1.Text="Teacher" Then Form2.input.visible=True Else Form2.input.visible=False End If End If Form1.Hide Form2.Show End Sub
程序運行時發現剛輸入口令時就隱藏了Form1,顯示了Form2,程序需要修改。下面修改方案中正確的是 A)把Form1中Text1文本框及相關程序放到Form2窗體中 B)把Form1.Hide、Form2.Show兩行移到2個End If之間 C)把If KeyAscii=13 Then改為 If KeyAscii="Teaeher" Then D)把2個Form2.input.Visible中的“Form2”刪去
(33)某人編寫了下面的程序,希望能把Text1文本框中的內容寫到out.txt文件中 Private Sub Comand1_Click() Open "out.txt" For Output As #2 Print "Text1" Close #2 End Sub 調試時發現沒有達到目的,為實現上述目的,應做的修改是 A)把Print "Text1"改為Print #2,Text1 B)把Print "Text1"改為Print Text1 C)把Print "Text1"改為Write "Text1" D)把所有#2改為#1
(34)窗體上有一個名為Command1的命令按鈕,并有下面的程序: Private Sub Comand1_Click() Dim arr(5) As Integer For k=1 To 5 arr(k)=k Next k prog arr() For k=1 To 5 Print arr(k) Next k End Sub Sub prog(a() As Integer) n=Ubound(a) For i=n To 2 step -1 For j=1 To n-1 if a(j) t=a(j):a(j)=a(j+1):a(j+1)=t End If Next j Next i End Sub 程序運行時,單擊命令按鈕后顯示的是 A)12345 B)54321 C)01234 D)43210
(35)下面程序運行時,若輸入“Visual Basic Programming”,則在窗體上輸出的是 Private Sub Comand1_Click() Dim count(25) As Integer, ch As String ch=Ucase(InputBox("請輸入字母字符串")) For k=1 To Len(ch) n=Asc(Mid(ch,k,1))-Asc("A") If n>=0 Then Count(n)=Count(n)+ 1 End If Next k m=count(0) For k=1 To 25 If m m=count(k) End If Next k Print m End Sub A)0 B)1 C)2 D)3
二、填空題(每空2分,共30分)
請將每一個空的正確答案寫在答題卡【1】~【15】序號的橫線上,答在試卷上不得分。
(1)一個隊列的初始狀態為空,F將元素A,B,C,D,E,F,5,4,3,2,1依次入隊,然后再依次退隊,則元素退隊的順序為 【1】 。
(2)設某循環隊列的容量為50,如果頭指針front=45(指向隊頭元素的前一位置),尾指針rear=10(指向隊尾元素),則該循環隊列中共有 【2】 個元素。
(3)設二叉樹如下:
對該二叉樹進行后序遍歷的結果為 【3】 。
(4)軟件是 【4】 、數據和文檔的集合。
(5)有一個學生選課的關系,其中學生的關系模式為:學生(學號,姓名,班級,年齡),課程的關系模式為:課程(課號,課程名,學時),其中兩個關系模式的鍵分別是學號和課號,則關系模式選課可定義為:選課(學號, 【5】 ,成績)。
(6)為了使復選框禁用(即呈現灰色),應把它的Value屬性設置為 【6】 。
(7)在窗體上畫一個標簽、一個計時器和一個命令按鈕,其名稱分別為Labl1、Timer1和Command1,如圖1所示。程序運行后,如果單擊命令按鈕,則標簽開始閃爍,每秒鐘“歡迎”二字顯示、消失各一次,如圖2所示。以下是實現上述功能的程序,請填空。 Private Sub Form_Load() Label1.Caption="歡迎" Timer1.Enabled=False Timer1.Interval= 【7】 End Sub Private Sub Timer1_Timer() Label1.Visible= 【8】 End Sub Private Sub command1_Click() 【9】 End Sub
(8)有如下程序: Private Sub Form_Click() n=10 i=0 Do i=i+n n=n-2 Loop While n>2 Print i End Sub 程序運行后,單擊窗體,輸出結果為 【10】 。
(9)在窗體上畫一個名稱為Command1的命令按鈕。然后編寫如下程序: Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer For i=1 To 10 a(i)=i Next Call swap ( 【11】 ) For i=1 To 10 Print a(i); Next End Sub Sub swap(b() As Integer) n=Ubound(b) For i=1 To n / 2 t=b(i) b(i)=b(n) b(n)=t 【12】 Next End Sub 上述程序的功能是,通過調用過程swap,調換數組中數值的存放位置,即a(1)與a(10)的值互換,a(2)與a(9)的值互換,……。請填空。
(10)在窗體上畫一個文本框,其名稱為Text1,在屬性窗口中把該文本框的MultiLine屬性設置為True,然后編寫如下的事件過程: Private Sub Form_Click() Open "d:\test\smtext1.Txt" For Input As #1 Do While Not 【13】 Line Input #1, aspect$ Whole$=whole$+aspect$+Chr$(13)+Chr$(10) Loop Text1.Text=whole$ 【14】 Open "d:\test\smtext2.Txt" For Output As #1 Print #1, 【15】 Close #1 End Sub 運行程序,單擊窗體,將把磁盤文件smtext1.txt的內容讀到內存并在文本框中顯示出來,然后把該文本框中的內容存入磁盤文件smtext2.txt。請填空。
2010年3月全國計算機等級考試二級Visual Basic程序設計筆試答案(西賽)
一、選擇題
1.ADBAC 6.BADCA 11.DBCAD 16.CBABA 21.ADADC 26.CACCB 31.CBABD
二、填空
1.ABCDEF4321 2.15 3.EDBGHFCA 4.程序 5.課號
6.2 7.700 8.Not Label1.Visible 9.Timer1.Enabled=True 10.28
11.a() 或 a 12.n=n-1 13.EOF(1) 14.Close # 1 15.Text1.Text 或Text1
|