07年9月全國(guó)計(jì)算機(jī)二級(jí)VB筆試含答案

字號(hào):

2007年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)筆試試卷
    Visual Basic語言程序設(shè)計(jì)
    (考試時(shí)間90分鐘,滿分100分)
    一、選擇題(每小題2分,共70分)
    下列各題A) 、B) 、C) 、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的。請(qǐng)將正確選項(xiàng)填涂在答題卡相應(yīng)位置上,答在試卷上不得分。
    (1)軟件是指
    A)程序        B)程序和文檔
    C)算法加數(shù)據(jù)結(jié)構(gòu)   D)程序、數(shù)據(jù)與相關(guān)文檔的完整集合
    (2)軟件調(diào)試的目的是
    A)發(fā)現(xiàn)錯(cuò)誤           B)改正錯(cuò)誤
    C)改善軟件的性能        D)驗(yàn)證軟件的正確性
    (3)在面向?qū)ο蠓椒ㄖ?,?shí)現(xiàn)信息隱蔽是依靠
    A)對(duì)象的繼承             B)對(duì)象的多態(tài)
    C)對(duì)象的封裝             D)對(duì)象的分類
    (4)下列敘述中,不符合良好程序設(shè)計(jì)風(fēng)格要求的是
    A)程序的效率第一,清晰第二   B)程序的可讀性好
    C)程序中要有必要的注釋     D)輸入數(shù)據(jù)前要有提示信息
    (5)下列敘述中正確的是
    A)程序執(zhí)行的效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)密切相關(guān)
    B)程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)
    C)程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量
    D)以上三種說法都不對(duì)
    (6)下列敘述中正確的是
    A)數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)必定是一一對(duì)應(yīng)的
    B)由于計(jì)算機(jī)存儲(chǔ)空間是向量式的存儲(chǔ)結(jié)構(gòu),因此,數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)一定是線性結(jié)構(gòu)
    C)程序設(shè)計(jì)語言中的數(shù)組一般是順序存儲(chǔ)結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)
    D)以上三種說法都不對(duì)
    (7)冒泡排序在最壞情況下的比較次數(shù)是
    A)n(n+1)/2 B)nlog2 n C)n(n-1)/2 D)n/2
    (8)一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為
    A)219 B)221 C)229 D)231
    (9)下列敘述中正確的是
    A)數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持
    B)數(shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題
    C)數(shù)據(jù)庫(kù)管理系統(tǒng)就是數(shù)據(jù)庫(kù)系統(tǒng)
    D)以上三種說法都不對(duì)
    (10)下列敘述中正確的是
    A)為了建立一個(gè)關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系
    B)表示關(guān)系的二維表中各元組的每一個(gè)分量還可以分成若干數(shù)據(jù)項(xiàng)
    C)一個(gè)關(guān)系的屬性名表稱為關(guān)系模式
    D)一個(gè)關(guān)系可以包括多個(gè)二維表
    (11)要使一個(gè)文本框可以顯示多行文本,應(yīng)設(shè)置為True的屬性是
    A)Enabled B)MultiLine C)MasLenfth D)Width
    (12)在窗體上有一個(gè)名為Text1的文本框。當(dāng)光標(biāo)在文本框中時(shí),如果按下字母鍵“A”,則被調(diào)用的事件過程是
    A)Form_KeyPress() B)Text1_LostFocus()
    C)Text1_Click() D)Test1_Change()
    (13)設(shè)在窗體上有一個(gè)名稱為Command1的命令按鈕和一個(gè)名稱為Text1的文本框。要求單擊Command1按鈕時(shí)可把光標(biāo)移到文本框中。下面正確的事件過程是
    A)Private Sub Command1_Click() B)Private Sub
    Text1.GotFocus Command1.GotFocus
    End Sub EndSub
    C)Private Sub Command1_Click() D)Private Sub
    Text1.SetFocus Command1.SetFocus
    End Sub End Sub
    (14)執(zhí)行以下程序后輸出的是
    Private Sub Command1_Click()
    Ch$=”AABCDEFGH”
    Print Mid(Righ(ch$,6),Len(left(ch$,4)),2)
    End Sub
    A)CDEFGH B)ABCD C)FG D)AB
    (15)設(shè)在窗體Form1上有一個(gè)列表框List1,其中有若干個(gè)項(xiàng)目。要求單擊列表框中某一項(xiàng)時(shí),把該項(xiàng)顯示在窗體上,正確的事件過程是
    A)Prvate Sub List1_Click() B)Private Sub Form1_Click()
    Print List1.Text Print List1.Text
    End Sub End Sub
    C)Private Sub List1_Click() D)Private Sub Form1_Click()
    Print Form1.Text List1.Print List1.Text
    End Sub End Sub
    (16)若窗體上的圖片框中有一個(gè)命令按鈕,則此按鈕的Left屬性是指
    A)按鈕左端到窗體左端的距離 B)按鈕左端到圖片框左端的距離
    C)按鈕中心點(diǎn)到窗體左端的距離 D)按鈕中心點(diǎn)到圖片框左端的距離
    (17)為使程序運(yùn)行時(shí)通用對(duì)話框CD1上顯示的標(biāo)題為“對(duì)話框窗口”,若通過程序設(shè)置該標(biāo)題,則應(yīng)使用的語句是
    A)CD1.DialogTitle=“對(duì)話框窗口” B)CD1.Action=“對(duì)話框窗口”
    C)CD1.FileName=“對(duì)話框窗口” D)CD1.Filter=“對(duì)話框窗口”
    (18)在窗體上有如右圖所示的控件,各控件的名稱
    與其標(biāo)題相同,并有如下程序:
    Private Sub Form_Load()
    Command2.Enabled=False
    Check1.value=1
    End Sub
    剛運(yùn)行程序時(shí),看到的窗體外觀是:
    (19)設(shè)在窗體中有一個(gè)名稱為L(zhǎng)ist1的列表框,其中有若干個(gè)項(xiàng)目(如圖)。要求選中某一項(xiàng)后單擊Command1按鈕,就刪除選中的項(xiàng),則正確的事件過程是
    A)Private Sub Command1_Click()
    List1.Clear
    End Sub
    B) Private Sub Command1_Click()
    List1.Clear List1.ListIndex
    End Sub
    C) Private Sub Command1_Click()
    List1.Removeltem List1.ListIndex
    End Sub
    D) Private Sub Command1_Click()
    List1.Removeltem
    End Sub
    (20)某人設(shè)計(jì)了如下程序用來計(jì)算并輸出7!(7的階乘)
    Private Sub Command1_Click()
    t=0
    For k=7 To 2 Step -1
    t=t*k
    Next
    Print t
    End Sub
    執(zhí)行程序時(shí),發(fā)現(xiàn)結(jié)果是錯(cuò)誤的,下面的修改方案中能夠得到正確結(jié)構(gòu)的是
    A)把t=0改為t=1
    B)把For k = 7 To 2 Step -1改為For k =7 To 1 Step -1
    C)把For k = 7 To 2 Stip-1改為Fork=1 To 7
    D)把Next改為Nexi k
    (21)若窗體中已經(jīng)有若干個(gè)不同的單選按鈕,要把它們改為一個(gè)單選按鈕數(shù)組,在屬性窗口中需要且只需要進(jìn)行的操作是
    A)把所有單選按鈕的Index屬性改為相同值
    B)把所有單選按鈕的Index 屬性改為連續(xù)的不同值
    C)把所有單選按鈕的Caption屬性值改為相同
    D)把所有單選按鈕的名稱改為相同,且把它們的Index屬性改為連續(xù)的不同值。
    (22)窗體上有文本框Text1和一個(gè)菜單,菜單標(biāo)題、名稱如表,結(jié)構(gòu)見圖。要求程序執(zhí)行時(shí)單擊“保存”菜單項(xiàng),則把其標(biāo)題顯示在Text1文本框中。下面可實(shí)現(xiàn)此功能的事件過程是:
    標(biāo)題 名稱
     文件 file
     新建 new
    保存 save
    A)Private Sub save_Click() B)Private Sub save_Click()
    Text1.Text=file.save.Caption Text1.Text=save.Caption
    End Sub End Sub
    C)Private Sub file_Click() D)Private Sub file_Click()
    Text1.Text=file.save.Caption Text1.Text=save.Caption
    End Sub End Sub
    (23)某人在窗體上畫了一個(gè)名稱為Timer1的計(jì)時(shí)器和一個(gè)名稱為L(zhǎng)ab
    的屬性設(shè)置為Enabled=True, Interval=0,并編程如下。希望在每2秒在標(biāo)簽上顯示一次系統(tǒng)當(dāng)前時(shí)間。
    Private Sub Timer1_Timer()
    Label1.Caption=Time$
    End Sub
    在程序執(zhí)行時(shí)發(fā)現(xiàn)未能實(shí)現(xiàn)上述目的,那么,他應(yīng)做的修改是
    A)通過屬性窗口把計(jì)時(shí)器的Interval屬性設(shè)置為2000
    B)通過屬性窗口把計(jì)時(shí)器的Enabled屬生設(shè)置為False
    C)把事件過程中的Label1.Caption=Time$語句改為Timer1.Interval=Tims$
    D)把事件過程中的Label1.Caption=Time$語句改為L(zhǎng)abel1.Caption=Timer1.Time
    (24)形狀控件的Shape屬性有6種取值,分別代表6種幾何圖形。下列不屬于這6種幾何圖形的是
    (25)下面關(guān)于文件的敘述中錯(cuò)誤的是
    A)隨機(jī)文件中各條記錄的長(zhǎng)度是相同的]
    B)打開隨機(jī)文件時(shí)采用的文件存取方式應(yīng)該是Random
    C)向隨機(jī)文件中寫數(shù)據(jù)應(yīng)使用語句Print#文件號(hào)
    D)打開隨機(jī)文件與打開順序文件一樣,都使用Open語句
    (26)設(shè)窗體上有一個(gè)圖片框Picture1,要在程序運(yùn)行期間裝入當(dāng)前文件夾下的圖形文件File1.jpg,能實(shí)現(xiàn)此功能的語句是
    A)Picture1.Picture=”Flie1.jpg
     B)Picture1.Picture=LoadPicture(“File1.jpg”)
    C) LoadPicture(“File1.jpg”)
    D)Call LoadPicture(“File1.jpg”)
    (27)下面程序執(zhí)行時(shí),在窗體上顯示的是
    Private Sub Command1_Click()
    Dim a(10)
    For k = 1 To 10
    a(k) = 11 – k
    Next k
    Print a(a(3)\a(7) Mod a(5))
    End Sub
    A)3 B)5 C)7
    (28)為達(dá)到把a(bǔ)、b中的值交換后輸出的目的,某人編程如下:
    Private Sub Command1_Click()
    a% = 10:b% = 20
    Call swap(a,b)
    Print a,b
    End Sub
    Private Sub swap(ByVal a As Integer,ByVal b As Integer)
    c= a:a=b:b=c
    End Sub
    在運(yùn)行時(shí)發(fā)現(xiàn)輸出結(jié)果錯(cuò)了,需要修改。下面列出的錯(cuò)誤原因和修改方案中正確的是
    A)調(diào)用swap過程的語句錯(cuò)誤,應(yīng)改為Call swap a,b
    B)輸出語句錯(cuò)誤,應(yīng)改為:Print ”a”,”b”
    C)過程的形式參數(shù)有錯(cuò),應(yīng)改為:swap(ByRef a As Integer,ByRef b As Integer)
    D)swap中3條賦值語句的順序是錯(cuò)誤的,應(yīng)改為a=b:b=c:c=a
    (29)有如下函數(shù):
    Function fun(a As Integer,n As Integer) As Integer
    Dim m As Integer
    While a >=n
    a=a-n
    m= m+1
    Wend
    fun=m
    End Function
    該函數(shù)的返回值是
    A)a乘以n的乘積 B)a加n的和
    C)a減n的差 D)a除以n的商(不含小數(shù)部分)
    (30)下面程序的輸出結(jié)果是
    Private Sub Command1_Click()
    ch$=”ABCDEF”
    proc ch
    Print ch
    End Sub
    Private Sub proc(ch As String)
    S=””
    For k=Len(ch) To 1 Step-1
    s=s&Mid(ch,k,1)
    Next k
    ch=s
    End Sub
    A)ABCDEF B)FEDCBA C)A D)F
    (31)某人編寫了一個(gè)能夠返回?cái)?shù)組a中10個(gè)數(shù)中數(shù)的函數(shù)過程,代碼如下:
    Function Maxvalue(a() As Integer) As Integer
    Dim max%
    max=1
    For k = 2 To 10
    If a(k)>a(max) Then
    max = k
    End If
    Next k
    Maxvalue = max
    End Function
    程序運(yùn)行時(shí),發(fā)現(xiàn)函數(shù)過程的返回值是錯(cuò)的,需要修改,下面的修改方案中正確的是
    A)語句max = 1應(yīng)改為max = a(1)
    B)語句For k = 2 To 10應(yīng)改為For k = 1 To 10
    C)If語句中的條件a(k)>a(max)應(yīng)改為a(k)>max
    D)語句Maxvalue = max 應(yīng)改為Maxvalue = a(max)
    (32)在窗體上畫一個(gè)名稱為Command1的命令按鈕,并編寫以下程序:
    Private Sub Command1_Click()
    Dim n%,b,t
    t = 1:b = 1:n = 2
    Do
    b = b*n
    t = t + b
    n = n +1
    Loop Until n>9
    Print t
    End Sub
    此程序計(jì)算并輸出一個(gè)表達(dá)式的值,該表達(dá)式是
    A)9! B)10! C)1!+2!+…+9! D)1!+2!+…+10!
    (33)有一個(gè)名稱為Form1的窗體,上面沒有控件,設(shè)有以下程序(其中方法Pset(X,Y)的功能是在坐標(biāo)X,Y處畫一個(gè)點(diǎn)):
    Dim cmdmave As Boolean
    Private Sub Form_MouseDown(Button As Integer,Shift As Integer, X As Single,Y As Single)
    cmdmave = True
    End Sub
    Private Sub Form_MouseMove(Button As Integer,Shift As Integer, X As Single, Y As Single)
    If cmdmave Then
    Form1.Pset(X,Y)
    End If
    End Sub
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single,Y As Single)
    cmdmave = False
    End Sub
    此程序的功能是
    A)每按下鼠標(biāo)鍵一次,在鼠標(biāo)所指位置畫一個(gè)點(diǎn)
    B)按下鼠標(biāo)鍵,則在鼠標(biāo)所指位置畫一個(gè)點(diǎn);放開鼠標(biāo)鍵,則此點(diǎn)消失
    C)不按鼠標(biāo)鍵而拖動(dòng)鼠標(biāo),則沿鼠標(biāo)拖動(dòng)的軌跡畫一條線
    D)按下鼠標(biāo)鍵并拖動(dòng)鼠標(biāo),則沿鼠標(biāo)拖動(dòng)的軌跡畫一條線,放開鼠標(biāo)鍵則結(jié)束畫線
    (34)某人設(shè)計(jì)了下面的函數(shù)fun,功能是返回參數(shù)a中數(shù)值的位數(shù)
    Function fun(a As Integer) As Integer
    Dim n%
    n = 1
    While a \ 10 >= 0
    n = n + 1
    a = a \ 10
    Wend
    fun = n
    End Function
    在調(diào)用該函數(shù)時(shí)發(fā)現(xiàn)返回的結(jié)果不正確,函數(shù)需要修改,下面的修改方案中正確的是
    A)把語句n = 1改為n = 0
    B)把循環(huán)條件a \ 10 >= 0改為a \ 10 > 0
    C)把語句 a = a \ 10改為a = a Mod 10
    D)把語句fun = n改為 fun = a
    (35)在窗體上有一個(gè)名稱為Check1的復(fù)選框數(shù)組
    (含4個(gè)復(fù)選框),還有一個(gè)名稱為Text1的文本
    框,初始內(nèi)容為空。程序運(yùn)行時(shí),單擊任何復(fù)選
    框,則把所有選中的復(fù)選框后面的方字羅列在文
    本框中(見圖)。下面能實(shí)現(xiàn)此功能的事件過程是
    A)Private Sub Check1_Click(Indes As Integer)
    Text1.Text =""
    For k = 0 To 3
    If Check1(k).value = 1 Then
    Text1.Text = Text1.Text & Check1(k).Caption & " " '雙引號(hào)中是空格
    End If
    Next k
    End Sub
    B)Private Sub Check1_Click(Index As Integer)
    For k = 0 To 3
    If Check1(k).value = 1 Then
    Text1.Text = Text1.Text & Check1(k).Caption & " " '雙引號(hào)中是空格
    End If
    Next k
    End Sub
    C)Private Sub Check1_Click(Index As Integer)
    Text1.Text = ""
    For k = 0 To 3
    If Check1(k).value = 1 Then
    Text1.Text = Text1.Text & Check1(Index).Caption & " " '雙引號(hào)中是空格
    End If
    Next k
    End Sub
    D)Private Sub Check1_Click(Index As Integer)
    Text1.Text = ""
    For k = 0 To 3
    If Check1(k).value = 1 Then
    Text1.Text = Text1.Text & Check1(k).Caption & " " '雙引號(hào)中是空格
    Exit For
    End If
    Next k
    End Sub
    二、填空題(每空2分,共30分)
    請(qǐng)將每空的正確答案寫在答題卡[1]~[15]序號(hào)的橫線上,答在試卷上不得分。
    (1)軟件需求規(guī)格說明書應(yīng)具有完整性,無岐義性、正確性、可驗(yàn)證性、可修改性等特征,其中最重要的是【1】 。
    (2)在兩種基本測(cè)試方法中,【2】 測(cè)試的原則之一是保證所測(cè)模塊中每一個(gè)獨(dú)立路徑至少執(zhí)行一次。
    (3)線性表的存儲(chǔ)結(jié)構(gòu)主要分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。隊(duì)列是一種特殊的線性表,循環(huán)隊(duì)列是隊(duì)列的【3】 存儲(chǔ)結(jié)構(gòu)。
    (4)對(duì)下列二叉樹進(jìn)行中序遍歷的結(jié)果為【4】 。
    (5)在E-R圖中,矩形表示【5】 。
    (6)窗體上有一個(gè)組合框,其中已輸入了
    若干個(gè)項(xiàng)目。程序運(yùn)行時(shí),單擊其中一
    項(xiàng),即可把該項(xiàng)與最上面的一項(xiàng)交換。
    例如:?jiǎn)螕魣D1中的“重慶”,則與“北
    京”交換,得到圖2的結(jié)果。下面是可
    實(shí)現(xiàn)此功能的程序,請(qǐng)?zhí)羁铡?BR>    Private Sub Combo1_Click()
    Dim temp
    temp = Combo1.Text
     [6] = Combo1.List(0)
    Combo1.List(0) = temp
    End Sub
    (7)設(shè)窗體上有一個(gè)名稱為HScroIII的水平滾動(dòng)條,要求當(dāng)滾動(dòng)塊移動(dòng)位置后,能夠在窗體上輸出移動(dòng)的距離(即新位置與原位置的刻度值之差,向右移動(dòng)為正數(shù),向左移動(dòng)為負(fù)數(shù))。下面是可實(shí)現(xiàn)此功能的程序,請(qǐng)?zhí)顚憽?BR>    Dim [7] As Integer
    Private Sub Form_Load()
    pos=HScroIII.value
    End Sub
    Private Sub HScroIII_Change()
    Print [8] -pos
    pos=HScroIII.value
    End Sub
    (8)設(shè)窗體上有一個(gè)名稱為CD1的通用對(duì)話框,一個(gè)名稱為Text1的文本框和一個(gè)名稱為Command1的命令按鈕。程序執(zhí)行時(shí),單擊Command1按鈕,則顯示打開文件對(duì)話框,操作者從中選擇一個(gè)文本文件,并單擊對(duì)話框上的“打開”按鈕后,則可打開該文本文件,并讀入一行文本,顯示在Text1中。下面是實(shí)現(xiàn)此功能的事件過程,請(qǐng)?zhí)羁铡?BR>    Private Sub Command1_Click()
    CD1.Filter ="文本文件1*.txt(Word 文檔)*.doc"
    CD1.Filterinder = 1
    CD1.ShowOpen
    If CD1.FileName<>""Then
    Open [9] For Input As #1
    Line Input #1,ch$
    Close #1
    Text1.Text = [10]
    End If
    End Sub
    (9)下面的程序執(zhí)行時(shí),可以從鍵盤輸入一個(gè)正整數(shù),然后把該數(shù)的每位數(shù)字按逆序輸出。例如:輸入7685,則輸出5867,輸入1000,則輸出0001。請(qǐng)?zhí)羁铡?BR>    Private Sub Command1_Click()
    Dim x As Integer
    x=InputBox(“請(qǐng)輸入一個(gè)正整數(shù)”)
    While x>__[11]___
    Print x Mod 10;
    x=x\10
    Wend
    Print__[12]__
    End Sub
    (10)有如圖所示的窗體。程序執(zhí)行時(shí)先在Text1文本框中輸入編號(hào),當(dāng)焦點(diǎn)試圖離開Text1時(shí),程序檢查編號(hào)的合法性,若編號(hào)合法,則焦點(diǎn)可以離開Text1文本框;否則,顯示相應(yīng)錯(cuò)誤信息,并自動(dòng)選中錯(cuò)誤的字符,且
    焦點(diǎn)不能離開Text1文本框(見圖)。
    合法編號(hào)的組成是:前2個(gè)字符是大寫英文
    字母,第3個(gè)字符是“-”,后面是數(shù)字字符
    (至少1個(gè))。下面程序可實(shí)現(xiàn)此功能,請(qǐng)
    填空。
    Private Sub Text1_Lostfocus()
    Dim k%,n%
    n=Len( [13] )
    For k=1 to if (n>3,n,4)
    c=Mid(Text1. Text,k,1)
    Select Case k
    Case 1,2
    If c<"A" Or c>"Z" Then
    MsgBox("第"&k&"個(gè)字符必須是大寫字母!")
    SetPosition k
    Exit For
    End If
    Case 3
    If c<>"-" Then
    MsgBox("第"&k&"個(gè)字符必須是字符"'"-"'")
    SetPosition k
    Exit For
    End If
    Case Else
    If c<"0" Or c>"9" Then
    MsgBox("第"&k&"個(gè)字符必須是數(shù)字!")
    SetPosition k
    Exit For
    End If
    End Select
    Next k
    End Sub
    Private Sub SetPosition(pos As Integer)
    Text1.SelStart=pos-1
    Text.SelLength= [14]
    Text1. [15]
    End Sub
    2007年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)VB參考答案
    一、選擇題
    1-5 DBCAA
    6-10 CCABA
    11-15 BDCCA
    16-20 BAACA
    21-25 DBABC
    26-30 BDCDB
    31-35 DCDBA
    二、填空題
    1、無歧義性
    2、白盒測(cè)試
    3、順序
    4、ACBDFEHGP
    5、實(shí)體集
    6、Combol1.List(Combol1.ListIndex)
    7、pos
    8、HScroll1.value
    9、CD1.FileName
    10、ch
    11、10
    12、x
    13、Text1.Text
    14、1
    15、SetFocus