VB程序的設(shè)計(jì)教程課后答案_第1頁(yè)
VB程序的設(shè)計(jì)教程課后答案_第2頁(yè)
VB程序的設(shè)計(jì)教程課后答案_第3頁(yè)
VB程序的設(shè)計(jì)教程課后答案_第4頁(yè)
VB程序的設(shè)計(jì)教程課后答案_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余14頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課后習(xí)題解答第一、二章:1 、 簡(jiǎn)述VB6.0 的主要特點(diǎn)答: 方便、直觀的可視化設(shè)計(jì)工具;面向?qū)ο蟪绦蛟O(shè)計(jì)方法;事件驅(qū)動(dòng)的編程機(jī)制;易學(xué)易用的應(yīng)用程 序集成開發(fā)環(huán)境;結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言;完備的聯(lián)機(jī)幫助功能;強(qiáng)大的多媒體、數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)功能。2 、 當(dāng)正常安裝 VB6.0后,誤把 Windows子目錄刪除。當(dāng)重新安裝Windows后,是否需要再次安裝VB6.0 ?答:要重新安裝的。因?yàn)榘惭b VB6.0時(shí),有些VB程序被系統(tǒng)自動(dòng)安裝在Windows目錄下,所以一旦刪除Windows 子目錄,就必須重新安裝VB6.0。3 、 Visual Basic 6.0 分為學(xué)習(xí)版、專業(yè)版和企業(yè)版,如何知道所安

2、裝的是哪個(gè)版本?答:在VB6.0 的啟動(dòng)界面上,能顯示對(duì)應(yīng)的版本。4 、 敘述建立一個(gè)完整應(yīng)用程序的過(guò)程答:首先建立用戶界面的控件對(duì)象(簡(jiǎn)稱控件) ;然后對(duì)控件屬性進(jìn)行設(shè)置;再對(duì)控件事件過(guò)程及編程;保存應(yīng)用程序;程序調(diào)試和運(yùn)行。5 、 Visual Basic 6.0 有多種類型窗口,若要在設(shè)計(jì)時(shí)看到代碼窗口,應(yīng)怎樣操作?答: 選擇“視圖”>“代碼窗口”命令或單擊“工程資源管理器”窗口中的“查看代碼”按鈕。6 、 當(dāng)建立好一個(gè)簡(jiǎn)單的應(yīng)用程序后, 假定該工程僅有一個(gè)窗體模塊。 試問(wèn)該工程涉及多少個(gè)要保存的文件? 若要保存該工程的所有文件, 應(yīng)先保存什么文件?再保存什么文件?若不這樣做, 系

3、統(tǒng)會(huì)出現(xiàn)什么信息? 答: 涉及兩個(gè)文件要保存。先保存窗體文件( .frm ) ,再保存工程文件( .vbp ) 。若先保存工程文件,系 統(tǒng)也會(huì)先彈出“文件另存為”對(duì)話框,要求先保存窗體文件。7 、 保存文件時(shí),若不改變目錄名,則系統(tǒng)默認(rèn)的目錄是什么?答:系統(tǒng)默認(rèn)的目錄是錄是VB988 、 安裝Visual Basic 6.0 后,幫助系統(tǒng)是否也已安裝?答:沒有。VB6.0的幫助系統(tǒng)在兩光盤上,即MSDNLibrary ,其中還包含了 VG VFP等其他語(yǔ)言的幫助系統(tǒng)。9 、 如何使用 Visual Basic 6.0 的幫助系統(tǒng)? 答:最方便的方法是選定要幫助的容,然后按F1功能鍵,這時(shí)系統(tǒng)打

4、開MSDNLibrary查閱器,直接顯示與選定容有關(guān)的幫助信息。10 、 什么是類?什么是對(duì)象?什么是事件過(guò)程? 答: 類是同類對(duì)象集合的抽象,它規(guī)定了這些對(duì)象的公共屬性和方法; 對(duì)象是類的一個(gè)實(shí)例,對(duì)象包含三個(gè)要素:屬性、方法和事件。當(dāng)在對(duì)象上發(fā)生了事件后,應(yīng)用程序就要處理這個(gè)事件,而處理的步驟就是事件過(guò)程。11 、 屬性和方法的區(qū)別是什么? 答:屬性是對(duì)象的特征,方法是對(duì)象的行為。前者有值,可以被賦值或引用;后者沒有值,表示能夠執(zhí)行的操作。12 、當(dāng)標(biāo)簽邊框的大小由 Caption 屬性的值進(jìn)行擴(kuò)展或縮小時(shí),應(yīng)對(duì)該控件的什么屬性進(jìn)行何種設(shè)置?答:將該控件的Autosize 屬性值設(shè)置為 t

5、rue 。13 、在 VB6.0 中,命令按鈕的顯示形式可以有標(biāo)準(zhǔn)的和圖形的兩種選擇,它們通過(guò)什么屬性來(lái)設(shè)置?若選擇圖形的,則通過(guò)什么屬性來(lái)裝入圖形?若已在規(guī)定的屬性里裝入了某個(gè)圖形文件,但該命令按鈕還是不能顯示該圖形,而顯示的是Caption 屬性設(shè)置的文字,應(yīng)怎樣修改?答: 命令按鈕的顯示形式通過(guò)將Style 屬性值設(shè)置為 Graphical 來(lái)實(shí)現(xiàn)。 通過(guò) Picture 屬性來(lái)裝入圖形。 不能顯示圖形是因?yàn)镾tyle 屬性值被設(shè)置為 Standard ,只要將其改為 Graphical ,并且將 Caption的值設(shè)置為空即可。14 如果文本框要顯示多行文字,應(yīng)對(duì)什么屬性設(shè)置為何值?答

6、: 將 MultiLine 屬性的值設(shè)置為 True 。15 標(biāo)簽和文本框的區(qū)別是什么?答:在程序運(yùn)行時(shí),標(biāo)簽只能顯示文字,不能輸入文字,顯示文字通過(guò)對(duì) Caption 屬性賦值來(lái)實(shí)現(xiàn);而文本框既能顯示文字,也能輸入文字,這通過(guò) text 屬性來(lái)實(shí)現(xiàn)。16 要讓文本框獲得焦點(diǎn)的方法是什么?答:SetFocus 方法。17 、簡(jiǎn)述文本框的 Change和KeyPress事件的區(qū)別答: 相同點(diǎn)是當(dāng)在文本框輸入容時(shí), 同時(shí)激發(fā)上述兩個(gè)事件; 不同點(diǎn)是 Keypress 事件可通過(guò)參數(shù)KeyAscii返回所按鍵的編碼值, 可依此判斷數(shù)據(jù)輸入的正確性或數(shù)據(jù)輸入結(jié)束與否, 因而該事件使用較多; chang

7、e事件還可以發(fā)生在程序改變文本框的 text 屬性時(shí)。18 當(dāng)某文本框輸入數(shù)據(jù)后(按了回車鍵) ,經(jīng)判斷后認(rèn)為是數(shù)據(jù)輸入錯(cuò),應(yīng)怎樣刪除原來(lái)文本框中的數(shù)據(jù)?答: 假定文本框的名稱為 Text1 ,則事件過(guò)程如下:Private Sub Text1_KeyPress(KeyAscii As Integer )if KeyAscii = 13 thenif 出錯(cuò)條件判斷成立thenText1= ”end ifend ifend sub注意:刪除剛輸入的字符,通過(guò) KeyAscii=0 語(yǔ)句實(shí)現(xiàn);焦點(diǎn)定位文本框?qū)ο蟛捎?SetFocus 方法。19 在程序運(yùn)行前,對(duì)某些控件設(shè)置屬性值,除了在窗體中直接

8、設(shè)置外,還可以通過(guò)代碼設(shè)置,這些代碼一般存放在什么事件中?如果要將命令按鈕定位在窗體的中央,試寫出事件過(guò)程代碼。答: 這些代碼一般放在Forem_Load()事件過(guò)程中。 將窗體定位在屏幕的中央, 只能在屬性窗口中將Form1窗口的 StartUpPosition 屬性值設(shè)置為2(表示屏幕中心),該屬性不能在運(yùn)行時(shí)設(shè)置。要將按鈕定位在窗體的中央,事件過(guò)程如下:Private sub Form_Load()Command1.left= Form1.scaleWidth2-command1.Width2Commandl.Top = Forml.ScaleHeight 2 commandl.Heig

9、ht 2End Sub其中, ScaleWidth ScaleHeight 表示窗體的相對(duì)寬度和高度。20 、VB6.0提供的大量圖形文件存放在哪個(gè)目錄?若你的計(jì)算機(jī)上沒有安裝,應(yīng)怎樣安裝這些圖形文件?答:存放在Graphics目錄下。在 VB6.0的安裝盤上可以找到Graphics子目錄,將其復(fù)制到硬盤上的VB目錄下 。第 3章:略(在書本上)1 合法的有: ( 1 )單精度(3)單精度(4)雙精度(6)整形( 7)字符型(9)日期型(10)雙精度(12)八進(jìn)制表示(14)十六進(jìn)制表示(15)邏輯型(18 )單精度數(shù)2 合法變量有: ( 1 ), (2) , (6) , (9) , (10)

10、 , ( 11)3、算術(shù)表達(dá)式寫成 VB表達(dá)式11) | x+y | + z 5 a abs(x+y) +zA5(2) (a+xy) 6 a 11 + x * y ) a 6(3 )a (10*x+ sqr(3*y) ) / (x * y )( 4 )( -b+sqr(bA2-4*a*c) )/2/a(5) a 1 / (1/r1+1/r2+1/r3)(6) a sin(45*3.14/180)+ ( exp(10)+ log(10) )/ sqr( x+y+1)4、根據(jù)條件寫出相應(yīng)的VB表達(dá)式(1) chr( int ( Rnd * 10 +67 )(2) int ( Rnd * 101 +

11、100 )(3) x * y >0(4) x%5=0 or x % 7 =0(5) (x mod 10)10 + x /10(6)Round(123.2389*100)/100(7) Ucase (c ) >=” A”and Ucase(c )<= ” Z” or Lcase(c ) > =”a” and Lcase(c )<= ” z”(8) Mid ( s, 5, 6 )(9) x >=10 andx <20(10) ( x < z and y >z ) or ( x >z and y < z)(11) x>z and

12、 y > z5 、 下出下列表達(dá)式的值:(1) 123+23 mod 10 7 +Asc( "A")a 188,(2)100+“ 100" & 100 a 200100(3) Int ( 68.555*100+0.5)/100 a 68.56(4) 已知 A$= "87654321”,求表達(dá)式 Val(Left$(A$,4)+ Mid(A,4,2) 的值 a 876554(5) DateAdd( "m',1,#1/30/2000#) a 2000-2-29(6) Len (" VB程序設(shè)計(jì)”)a 66 、 略第

13、4章: VB 控制語(yǔ)句1 、 結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)是什么?答: 順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。2 、 指出下列賦值語(yǔ)句中的錯(cuò)誤(包括運(yùn)行時(shí)錯(cuò)誤) :( 1) 10x=sin(x)+y 10x 是非法變量名( 2) c=3+sqr(-3) 待求平方根的數(shù)為負(fù)數(shù)( 3) c+x+y=c*y 賦值符左邊是表達(dá)式了( 4) x=sin(x)/(20 mod 2) 分母為零了3、 Msgbox 函數(shù)與 InputBox 函數(shù)之間有什么區(qū)別?各自獲得什么值?答: 兩個(gè)函數(shù)共同之處都顯示對(duì)話框。區(qū)別: Inputbox 函數(shù)等待用戶在文本框中輸入數(shù)據(jù),獲得的是輸 入的字符串?dāng)?shù)據(jù);Msgbox 函數(shù)等

14、待用戶按一按鈕,獲得的是表示按鈕的整數(shù)值,以決定程序的流向。4、 要使單精度變量x,y,z 分別保留 1位、 2位、3位小數(shù),并在窗體顯示,應(yīng)使用什么函數(shù)?如何編寫對(duì)應(yīng)的 print 方法?答: 使用 format 函數(shù),具體如下:.專業(yè) .專注 .print Format(x, " 0.0 ")print Format ( y ,“ 0.00")print Format ( z ," 0.000")5、 語(yǔ)句if <表達(dá)式then 答:算術(shù)、關(guān)系、邏輯表達(dá)式6、 指出下列語(yǔ)句中的錯(cuò)誤:(1) if x >y then print

15、x(2) if 10Vx<20 then x=x+207、按照下列條件,寫出相應(yīng)的條件語(yǔ)句(1)字符型變量中第三個(gè)字符是if Mid ( c , 3, 1 )=(2)禾1J用 if 語(yǔ)句、select case中的表達(dá)式可以是算術(shù)、字符、關(guān)系、邏輯表達(dá)式中的哪些?'表達(dá)式書寫錯(cuò)誤,應(yīng)寫成:x>=y'表達(dá)式書寫錯(cuò),應(yīng)是: 10Vx and x<20C”時(shí),利用 Msgbox顯示"yes",否則顯示"No" then Msgbox "yes" else Msgbox"No'rivate

16、sub command1.click()x=val( text1)Select casecase is > 20y = x * x + 3 * x +2case is>=10y = sqr ( 3 * x ) - 2case is >0y= 1 / x + Abs ( x )end selectprint yend subx,y,z中的最大值并存入變量max中。語(yǔ)句兩種方法計(jì)算分段函數(shù):答:private sub command1.click()x=val( text1)if x > 20 theny = x * x + 3 * x +2elseif x>=10

17、theny = sqr ( 3 * x )- 2elseif x>0 theny= 1 / x + Abs ( x )end ifprint yend sub(3)利用if語(yǔ)句和葉 函數(shù)兩種方法求三個(gè)數(shù)if x>y then max=x else max = yif z>max then max = z max = iif ( x>y , x , y ) : max = iif ( max >z, max , z )8、 在多分支結(jié)構(gòu)的實(shí)現(xiàn)中,可以用 if thenelseif endif 形式的語(yǔ)句,也可以用selectcase - end Select形式的語(yǔ)

18、句,由于后者的條件書寫更靈活、簡(jiǎn)潔,是否完全可以取代前者?答:雖然Select Caseend Select 形式的語(yǔ)句中條件書寫更靈活、簡(jiǎn)潔,程序可讀性強(qiáng),但使用它有限制。(適合于對(duì)一個(gè)變量判斷的)首先,看該語(yǔ)句的形式:Select Case <變量或表達(dá)式>case <表達(dá)式列表1>< 語(yǔ)句塊1>case <表達(dá)式列表2>< 語(yǔ)句塊2 >.專業(yè).專注.Case else < 語(yǔ)句塊n+1 >End Select其中變量或表達(dá)式只能含有一個(gè)變量,任何含有多個(gè)變量的形式都是錯(cuò)誤的。如,要判斷x,y是否在第一、三象限,若輸入

19、如下語(yǔ)句:select case x,y, VB 程序會(huì)顯示“缺少:語(yǔ)句結(jié)束”。其次,在后面的case表達(dá)式列表中不能出現(xiàn)Select case 變量或表達(dá)式中使用的變量,也不能出現(xiàn)主教材上列出的四種形式以外的符號(hào)或關(guān)鍵字(符號(hào)是:逗號(hào);關(guān)鍵字是:is, to )。9、 計(jì)算下列循環(huán)語(yǔ)句的次數(shù)(1) For I = -3 to 20 step 46(2) For I = -3.5 to 5.5 step 0.519(3) For I = -3.5 to 5.5 step -0.5無(wú)循環(huán),因?yàn)椴介L(zhǎng) <0 ,循環(huán)初值小于終值(4) For I = -3 to 20 step 0無(wú)限循環(huán),因?yàn)?/p>

20、步長(zhǎng) =010、 下列30-90為語(yǔ)句標(biāo)號(hào),分別標(biāo)記該語(yǔ)句,第40名共執(zhí)行了幾次,第50名共執(zhí)行了幾次,執(zhí)行第 90號(hào)語(yǔ)句后顯示的結(jié)果是多少?30 For j =1 to 12 Step 3循環(huán) 4次40 For k = 6 to 2 step -2循環(huán)3次,被執(zhí)行4次50 mk = k共執(zhí)行4*3=12次60 print j , k70next k80next j90 print j , k , mk13 0 211、 如果事先不知道循環(huán)次數(shù),如何用 forNext結(jié)構(gòu)來(lái)實(shí)現(xiàn)?答:將循環(huán)終值設(shè)置得足夠大,再在循環(huán)體設(shè)置條件語(yǔ)句,滿足條件退出循環(huán)。12、 利用循環(huán)結(jié)構(gòu),實(shí)現(xiàn)如下功能:(1)s=

21、0: for I =1 to 10s = s + ( i+1)*(2*i+1)next i(2)分別統(tǒng)計(jì)1100中,滿足3的倍數(shù)、7的倍數(shù)的數(shù)各是多少?s3 = 0: s7 = 0for I =1 to 100if I mod 3 = 0 then s3 = s3 +1if I mod 7 = 0 then s7 = s7 +1 next i(3)將輸入的字符串以反序顯示。例如,輸入“ASDFGHJKL,顯示“ LKJHGFDSA。s = InputBox("請(qǐng)輸入字符串”)for I = Len( s ) to 1 step -113、print Mid ( s, I, 1 ) n

22、ext i卜面程序的運(yùn)行結(jié)果是什么?該程序的功能是什么?10100將20轉(zhuǎn)換成2進(jìn)制數(shù)表示Private Sub Command1_Click() Dim x$, n% n = 20 Do While n <> 0 a = n Mod 2 n = n 2 x = Chr(48 + a) & x Loop Print x End Sub 14、22, 484利用相差法求x,y的最大公約數(shù)和最小公 倍數(shù)下面程序的運(yùn)行結(jié)果是什么?該程序的功能是什么? Private Sub Command2_Click() Dim x%, y%, z% x = 242: y = 44 z = x

23、 * y Do Until x = yIf x > y Then x = x - y Else y = y Loop Print x, z / x End Sub15、利用隨機(jī)函數(shù)產(chǎn)生50100圍的20個(gè)隨機(jī)數(shù),顯示其中最大值,最小值和平均值。Private Sub Command3_Click()Dim i%, min%, max%, avg!, x% min = 100: max = 50: avg = 0 For i = 1 To 20x = Int(Rnd * 51 + 50)Print x;If x > max Then max = xIf x < min Then

24、 min = xavg = avg + xNext IPrint最小值是:”;min;" 平均值是:"avg / 20Print "20個(gè)隨機(jī)數(shù)最大是:";max;"End Sub第5章:數(shù)組和自定義類型1、2、在VB6.0中,數(shù)組的下界默認(rèn)為 0,用什么語(yǔ)句可以重新定義數(shù)組的默認(rèn)下界?opention Basic 語(yǔ)句要分配存放12個(gè)元素的整形數(shù)組,下列數(shù)組聲明(若下界無(wú),按默認(rèn)規(guī)定)哪些符合要求?(1) n=12Dim a ( 1 to n ) As IntergerRedim a ( n )(2) Dim a%()n=11(3) Dim

25、a%2,3(5) Dim a%(10 )(4) Dim a ( 1,1,3) as Integer(6) Dim a!()ReDim a ( 1 to 12 ) Dim a% ( 2,3 )ReDim a (3, 2 ) As Integer(8) Dim a ( 1 to 3 1 to 4 ) AsInteger答:2、4、7、端合要求3、 程序運(yùn)行時(shí)顯示“下標(biāo)越界”可能產(chǎn)生的錯(cuò)誤有哪幾種情況?答:下標(biāo)比下界小或比上界大4、 已知下面數(shù)組聲明,寫出它的數(shù)組名、數(shù)組類型、維數(shù)、各維的上下界、數(shù)組的大小、并按行的順序列出各元素。Dim a ( -1 to 2, 3) as single答:數(shù)組名

26、為a,數(shù)組類型為單精度,二維,各維的下界為-1和0,上界分別為2和3;數(shù)組的大小為4*4共16個(gè)元素;各元素標(biāo)號(hào)排列為:a (-1, 0 )a (-1, 1)a (-1,2 )a (-1,3 )a (0, 0 )a (0,1)a (0, 2 )a (0, 3 )a (1, 0 )a (1, 1)a (1,2 )a (1,3 )a (2, 0)a (2,1)a (2, 2 )a (2, 3 )5、 利用隨機(jī)數(shù)生成兩個(gè)矩陣(數(shù)據(jù)不一定相同,前者 30-70圍,后者101-135) (1)將兩個(gè)矩陣相加結(jié)果放入C矩陣中。For i = 1 To 4Forj = 1 To 4c(i, j) = a(i

27、, j) + b (i, j)Next jNext i(2)將A矩陣轉(zhuǎn)置Fori = 2 To 4For j = 1 To i- 1t = a(i, j): a(i, j) = a(j, i): a(j, i) = tNext jNext i(3)統(tǒng)計(jì)C矩陣中最大值和下標(biāo)Dim max%, maxi%, maxj%max = c(1, 1): maxi = 0: maxj = 0For i = 1 To 4Forj = 1 To 4If c(i, j) > max Thenmax = c(i, j): maxi = i: maxj = jEnd IfNext jNext i(4)以下三角

28、形式顯示A矩陣,上三角形式顯示B矩陣For i = 1 To 4For j = 1 To iPrint a(i, j); Space(2);Next jPrintNext iPrint " 輸出B上三角元素"For i = 1 To 4Print Tab(i * 5);For j = i To 4Print b(i, j);Next jPrintNext i( 5 )將 A 矩陣第一行與第三行對(duì)應(yīng)元素交換位置For j = 1 To 4t = a(1, j):a(1, j) = a(3,j): a(3, j) = tNext j( 6) 求 A 矩陣 矩陣條對(duì)角線元素之和S

29、um = 0For i = 1 To 4Sum = Sum + a(i, i) + a(i, 5- i)Next i( 7 )將 A 矩陣按列的次序把各元素放入一維數(shù)組 D 中,顯示結(jié)果Dim D%(16)For i = 1 To 4For j = 1 To 4D(k) = a(j, i): k = k + 1Next jNext iPrint "D 一維數(shù)組無(wú)素為 :"For k = 0 To 15Print D(k);Next k6 、 聲明一個(gè)一維字符類型數(shù)組,有20個(gè)元素,每個(gè)元素最多放10個(gè)字符,要求:1 )由隨機(jī)數(shù)形成小寫字母構(gòu)成的數(shù)組,每個(gè)元素的字符個(gè)數(shù)由隨機(jī)

30、數(shù)產(chǎn)生,圍1102)要求將生成的數(shù)組分4行顯示,規(guī)定每個(gè)元素寬度為103)顯示生成的字符數(shù)組中字符最多的元素Dim st(1 To 20) As String, c As String * 1Dim i%, n%For i = 1 To 20n = Int(Rnd * 11 + 1)For j = 1 To nc = Chr(Int(Rnd * 26 + 97)st(i) = st(i) & cNext jNext i'( 2)按一行顯示5個(gè)字符串要求輸出For i = 1 To 20Print st(i); Space(15 - Len(st(i);If i Mod 5 =

31、0 Then PrintNext i'( 3)顯示20個(gè)中字符個(gè)數(shù)最多的一個(gè)maxlen = 0maxstr = ""For i = 1 To 20If Len(st(i) > maxlen Thenmaxlen = Len(st(i)maxstr = st(i)End IfNext iPrintPrint " 最多字符個(gè)數(shù):" maxlen; " 字符串是 :" maxstr7 簡(jiǎn)述列表框和組合框的異同處答:相同處都是可存放字符串;不同處在于:組合框是文本框和列表框的組合,可以輸入容,但要通過(guò)additem 方法添加;

32、列表框只能選擇項(xiàng)目,不能直接輸入容。8 列表框或組合框中選中的項(xiàng)目總項(xiàng)目數(shù)的屬性分別是什么?答:表示選中的容,屬性有:text ;總項(xiàng)目數(shù)的屬性為 ListCounts 。9 簡(jiǎn)述自定義類型與自定義變量的區(qū)別答: 前者僅定義了類型,這如同系統(tǒng)提供的 integer string 等基本類型;后者系統(tǒng)為其分配了存儲(chǔ)單元。10 自定義一個(gè)職工類型,包含職工號(hào) 工資。聲明一個(gè)職工類型的動(dòng)態(tài)數(shù)組。輸入 n 信職工的數(shù)據(jù); 要求按工資遞減的順序排序,并顯示排序的結(jié)果,每個(gè)職工一行顯示三項(xiàng)信息。Private Type zgtypeno As Integername As String * 10gz As

33、 SingleEnd TypeDim s( ) As zgtype, n%Private Sub Form_click()Dim t As zgtypen = InputBox(" 請(qǐng)輸入人數(shù) ")ReDim s(1 To n)With s(i).no = InputBox(".name = InputBox(.gz = InputBox("For i = 1 To n請(qǐng)輸入職工工號(hào)")請(qǐng)輸入職工")請(qǐng)輸入職工工資")End WithNext i' 根據(jù)工資遞減排序For i = 1 To n - 1For j =

34、i + 1 To nIf s(j).gz > s(j - 1).gz Thent = s(j): s(j) = s(j - 1): s(j - 1) = tEnd IfNext jNext i' 輸出信息For i = 1 To nPrint s(i).no, s(i).name, s(i).gzNext iEnd Sub第六章:過(guò)程1 、 簡(jiǎn)述子過(guò)程和函數(shù)過(guò)程的共同點(diǎn)和不同之處答: 子過(guò)程和函數(shù)過(guò)程的共同點(diǎn):函數(shù)過(guò)程和子過(guò)程都是功能相對(duì)獨(dú)立的一種子程序結(jié)構(gòu),它們有各自的過(guò)程頭、變量聲明和過(guò)程體。在程序中使用它們不但可避免書寫重復(fù)的程序語(yǔ)句,縮短代碼,而且可使程序條理清晰,容易閱

35、讀。兩者不同點(diǎn)是:1 )過(guò)程聲明的關(guān)鍵字不同,子過(guò)程用的是sub ,函數(shù)過(guò)程用的是function.2)子過(guò)程名無(wú)值就無(wú)類型聲明,函數(shù)過(guò)程名有值就有類型聲明3 ) 函數(shù)過(guò)程名兼作結(jié)果變量, 因此在函數(shù)過(guò)程體至少對(duì)函數(shù)過(guò)程名賦值; 而子過(guò)程名在過(guò)程體不能賦值。4 )調(diào)用方式不同,子過(guò)程是一條獨(dú)立的語(yǔ)句,可用call 子過(guò)程或或省略call 直接以子過(guò)程名調(diào)用;函數(shù)過(guò)程不是一條獨(dú)立語(yǔ)句,是一個(gè)函數(shù)值,必須參與表達(dá)式的運(yùn)算5)一般來(lái)說(shuō),一個(gè)函數(shù)過(guò)程可以被一個(gè)子過(guò)程代替,代替時(shí)只要改變函數(shù)過(guò)程定義的形式,并在子過(guò)程的形參表中增加一個(gè)地址傳遞的形參來(lái)傳遞結(jié)果。2 、 什么是形參、 什么是實(shí)參?什么時(shí)候是

36、值引用?什么是地址引用?地址引用時(shí), 對(duì)應(yīng)的實(shí)參有什么影響? 答: 形參是在定義過(guò)程時(shí)的一種形式虛設(shè)的參數(shù),只代表了該過(guò)程參數(shù)的個(gè)數(shù)、類型、位置,形參的名字并不重要,也沒有任何值,只表示在過(guò)程體進(jìn)行某種運(yùn)算或處理。實(shí)參是調(diào)用子過(guò)程時(shí)提供給過(guò)程形參的初始值或通過(guò)過(guò)程體處理后獲得的結(jié)果。調(diào)用時(shí)用實(shí)參代替形參,實(shí)參與形參在個(gè)數(shù)類型位置一一對(duì)應(yīng),實(shí)參與形參名相同與否無(wú)關(guān)。實(shí)參與形參的結(jié)合有兩種方法,即傳地址( byref )和傳值 (byval) ,或稱地址引用和值引用,缺省為地址引用。值引用時(shí),系統(tǒng)將實(shí)參的值傳遞給對(duì)應(yīng)的形參,實(shí)參與形參斷開了聯(lián)系。如果在過(guò)程體中改變形參的值,不會(huì)影響到實(shí)參。地址引用

37、時(shí),實(shí)參與形參變量共同用一個(gè)存儲(chǔ)單元,如果在過(guò)程中改變了形參的值,則對(duì)應(yīng)的實(shí)參也將發(fā)生改變。地址引用時(shí),實(shí)參只能是變量,不能是常量或表達(dá)式。1)2)3)4)sub f1 ( n % ) as Integer function f1 % ( f1 % ) sub f1 (byval n % ( ) ) sub f1 ( x (i) as integer )指出下列過(guò)程語(yǔ)句說(shuō)明中的錯(cuò)誤:錯(cuò)誤為 sub 子過(guò)程名無(wú)返回值,也就沒有類型函數(shù)名與形參名相同了形參 n 為數(shù)組,不允許聲明為 byval 值傳遞形參 x( i) 不允許為數(shù)組元素已知如下求兩個(gè)平方數(shù)和的 fsum 子過(guò)程:public sub

38、 fsum( sum % ,byval m%, byval n%) sum = a*a + b * bend sub在事件過(guò)程中若有如下變量聲明:private sub command1_click ( )Dim a%, b% ,c!a = 10 : b = 20則指出如下過(guò)程調(diào)用語(yǔ)句的錯(cuò)誤所在:( 1) fsum 3 , 4 , 5 fsum 子過(guò)程的第一個(gè)形參是地址傳遞,因此對(duì)應(yīng)的實(shí)參應(yīng)該是個(gè)變量,不應(yīng)是 3( 2) fsum c , a , b'fsum子過(guò)程的第一個(gè)形參是地址傳遞并且是整形,但對(duì)應(yīng)的C是單精度( 3) fsum a + b, a , b fsum 子過(guò)程的第一個(gè)

39、形參是地址傳遞,對(duì)應(yīng)的實(shí)參不應(yīng)該是個(gè)表達(dá)式 a+b( 4) call fsum (sqr (a) , sqr (b )fsum 子過(guò)程的第一個(gè)形參是地址傳遞,對(duì)應(yīng)的實(shí)參不應(yīng)該是個(gè)表達(dá)式 sqr(c)( 5) call fsum c, a , b 用 call 語(yǔ)句調(diào)用 fsum 子過(guò)程,必須加圓括號(hào)括起實(shí)參。5 利用迭代法求議程x2-a=0 的近似根,要求精度為10-5 ,失代公式為。編制三個(gè)過(guò)程:迭代函數(shù)過(guò)程迭代子過(guò)程和遞歸法函數(shù)過(guò)程。Private Sub Command1_Click()PrintPrint " 函數(shù)過(guò)程 " f1(10)Call s1(x!, 10)

40、Print " 子過(guò)程 " x! Print " 遞歸調(diào)用 " dgf(x, 10)End SubPublic Function f1(a!)' 函數(shù)過(guò)程Dim x!, x1!x = aDox1 = (x + a / x) / 2If Abs(x - x1) < 0.00001 Then Exit Dox = x1Loopf1 = xEnd FunctionPublic Sub s1(x1!, a!)' 子過(guò)程Dim x!x = 9Dox1 = (x + a / x) / 2If Abs(x1 - x) < 0.00001 T

41、hen Exit Dox = x1LoopEnd SubPublic Function dgf!(x, a!) '遞歸調(diào)用x1 = (x + a / x) / 2If Abs(x - x1) < 0.00001 Thendgf = xElsedgf = dgf(x1, a)End IfEnd Function6 、 要使變量在某事件過(guò)程中保留值,有哪幾種變量聲明的方法?答:聲明變量為全局(public) 、通用聲明段或標(biāo)準(zhǔn)模塊聲明的模塊級(jí)變量、局部過(guò)程聲明的表達(dá)態(tài)變量static 。7 、 為了使某變量在所有的窗體中都能使用,應(yīng)在何處聲明該變量?答:在標(biāo)準(zhǔn)模塊聲明為全局變量8 、

42、 在同一模塊、不同過(guò)程中聲明的相同變量名,兩者是否表示同一個(gè)變量??jī)烧唛g有無(wú)聯(lián)系?答:表示不同的變量;兩者沒有關(guān)系。第 7章:用戶界面設(shè)計(jì)1 、 框架的作用是什么?如何在框架中建立控件?答: 對(duì)單選按鈕進(jìn)行分組,每一組單選按鈕都是獨(dú)立的,對(duì)一組單選按鈕進(jìn)行操作不會(huì)影響其他組單選按鈕的選擇;另外可對(duì)窗體上現(xiàn)有控件進(jìn)行分組,提供視覺上的區(qū)分和總體的激活或屏蔽特性。在窗體上創(chuàng)建框架及其部控件時(shí),必須先建立框架,然后在其中建立各種控件。在框架創(chuàng)建控件的方法 如下:+”指針,在框架行當(dāng)位置拖拉出適當(dāng)大小的控件,不能1 )先單擊工具箱上的工具,然后利用出現(xiàn)的“使用雙擊工具箱上工具的自動(dòng)方式。2 ) 如果要

43、用框架對(duì)窗體中現(xiàn)有控件進(jìn)行分組, 則應(yīng)先選定控件, 然后剪切到剪貼板, 最后粘貼到框架上。2 如果要讓定時(shí)器每30秒產(chǎn)生一個(gè)Timer 事件,則 Interval 屬性應(yīng)設(shè)置為多少?答: 定時(shí)器是以 Interval 屬性的值作為時(shí)間間隔產(chǎn)生Timer 事件的。 Interval 屬性值的單位ms(0.001s) ,因此當(dāng) Interval 屬性值為 30000時(shí),每 30s 發(fā)生一個(gè) Timer 事件。3 、滾動(dòng)條的Scroll和Change事件有什么區(qū)別?答: 滾動(dòng)條的 Scroll 事件是在拖動(dòng)滑塊時(shí)發(fā)生的事件,單擊兩端的箭頭或空白處不會(huì)產(chǎn)生 Scroll 事件。此外,在拖動(dòng)滑塊過(guò)程中會(huì)

44、產(chǎn)生許多 Scroll 事件,而不是僅僅在拖動(dòng)滑塊結(jié)束時(shí)產(chǎn)生一個(gè)Scroll 事件。滾動(dòng)條的Change事件是當(dāng)Value屬性值改變時(shí)產(chǎn)生的事件。單擊兩端的箭頭或空白處, Value屬性值都會(huì)改變,Change事件隨之產(chǎn)生;拖動(dòng)滑塊過(guò)程不會(huì)產(chǎn)生Change事件,直到拖動(dòng)結(jié)束時(shí)Value屬性值改變了才會(huì)產(chǎn)生Change事件。因此,拖動(dòng)滑塊過(guò)程中會(huì)多次執(zhí)行Scroll 事件過(guò)程,拖動(dòng)滑塊結(jié)束時(shí)產(chǎn)生一個(gè)Change 事件;單擊兩端的箭頭或空白處,會(huì)執(zhí)行Change 事件過(guò)程,而不會(huì)執(zhí)行Scroll 事件過(guò)程。4 默認(rèn)情況下,進(jìn)度條是水平形式的,若要讓進(jìn)度條變成垂直形式,應(yīng)如何設(shè)置?答: 進(jìn)度條有水平

45、和垂直兩種形式,由屬性O(shè)rientation 決定:0 ccOrentationHorizontal: (缺?。┻M(jìn)度條是水平方向1 ccOrentationVertical :進(jìn)度條為垂直方向因此,若要讓進(jìn)度條變成垂直形式,其Orientation 屬性應(yīng)設(shè)置為 1。5 在使用“字體”對(duì)話框之前必須設(shè)置什么屬性?答:在顯示“字體”對(duì)話框前必須設(shè)置Flags 屬性,指示選用何種字體,否則將發(fā)生不存在字體錯(cuò)誤。6 熱鍵與快捷鍵有什么區(qū)別?應(yīng)如何實(shí)現(xiàn)?答:如果要通過(guò)鍵盤來(lái)訪問(wèn)菜單項(xiàng),則需要為菜單項(xiàng)定義熱鍵與快捷鍵。熱鍵是菜單項(xiàng)中帶有下劃線的字符。建立熱鍵的方法是在菜單標(biāo)題的某個(gè)字符前加一個(gè)“&

46、;”符號(hào),顯示是過(guò)一字符下面有一個(gè)下劃線,表示該字符是一個(gè)熱鍵字符??旖萱I不是用來(lái)打開菜單,而是直接去執(zhí)行相應(yīng)的操作。要為菜單項(xiàng)指定快捷鍵,只要打開快捷鍵( Shortcut )下拉式列表框并選擇一個(gè)鍵,則菜單項(xiàng)標(biāo)題的右邊就會(huì)顯示快捷鍵名稱。7 從設(shè)計(jì)角度,試說(shuō)明下拉式菜單和彈出式菜單的區(qū)別。答: 菜單有兩種基本類型:一種是下拉式菜單,由一個(gè)主菜單和若干個(gè)子菜單所組成的;另一種是彈出式菜單,是用戶在某個(gè)對(duì)象上單擊右鍵所彈出的菜單。下拉式菜單和彈出式菜單都是在使用菜單編輯器時(shí)設(shè)計(jì)的。在設(shè)計(jì)時(shí)這兩種菜單的區(qū)別是:彈出式菜單中作為菜單名的菜單項(xiàng)的 Visible 屬性應(yīng)設(shè)置為 False , 程序開

47、始運(yùn)行時(shí)不需要顯示, 在單擊鼠標(biāo)右鍵時(shí)會(huì)彈出;下拉式菜單中作為菜單名的菜單項(xiàng)的 Visible 屬性應(yīng)設(shè)置為 True ,程序運(yùn)行時(shí)顯示在窗體的頂部。8 、什么是模式對(duì)話框?什么是非模式對(duì)話框??jī)烧哂惺裁磪^(qū)別?VB中怎樣設(shè)置窗體作為對(duì)話框?答: 對(duì)話框有兩種類型:模式對(duì)話框和非模式對(duì)話框。若對(duì)話框是模式型,打開后無(wú)法將鼠標(biāo)移支其他窗口,即只有在關(guān)閉后才能對(duì)其他窗體進(jìn)行操作,如Office 軟件中“幫助”菜單的“關(guān)于”命令所打開的對(duì)話框;若對(duì)話框是非模式型,則打開后可對(duì)其他窗口進(jìn)行操作,如“編輯”菜單的“替換”對(duì)話框就是一個(gè)非模式對(duì)話框的實(shí)例。當(dāng)把窗體作為對(duì)話框打開時(shí),Show方法的參數(shù)有兩個(gè),

48、分別表示模式對(duì)話框和非模式對(duì)話框:( 1 )將窗體作為模式對(duì)話框打開,語(yǔ)句為:窗體名稱.Show 1(2)將窗體作為非模式對(duì)話框打開,語(yǔ)句為:窗體名稱.show 09 簡(jiǎn)述窗體之間數(shù)據(jù)互訪如何才能實(shí)現(xiàn)。答: 在多重窗體程序中,不同窗體之間可以相互訪問(wèn),即一個(gè)窗體可以訪問(wèn)另一個(gè)窗體中的數(shù)據(jù)。兩個(gè)窗體之間訪問(wèn)有下列三種情況:.專業(yè) .專注 .(1) 一個(gè)窗體可以在直接訪問(wèn)另一個(gè)窗體上控件的屬性,形式如下:另一個(gè)窗體名.窗件名.屬性(2) 一個(gè)窗體直接訪問(wèn)在另一個(gè)窗體中定義的全局變量,形式如下:另一個(gè)窗體名.全局變量名(3) 在模塊中定義公共變量實(shí)現(xiàn)相互訪問(wèn),這是最常用的方法。10、 MouseDo

49、wn#件發(fā)生在 MouseUp和Click事件之前,但MouseUp和Click事件發(fā)生的次序與對(duì)象有關(guān)。試編寫一個(gè)小程序測(cè)試在命令按鈕和標(biāo)簽上 MouseDown MouseUP Click事件發(fā)生的順序。答:在窗體上創(chuàng)建一個(gè)命令按鈕Command1一個(gè)標(biāo)簽Labell ,然后編寫下列事件過(guò)程就以測(cè)試這三個(gè)事件發(fā)生的先后順序了。Private Sub Command1_Click()Print "命令按鈕的 Click 事件”End SubPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As

50、 Single, 丫 As Single) Print "命令按鈕的 MouseDown件"End SubPrivate Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Print "命令按鈕的 MouseUp*件"End SubPrivate Sub Label1_Click()Print " 標(biāo)簽的Click 事件”End SubPrivate Sub Label1_MouseDown(Button As Integer,

51、 Shift As Integer, X As Single, Y As Single) Print " 標(biāo)簽的 MouseDown件"End SubPrivate Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Print " 標(biāo)簽的MouseUp事件"End Sub測(cè)試結(jié)果發(fā)現(xiàn),在標(biāo)簽上發(fā)生的順序?yàn)椋篗ouseDown MouseUp Click ,而在命令按鈕上發(fā)生的順序是:MouseDown Click、MouseUp11、 在Ke

52、yDowngT件過(guò)程中,如何檢測(cè) Ctrl和F3鍵是否同時(shí)被按下?答:使用(KeyCode = vbKeyF3 ) and (Shift = vbCtrlMask ) 或者(KeyCode = 114 ) and (Shift = 2)表達(dá)式,可以檢測(cè) Ctrl和F3鍵是否同時(shí)被按下,F(xiàn)3鍵的鍵盤掃描碼是114。12、 KeyDown事件與KeyPress事件的區(qū)別是什么?答:用戶按下并且釋放一個(gè)會(huì)產(chǎn)生ASCII碼的鍵時(shí),觸發(fā)KeyPress事件;用戶按下鍵盤上任意一個(gè)鍵時(shí),觸發(fā)KeyDown事件。KeyDOwnf KeyPress事件的主要區(qū)別如下:(1)從時(shí)間上來(lái)說(shuō),按下鍵盤上的一個(gè)鍵立即

53、觸發(fā)KeyDown事件,但此時(shí)沒有引發(fā)KeyPress事件。只有在釋放該按鍵時(shí)觸發(fā)KeyPress事件。(2)用戶按下鍵盤中的任一鍵就會(huì)在相應(yīng)對(duì)象引發(fā)KeyDown事件,但是并不是按下和釋放鍵盤上的任意一個(gè)鍵都會(huì)引發(fā) KeyPress事件,KeyPress事件只對(duì)會(huì)產(chǎn)生 ASCII碼的按鍵有反應(yīng),包括數(shù)字、大小寫的 字母、Enter、Backspace > Esc、Tab鍵等。對(duì)于如方向鍵這樣的不會(huì)產(chǎn)生ASCII碼的按鍵,KeyPress事件不會(huì)被觸發(fā)。13、 試說(shuō)明鍵盤掃描代碼(Keycode)與鍵盤 ASCII碼(KeyAscii )的區(qū)別。答:鍵盤掃描代碼(KeyCode)是對(duì)鍵盤

54、上按鍵的編碼,它告訴事件過(guò)程用戶所操作的物理鍵。也就是說(shuō), 大寫字母和小寫字母使用同一個(gè)鍵,它們的KeyCode相同。對(duì)于有上檔字符和下檔字符的鍵,其 KeyCode也相同,為下檔字符的ASCII碼。14、 鍵盤上“4”鍵的上檔字符是“ $”。當(dāng)同時(shí)按下 Shift鍵和“ 4”鍵時(shí),KeyPress事件發(fā)生了幾次?過(guò)程中的 KeyAscii 參數(shù)值是多少?答 : KeyPress 事件發(fā)生了一次, KeyAscii 參數(shù)值是36。即“$”字符的 ASCII 碼為 36。因?yàn)镵eyPress 事件是在輸入一個(gè)ASCII 碼字符時(shí)發(fā)生的事件, 盡管在輸入“$”字符時(shí)按了兩個(gè)鍵,但是輸入了一個(gè)ASC

55、II字符,所以 KeyPress 事件只發(fā)生一次。第 8章:數(shù)據(jù)文件1 什么是文件? ASCII 文件與二進(jìn)制文件有什么區(qū)別?答: 文件是存儲(chǔ)在外存儲(chǔ)器(如磁盤)上的用文件名標(biāo)識(shí)的數(shù)據(jù)的集合。按存儲(chǔ)信息的形式分類,文件可分為 ASCII 文件和二進(jìn)制文件。ASCII 文件存放的是各種數(shù)據(jù)的 ASCII 代碼, 可以用記事本打開; 二進(jìn)制文件存放的是各種數(shù)據(jù)的二進(jìn)制 代碼,不能用記事本打開,必須由專用程序打開。2 根據(jù)文件的訪問(wèn)模式,文件可分為哪幾種類型?訪問(wèn)方式各有什么特點(diǎn)?答: 根據(jù)文件的訪問(wèn)模式,文件可分為順序文件隨機(jī)文件二進(jìn)制文件。順序文件要求按順序訪問(wèn)文件的數(shù)據(jù);隨機(jī)文件可以根據(jù)記錄號(hào)

56、直接訪問(wèn)某一特定記錄;二進(jìn)制文件要求以字節(jié)為單位定位數(shù)據(jù)位置,允許程序直接訪問(wèn)各個(gè)字節(jié)數(shù)據(jù),也允許程序按所需的任何方式組織和訪問(wèn)數(shù)據(jù)。構(gòu)造滿足下列條件的 Open語(yǔ)句。( 1)建立一個(gè)新的順序文件答:Open“ Seqnew.dat( 2)打開一個(gè)舊的順序文件答:Open“ Seqold.dat( 3)打開一個(gè)舊的順序文件函數(shù)獲得。答: Dim No%No= FreeFileSeqnew.dat ,供用戶寫入數(shù)據(jù),指定文件號(hào)為1For Output As #1Seqold.dat ,用戶將從該文件讀出數(shù)據(jù),指定文件號(hào)為 2For Input As # 2FreefileSeqappend.dat ,用戶將在該文件后面添加數(shù)據(jù),文件號(hào)通過(guò)調(diào)用Open “ Seqappend.dat “ For Append As # No試寫出程序代碼片段,將文本文件Text.dat 中的容讀

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論