VisualBasic編程與應(yīng)用作業(yè)3答案

字號(hào):

一、填空題
    1. 返回相應(yīng)的結(jié)果 2. 沒(méi)有返回值 按名稱 3. 按名稱 4. 以該函數(shù)名
    5.窗體模塊 標(biāo)準(zhǔn)模塊 類模塊 6.Click 7.菜單項(xiàng)目
    8.Sub過(guò)程的過(guò)程名不能返回值,而Function過(guò)程能通過(guò)過(guò)程名返回值 9.添加過(guò)程
    10.標(biāo)準(zhǔn)模塊的通用聲明段
    二、判斷正確與錯(cuò)誤(正確標(biāo)∨,錯(cuò)誤標(biāo) x )并寫(xiě)出正確答案。
    1.( x 子過(guò)程能接收參數(shù)。) 2.(x 函數(shù)過(guò)程能接收參數(shù) 。) 3.(∨) 4.(∨)
    5.( x Call MyPro(A、B) MyProc( A、B) 6.(∨)
    7.( x 標(biāo)準(zhǔn)模塊是程序中的一個(gè)獨(dú)立容器,包含全局變量、Function(函數(shù))過(guò)程和Sub過(guò)程。)
    三、問(wèn)答題
    1.什么是工程?
    解答:工程是構(gòu)成應(yīng)用程序文件的集合。工程文件是與工程相關(guān)聯(lián)的所有文件和對(duì)象以及所設(shè)置的環(huán)境信息的一個(gè)簡(jiǎn)單的列表,所有文件和對(duì)象也可以被其它的工程所共享。
    2.什么是過(guò)程?
    解答:一個(gè)應(yīng)用程序是由若干個(gè)模塊組成的,而每個(gè)模塊又是由若干個(gè)更小的代碼片段組成,將組成這些模塊的代碼片段稱為過(guò)程。通過(guò)過(guò)程,可以將整個(gè)程序按功能進(jìn)行分塊,每個(gè)過(guò)程用來(lái)完成一項(xiàng)特定的功能。
    3.選中一個(gè)窗體,啟動(dòng)菜單編輯器的方法有哪三種?
    解答:(1)使用菜單“工具”/(菜單編輯器)
    (2)使用工具欄按鈕工具欄快捷鍵;(3)鍵盤(pán)快捷鍵CTRL+E
    4.什么是動(dòng)態(tài)菜單?
    解答:動(dòng)態(tài)菜單,就是菜單中列出了最近使用過(guò)的文件名,這部分內(nèi)容是隨著應(yīng)用程序的運(yùn)行而不斷改變著的,在運(yùn)行時(shí)使菜單可以增長(zhǎng)。
    5.已知彈出菜單的名是aa,填補(bǔ)彈出菜單的代碼。
    解答:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
    ’在窗體上按下鼠標(biāo)。
    If Btton = 2 Then ′如果是右鍵。
    PopupMenu aa ′彈出菜單。
    End If
    End Sub
    6.現(xiàn)使用菜單編輯器設(shè)計(jì)彈出菜單。菜單第一項(xiàng)(使菜單項(xiàng)目)的Caption為“彈出菜單”,Name:“aa”,Visible沒(méi)有選中,填補(bǔ)彈出菜單的代碼。
    解答:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
    ′在窗體上按下鼠標(biāo)。
    If Btton = 2 Then ′如果是右鍵。
    PopupMenu aa ′彈出菜單。
    End If
    End Sub
    四、編程題
    1.編寫(xiě)一個(gè)過(guò)程,以整型數(shù)作為形參,當(dāng)該參數(shù)為奇數(shù)時(shí)輸出False,而當(dāng)該參數(shù)為偶數(shù)時(shí)輸出True。
    解答:通用過(guò)程如下:
    Function NumOE(ByVal n As Integer)As Boolean
     If n Mod 2 = 0 then
     NumOE= True
     Else
     NumOE = False
     End If
    End Function
     這是一個(gè)Function 過(guò)程,該過(guò)程有一個(gè)整型形參,其返回值為 Boolean 類型。當(dāng)參數(shù)值為奇數(shù)時(shí),過(guò)程返回False,否則返回True。在下面的事件過(guò)程中調(diào)用該過(guò)程:
    Private Sub Form_Click()
     Dim RetNum As Boolean
     num = InputBox("請(qǐng)輸入一個(gè)整數(shù)")
     num = Val(num)
     RetNum = NumOE(num)
     If RetNum = True Then
     a$ = "偶數(shù)"
     Else a$ = "奇數(shù)"
     End If
     Print num; "‐‐‐‐ "; "是一個(gè)"; a$
    End Sub
    2.分析下面程序運(yùn)行的結(jié)果。
    Private Function Multiply (n as Integer) As Integer
     Multiply=1
     do While n>0
     Multiply=Multiply*n
     n=n-1
     Loop
    End Function
    Private Sub Form_Click()
     Dim Sum As Integer, I As Integer
     For I=5 to 1 Step-1
     Sum=Sum+Multiply(I)
     Next
     Print "Sum=";Sum,
    End Sub
    解答:
     本題是計(jì)算: 5!
    所以運(yùn)行結(jié)果:
     Sum=120
    本程序只計(jì)算了5!=120。因?yàn)椋螀 是按地址傳遞的,在第一次調(diào)用Multiply 函數(shù)后n 的值為0,由于實(shí)參與形參共享地址單元,實(shí)參i 的值也是0。當(dāng)執(zhí)行Sum=Sum+Multiply(I) 語(yǔ)句后,Sum 的值是120,執(zhí)行Next 語(yǔ)句后在判斷語(yǔ)句For I=5 to 1 Step -1 時(shí)就退出 For 循環(huán)。因此循環(huán)只執(zhí)行了一次,求了5!的值。
    3.分析下面程序運(yùn)行的結(jié)果。
    Private Function Multiply (ByVal n as Integer) As Integer
    Multiply=1
     do While n>0
     Multiply=Multiply*n
     n=n-1
     Loop
    End Function
    Private Sub Form_Click()
     Dim Sum As Integer, I As Integer
     For I=5 to 1 Step-1
     Sum=Sum+Multiply(I)
     Next
     Print "Sum=";Sum,
    End Sub
    解答:
    運(yùn)行結(jié)果:
     Sum=153
    4.用函數(shù)調(diào)用的方法計(jì)算∑n
    解答:
    Private Static Function Fac(n As Integer) As Integer
     Dim f As Integer
     f = f + n
     Fac = f
    End Function
    Private Sub Form_Click()
     Dim I As Integer
     For I = 1 To 5
     Print "∑"; I & "=" & Fac(I)
     Next I
    End Sub
    程序分析:
    ●過(guò)程定義語(yǔ)句Private Static Function Fac(n As Integer) 是為了使過(guò)程中所有的局部變量為靜態(tài)變量。在過(guò)程頭前加上 Static 關(guān)鍵字時(shí),無(wú)論過(guò)程中的變量是用 Static 、Dim 或Private 聲明的還是隱式聲明的,都會(huì)變成靜態(tài)變量。
    ●被調(diào)函數(shù)Fac 是計(jì)算∑n 的值,局部變量f 為靜態(tài)變量,在每次調(diào)用Fac 函數(shù)結(jié)束時(shí)變量 f 的值保留為∑i,再與下次的I+1 相加。
    ●如果不用Static 聲明變量 f ,則以前的和不會(huì)保留,每次調(diào)用時(shí)函數(shù)中 f 的初值為0。如果在模塊的聲明段定義 f,則 f 成為模塊級(jí)變量,也會(huì)收到同樣的效果。但是,由于其它過(guò)程也可以訪問(wèn)和改變模塊級(jí)變量的值,所以運(yùn)算結(jié)果也許不可靠,代碼將難于維護(hù)。