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

字號:

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