一、問答題
1.什么是可視化編程和事件驅(qū)動?
解答:可視化編程:在設(shè)計界面時,只需將所需要的控件放到窗口的指定位置,整個界面設(shè)計過程基本不需要編寫代碼。在開發(fā)過程中所看到的界面,與程序運行時的界面基本相同。概括地說可視化編程就是程序員在開發(fā)過程中能看到界面的實際效果。
事件驅(qū)動:是指應(yīng)用程序沒有預(yù)定的執(zhí)行路徑,而是由程序運行過程中的事件決定。
2.對象、事件和方法三者之間的關(guān)系如何?
解答:在VB程序設(shè)計中,完成某種功能可通過觸發(fā)對象事件和調(diào)用對象方法,而觸發(fā)事件和調(diào)用對象方法都必須基于某個對象。觸發(fā)某個事件實際上就是執(zhí)行一個事件過程代碼段,在該代碼段中又可以隨意調(diào)用對象方法,而調(diào)用對象方法不可能觸發(fā)某個事件。
3.屬性和方法有何區(qū)別和聯(lián)系?
解答:對象的屬性是描述對象的一組特征。如設(shè)置對象的名稱、標(biāo)題、顏色、大小等,有的可直接在設(shè)計界面時通過屬性窗口進(jìn)行設(shè)置,有的可以在事件過程或通用過程代碼中進(jìn)行設(shè)置。對象的方法是在對象上實施某種操作的功能,不能在設(shè)計界面時調(diào)用對象方法,一般在過程代碼中可隨意調(diào)用,根據(jù)需要還可以添加適當(dāng)?shù)膮?shù)。設(shè)置對象屬性和調(diào)用對象方法均可在代碼設(shè)計中進(jìn)行,其一般格式為:
對象名.屬性名=屬性值 (設(shè)置對象屬性)
對象名.方法名 (調(diào)用對象方法)
4.下列哪些可作為Visual Basic的變量名,哪些不行?
4*Delta Alpha 4ABC AB丌 ReadData
Filename A(A+B) Read
解答:可作為Visual Basic變量名的是:Alpha,ReadData, Filename,Read。其它均不能作為變量名。
5.Visual Basic中是否允許出現(xiàn)下列形式的數(shù)?
土25.74 3.457E-10 .368 1.87E+50
10∧(1.256) 2.5E 12E3 0.258
解答:允許出現(xiàn)的數(shù)為:3.457E-10,.368,12E3,0.258。
6.指出下列Visual Basic表達(dá)式中的錯誤,并寫出正確的形式。
(1) +COS(28Ο)
(2)-3/8+8.INT24.8
(3)(8+6)∧(4÷—2)+SIN(2*丌)
(4)[(X+Y)+Z]´80-5(C+D)
解答:
(1)Sqr(80)+Cos(28*3.14159/180)
(2)(-3)/8+8*Int(24.8)
(3)(8+6)∧(4/(-2))+Sin(2*3.14159)
(4)((X+Y)+Ζ)*80-5*(C+D)
7.將下列數(shù)學(xué)式子寫成Visual Basic表達(dá)式:
(1)cos2(c+d)
(2)5+(a+b)2
(3)cos(x)(sin(x)+1)
(4)e2+2
(5)2a(7+b)
(6)8e3ln2
解答:(1)Cos(c+d)∧2 或Cos(c+d)*Cos(c+d)
(2) 5+(a+b)∧2 或5+(a+b)*(a+b)
(3) Cos(x)*(Sin(x)+1)
(4) Exp(2)+2
(5) 2*a*(7+b)
(6) 8*Exp(3)*Log(2)
注:假定上面(1)和(3)中的c+d和x為弧度,如果為度則應(yīng)轉(zhuǎn)換為弧度。
8.設(shè)a=2,b=3,c=4,d=5,求下列表達(dá)式的值:
(1) a>b AND C<=d OR 2*a>C
(2) 3>2*b OR a=c AND b<>c OR C>d
(3) NOT a<=c OR 4*c=b∧2 AND b<>a+c
解答:(1)False
(2) False
(3)False
9.寫出下列函數(shù)的值
(1)lnt(-3.14159) (2)Sqr(Sqr(64))
(3) Fix(-3.14159) (4) Int(Abs(99-100)/2) (5) Sgn(7*3+2) (6) Lcase(“Hello”)
(7) Left(“Hello”,2) (8) Val(“16 Year”)
(9) Str(-459.65) (10)Len(“Hello”)
解答:函數(shù)的值為:
(1)-4 (2)2.828427
(3) –3 (4) 0
(5) 1 (6) “hello”
(7) “He” (8) 16
(9) “459.65” (10) 5
二、編程題
1.編寫程序,計算1+2+3+4+…+100。
解答:使用For循環(huán)語句,程序如下:
Private Sub Form_Click( )
Static Sum As Integer
For I =1 To 100
Sum = Sum + I
Next I
Print Sum
End Sub
程序運行后,單擊窗體,輸出結(jié)果為:5050。
如果使用當(dāng)循環(huán)語句,則程序如下:
Private Sub Form_Click( )
Static Sum As Integer
I=1
While i<=100
Sum=Sum+I
I=I+1
Wend
Print Sum
End Sub
2.我國現(xiàn)有人口為12億,設(shè)年增長率為1%,編寫程序,計算多少年后增加到16億。
解答:程序如下:
Private Sub Form_Click( )
Dim p As Double
Dim r As Single
Dim n As Integer
P=1200000000
r=0.01
While p<1600000000
P = P + P* r
N = N + 1
Wend
P = Int(P)
Print N;″年后,全國人口為:″;P
End Sub
運行程序,單擊窗體,輸出結(jié)果為:
29年后,全國人口為:1601404641。
3.給定三角形的三條邊長,計算三角形的面積。編寫程序,首先判斷給出的三條邊能否構(gòu)成三角形,如可以構(gòu)成,則計算并輸出該三角形的面積,否則要求重新輸入。當(dāng)輸入-1時結(jié)束程序。
解答:從幾何學(xué)可知,三角形的 兩邊之和大于第三邊。因此,如果輸入的三角形的三條邊中兩邊之和小于或等于另一邊長,則不能構(gòu)成三角形。在這種情況下,給出適當(dāng)?shù)男畔?,并要求重新輸入。如果能?gòu)成三角形,則輸出該三角形的面積。
程序如下:
Private Sub Form_Click( )
Dim a,b,c,s,t As Single
Start:
A = InputBox (″請輸入A邊的邊長″) A = Val (a)
If a =-1 Then End
B = InputBox (″請輸入B邊的邊長″)
B = Val (b)
C =InputBox(″請輸入C邊的邊長″)
C = Val (c)
If a + b < = c Or b + c < = a Or c + a < = b Then
MsgBox ″所輸入的值不能構(gòu)成三角形,請重新輸入″
GoTo Start
End If
S =( a + b + c ) / 2
T = Spr (s * ( s — a )* ( s — b ) * ( s — c ) )
Print ″三角形的面積為:″; T
End Sub
程序運行后,單擊窗體,先后顯示三個輸入對話框,在三個對話框中分別輸入三角形的三條邊長,程序先判斷輸入的邊長是否能構(gòu)成三角形,然后決定之后的操作,用信息框顯示信息或者輸出三角形的面積。當(dāng)輸入1,2,3時,將顯示信息框,要求重新輸入;如果輸入8,7,6,則輸出結(jié)果為:
三角形的面積為:20.33316
4.稅務(wù)部門征收所得稅,規(guī)定如下:
(1)收入在200元以內(nèi),免征;
(2)收入在200~400內(nèi),超過200元的部分納稅3%;
(3)收入超過400元的部分,納稅4%;
(4)當(dāng)收入達(dá)到5000元或超過時,將4%稅金改為5%。
編程序?qū)崿F(xiàn)上述操作。
解答:程序如下:
Private Sub Form_Click ( )
R = InputBox (″請輸入您的收入″)
R = Val ( r )
If r < = 200 Then
tax = 0
ElseIf r > 200 And r < = 400 Then
tax = (r —200) *0.03
ElseIf r > 400 And r < 5000 Then
tax = (r — 400) * 0.04
ElseIf r > = 5000 Then
tax = ( r — 400 ) * 0.05
End If
Print″收入″;r; ″應(yīng)納稅″; tax
End Sub
程序運行后,單擊窗體,在輸入對話框中輸入收入數(shù),程序?qū)⑤敵黾{稅金額。
5.編寫程序,打印如下所示的“數(shù)字金字塔”:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
.
.
.
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
解答:程序如下:
Private Sub Form_Click ( )
For I = 1 To 9 For j = 1 To 30-3 * I
Print"";
Next j
For k = 1 To I
Print k;
Next k
For k = I—1 To 1 Step — 1
Print k;
Next k
Print
Next I
End Sub
6.從鍵盤上輸入兩個正整數(shù)M和N,求公因子。
解答:程序如下:
Private Sub Form_Click ( )
Dim m, n As Integer
m = InputBox (″請輸入M的值″)
m = Val (m)
m1 = m
n = InputBox(″請輸入N的值″)
n = Val ( n )
n1= n
Do While n < > 0
remin = m Mod n
m = n
n=remin
Loop
Print m1; "和"; n1;"的公因子是:";m
End Sub
該程序通過輾轉(zhuǎn)相除法求兩個正整數(shù)的公因子。程序運行后,在輸入對話框中分別輸入96和64,輸出結(jié)果為:96和64的公因子是:32
7.從鍵盤上輸入一個學(xué)生的學(xué)號和考試成績,然后輸出該學(xué)生的學(xué)號、成績,并根據(jù)成績按下面的規(guī)定輸出對該學(xué)生的評語:
成績 80~100 60~79 50~59 40~49 0~39
評語 Very good Good Fair Poor Fail
答案:程序如下:
Private Sub Form_Click ( )
n = InputBox(″請輸入學(xué)號″)
s = InputBox(″請輸入分?jǐn)?shù)″)
If s >= 80 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為 " & s & ",Very good"
ElseIf s >= 60 And s <= 79 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & ",good"
ElseIf s >= 50 And s <= 59 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & " ,Fair"
ElseIf s >= 40 And s <= 49 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & ",Poor "
ElseIf s >= 0 And s <= 39 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & ",Fail " End If
End Sub
程序運行后,單擊窗體,在輸入對話框中分別輸入學(xué)號和分?jǐn)?shù),程序?qū)⒃谳敵鰧υ捒蛑休敵鲞m當(dāng)評語。
1.什么是可視化編程和事件驅(qū)動?
解答:可視化編程:在設(shè)計界面時,只需將所需要的控件放到窗口的指定位置,整個界面設(shè)計過程基本不需要編寫代碼。在開發(fā)過程中所看到的界面,與程序運行時的界面基本相同。概括地說可視化編程就是程序員在開發(fā)過程中能看到界面的實際效果。
事件驅(qū)動:是指應(yīng)用程序沒有預(yù)定的執(zhí)行路徑,而是由程序運行過程中的事件決定。
2.對象、事件和方法三者之間的關(guān)系如何?
解答:在VB程序設(shè)計中,完成某種功能可通過觸發(fā)對象事件和調(diào)用對象方法,而觸發(fā)事件和調(diào)用對象方法都必須基于某個對象。觸發(fā)某個事件實際上就是執(zhí)行一個事件過程代碼段,在該代碼段中又可以隨意調(diào)用對象方法,而調(diào)用對象方法不可能觸發(fā)某個事件。
3.屬性和方法有何區(qū)別和聯(lián)系?
解答:對象的屬性是描述對象的一組特征。如設(shè)置對象的名稱、標(biāo)題、顏色、大小等,有的可直接在設(shè)計界面時通過屬性窗口進(jìn)行設(shè)置,有的可以在事件過程或通用過程代碼中進(jìn)行設(shè)置。對象的方法是在對象上實施某種操作的功能,不能在設(shè)計界面時調(diào)用對象方法,一般在過程代碼中可隨意調(diào)用,根據(jù)需要還可以添加適當(dāng)?shù)膮?shù)。設(shè)置對象屬性和調(diào)用對象方法均可在代碼設(shè)計中進(jìn)行,其一般格式為:
對象名.屬性名=屬性值 (設(shè)置對象屬性)
對象名.方法名 (調(diào)用對象方法)
4.下列哪些可作為Visual Basic的變量名,哪些不行?
4*Delta Alpha 4ABC AB丌 ReadData
Filename A(A+B) Read
解答:可作為Visual Basic變量名的是:Alpha,ReadData, Filename,Read。其它均不能作為變量名。
5.Visual Basic中是否允許出現(xiàn)下列形式的數(shù)?
土25.74 3.457E-10 .368 1.87E+50
10∧(1.256) 2.5E 12E3 0.258
解答:允許出現(xiàn)的數(shù)為:3.457E-10,.368,12E3,0.258。
6.指出下列Visual Basic表達(dá)式中的錯誤,并寫出正確的形式。
(1) +COS(28Ο)
(2)-3/8+8.INT24.8
(3)(8+6)∧(4÷—2)+SIN(2*丌)
(4)[(X+Y)+Z]´80-5(C+D)
解答:
(1)Sqr(80)+Cos(28*3.14159/180)
(2)(-3)/8+8*Int(24.8)
(3)(8+6)∧(4/(-2))+Sin(2*3.14159)
(4)((X+Y)+Ζ)*80-5*(C+D)
7.將下列數(shù)學(xué)式子寫成Visual Basic表達(dá)式:
(1)cos2(c+d)
(2)5+(a+b)2
(3)cos(x)(sin(x)+1)
(4)e2+2
(5)2a(7+b)
(6)8e3ln2
解答:(1)Cos(c+d)∧2 或Cos(c+d)*Cos(c+d)
(2) 5+(a+b)∧2 或5+(a+b)*(a+b)
(3) Cos(x)*(Sin(x)+1)
(4) Exp(2)+2
(5) 2*a*(7+b)
(6) 8*Exp(3)*Log(2)
注:假定上面(1)和(3)中的c+d和x為弧度,如果為度則應(yīng)轉(zhuǎn)換為弧度。
8.設(shè)a=2,b=3,c=4,d=5,求下列表達(dá)式的值:
(1) a>b AND C<=d OR 2*a>C
(2) 3>2*b OR a=c AND b<>c OR C>d
(3) NOT a<=c OR 4*c=b∧2 AND b<>a+c
解答:(1)False
(2) False
(3)False
9.寫出下列函數(shù)的值
(1)lnt(-3.14159) (2)Sqr(Sqr(64))
(3) Fix(-3.14159) (4) Int(Abs(99-100)/2) (5) Sgn(7*3+2) (6) Lcase(“Hello”)
(7) Left(“Hello”,2) (8) Val(“16 Year”)
(9) Str(-459.65) (10)Len(“Hello”)
解答:函數(shù)的值為:
(1)-4 (2)2.828427
(3) –3 (4) 0
(5) 1 (6) “hello”
(7) “He” (8) 16
(9) “459.65” (10) 5
二、編程題
1.編寫程序,計算1+2+3+4+…+100。
解答:使用For循環(huán)語句,程序如下:
Private Sub Form_Click( )
Static Sum As Integer
For I =1 To 100
Sum = Sum + I
Next I
Print Sum
End Sub
程序運行后,單擊窗體,輸出結(jié)果為:5050。
如果使用當(dāng)循環(huán)語句,則程序如下:
Private Sub Form_Click( )
Static Sum As Integer
I=1
While i<=100
Sum=Sum+I
I=I+1
Wend
Print Sum
End Sub
2.我國現(xiàn)有人口為12億,設(shè)年增長率為1%,編寫程序,計算多少年后增加到16億。
解答:程序如下:
Private Sub Form_Click( )
Dim p As Double
Dim r As Single
Dim n As Integer
P=1200000000
r=0.01
While p<1600000000
P = P + P* r
N = N + 1
Wend
P = Int(P)
Print N;″年后,全國人口為:″;P
End Sub
運行程序,單擊窗體,輸出結(jié)果為:
29年后,全國人口為:1601404641。
3.給定三角形的三條邊長,計算三角形的面積。編寫程序,首先判斷給出的三條邊能否構(gòu)成三角形,如可以構(gòu)成,則計算并輸出該三角形的面積,否則要求重新輸入。當(dāng)輸入-1時結(jié)束程序。
解答:從幾何學(xué)可知,三角形的 兩邊之和大于第三邊。因此,如果輸入的三角形的三條邊中兩邊之和小于或等于另一邊長,則不能構(gòu)成三角形。在這種情況下,給出適當(dāng)?shù)男畔?,并要求重新輸入。如果能?gòu)成三角形,則輸出該三角形的面積。
程序如下:
Private Sub Form_Click( )
Dim a,b,c,s,t As Single
Start:
A = InputBox (″請輸入A邊的邊長″) A = Val (a)
If a =-1 Then End
B = InputBox (″請輸入B邊的邊長″)
B = Val (b)
C =InputBox(″請輸入C邊的邊長″)
C = Val (c)
If a + b < = c Or b + c < = a Or c + a < = b Then
MsgBox ″所輸入的值不能構(gòu)成三角形,請重新輸入″
GoTo Start
End If
S =( a + b + c ) / 2
T = Spr (s * ( s — a )* ( s — b ) * ( s — c ) )
Print ″三角形的面積為:″; T
End Sub
程序運行后,單擊窗體,先后顯示三個輸入對話框,在三個對話框中分別輸入三角形的三條邊長,程序先判斷輸入的邊長是否能構(gòu)成三角形,然后決定之后的操作,用信息框顯示信息或者輸出三角形的面積。當(dāng)輸入1,2,3時,將顯示信息框,要求重新輸入;如果輸入8,7,6,則輸出結(jié)果為:
三角形的面積為:20.33316
4.稅務(wù)部門征收所得稅,規(guī)定如下:
(1)收入在200元以內(nèi),免征;
(2)收入在200~400內(nèi),超過200元的部分納稅3%;
(3)收入超過400元的部分,納稅4%;
(4)當(dāng)收入達(dá)到5000元或超過時,將4%稅金改為5%。
編程序?qū)崿F(xiàn)上述操作。
解答:程序如下:
Private Sub Form_Click ( )
R = InputBox (″請輸入您的收入″)
R = Val ( r )
If r < = 200 Then
tax = 0
ElseIf r > 200 And r < = 400 Then
tax = (r —200) *0.03
ElseIf r > 400 And r < 5000 Then
tax = (r — 400) * 0.04
ElseIf r > = 5000 Then
tax = ( r — 400 ) * 0.05
End If
Print″收入″;r; ″應(yīng)納稅″; tax
End Sub
程序運行后,單擊窗體,在輸入對話框中輸入收入數(shù),程序?qū)⑤敵黾{稅金額。
5.編寫程序,打印如下所示的“數(shù)字金字塔”:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
.
.
.
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
解答:程序如下:
Private Sub Form_Click ( )
For I = 1 To 9 For j = 1 To 30-3 * I
Print"";
Next j
For k = 1 To I
Print k;
Next k
For k = I—1 To 1 Step — 1
Print k;
Next k
Next I
End Sub
6.從鍵盤上輸入兩個正整數(shù)M和N,求公因子。
解答:程序如下:
Private Sub Form_Click ( )
Dim m, n As Integer
m = InputBox (″請輸入M的值″)
m = Val (m)
m1 = m
n = InputBox(″請輸入N的值″)
n = Val ( n )
n1= n
Do While n < > 0
remin = m Mod n
m = n
n=remin
Loop
Print m1; "和"; n1;"的公因子是:";m
End Sub
該程序通過輾轉(zhuǎn)相除法求兩個正整數(shù)的公因子。程序運行后,在輸入對話框中分別輸入96和64,輸出結(jié)果為:96和64的公因子是:32
7.從鍵盤上輸入一個學(xué)生的學(xué)號和考試成績,然后輸出該學(xué)生的學(xué)號、成績,并根據(jù)成績按下面的規(guī)定輸出對該學(xué)生的評語:
成績 80~100 60~79 50~59 40~49 0~39
評語 Very good Good Fair Poor Fail
答案:程序如下:
Private Sub Form_Click ( )
n = InputBox(″請輸入學(xué)號″)
s = InputBox(″請輸入分?jǐn)?shù)″)
If s >= 80 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為 " & s & ",Very good"
ElseIf s >= 60 And s <= 79 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & ",good"
ElseIf s >= 50 And s <= 59 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & " ,Fair"
ElseIf s >= 40 And s <= 49 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & ",Poor "
ElseIf s >= 0 And s <= 39 Then
MsgBox "學(xué)號" & n & ",分?jǐn)?shù)為" & s & ",Fail " End If
End Sub
程序運行后,單擊窗體,在輸入對話框中分別輸入學(xué)號和分?jǐn)?shù),程序?qū)⒃谳敵鰧υ捒蛑休敵鲞m當(dāng)評語。