练习题四
1、选择题:
(1)下列程序运行后,变量a的值为_____。
Private Sub Command1_Click()
A% = 14
b% = 12
A% = b% - A%
b% = b% + A%
A% = -b% ^ 2
Print A
End Sub
A.100 B.-100
C.a$x D.CdE
(2)在窗体Form1上画两个文本框Text1、Text2和一个命令按钮Command1,然后编写如下事件过程:
Private Sub Command1_Click( )
Dim a As Single
a = Text1.Text+Text2.Text
Print a
End Sub
程序运行后,在Text1和Text2中分别输入123和321,然后单击Command1命令按钮,则输出结果为_____。
A.444 B.321123
C.123321 D.123231
(3)在窗体上有一个命令按钮和一个文本框,其名称分别为Command1和Text1,把文本框的Text属性置空,然后编写如下事件过程:
Private Sub Command1_Click()
a = InputBox("Enter an Integer")
b = InputBox("Enter an Integer")
Text1.Text = b + a
End Sub
程序运行后,单击命令按钮,如果在输入对话框中分别输入8和10,则文本框中显示的内容是_____。
第6章过程
A.108 B.18
C.810 D.出错
(4)下列程序段的功能是_____。
x = 10.5
y = Int(x+0.5)
Print y
A.求平均值B.将一实数四舍五入取整
C.求绝对值D.舍去一实数的小数部分
(5)编写如下程序:
Private Sub Form_Click()
Dim a As Integer, b As Integer, c As Integer
b = 6 :
c = 6.5
a =
b = c
Print a
End Sub
程序运行后,单击窗体,则在窗体上显示的是_____。
A.1 B.2
C.-1 D.0
(6)关于语句If x=1 Then y=1,下列说法正确的是_____。
A.x=1为赋值语句,y=1为关系表达式
B.x=1和y=1均为关系表达式
C.x=1为关系表达式,y=1为赋值语句
D.x=1和y=1均为赋值语句
(7)在Select Case x结构中,描述判断条件3 ≦x ≦7的测试项应该写成_____。
A.Case 3 ≦X ≦7 B.Case 3 ≦X , X ≦7
C.Case Is ≦7 , Is ≧3 D.Case 3 To 7
(8)下列程序段执行的结果是_____。
Dim x
If x Then Print x Else Print x + 1
A.1 B.0
C.-1 D.不确定
(9)下列程序段执行的结果是_____。
x = 8
y = -6
If Not x > 0 Then x = y - 3 Else y = x + 3
Print x - y; y - x
A.-3 3 B.8 -9
- 2 -
第6章过程
C.-6 8 D.3 -3
(10)计算Max的值,当x大于y时,Max = x;否则Max = y。下列语句错误的是_____。
A.If x >= y Then Max = x: Max = y
B.If x >= y Then Max = x Else Max = y
C.Max = y: If x >= y Then Max = x
D.If x <= y Then Max = y Else Max = x
(11)关于下面For-Next循环描述正确的是_____。
For i=0 to 10 Step 0
Print "*";
Next i
A.循环无结束条件B.循环是一个无限循环
C.循环体执行11次D.循环体执行1次
(12)关于Exit For语句的使用说明正确的是_____。
A.Exit For语句可以退出任何类型的循环
B.一个循环只能有一个这样的语句
C.Exit For表示返回For语句去执行
D.一个For循环中可以有多条Exit For语句
(13)在过程中有语句For I = N1 To N2 Step N3,在该循环体内有下列四条语句,其中_____会影响循环执行的次数。
①N1 = N1 + I ②N2 = N2 + N3
③I = I + N3 ④N3 = 2 * N3
A.①②B.①②③
C.③D.①②③④
(14)执行下面的三重循环程序段后,a 的值为_____。
For i=1 To 3
For j=1 To I
For k=j To 3
a=a+1
Next k
Next j
Next I
A.3 B.9
C.14 D.21
(15)执行下面过程中的循环程序段后,I的值为_____。
Private Sub Form_Click()
Dim I As Integer, Sum As Integer
- 3 -
- 4 -
第6章 过 程
For I = 0.5 To 8.5 Step 2.5
Sum = Sum + I Next I
Print Sum, I End Sub A .10.5 B .11 C .10
D .20
2、填空题:
(1)显示如图4-33所示的输入框的语句是_____。
(2)显示如图4-34所示的消息框的语句是_____。
(3)显示如图4-35所示的图形,完成下面程序中的语句:
Private Sub Form_Click()
Print Tab(_____); "*"; Tab(_____); "*"
Print Tab(_____); "*"; Tab(_____); "*" Print Tab(8); "*"; Space(_____); "*" Print Tab(_____); "*"; Space(1); "*" Print Tab(_____); "*" End Sub
图 4-33
图 4-34
第6章过程
图4-35
(4)任意输入三个数,将其按从小到大的顺序输出,完成下面程序中的语句。
Private Sub Form_Click()
Dim a As Integer, b As Integer, c As Integer
Dim temp As Integer
a = V al(InputBox("输入第一个数"))
_____
_____
Print "初始值:"; a; b; c
If a > b Then
_____
End If
If _____ Then
temp = a: a = c: c = temp
End If
If _____Then
temp = b: b = c: c = temp
End If
Print "排序后:"; a; b; c
End Sub
(5)以下程序用来产生20个0~99之间的随机整数,并将其中的偶数打印出来。
Private Sub Form_Click()
Dim i As Integer, x As Integer
For i = 1 To 20
x = _____
If _____Then Print x
Next i
End Sub
3、阅读题:
- 5 -
第6章过程
(1)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim a As Integer, b As Integer, c As Integer
b = 6:
c = 6.5
a =
b = c
Print a
End Sub
(2)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
A = 1:
B = 1
A = A + B:
B = A + B: Print A, B
A = A + B:
B = A + B: Print A, B
A = A + B:
B = A + B: Print A, B
(3)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Cls
A = 24:
B = 25:
C = 26
Print A = 24,
Print B = 25
Print C = A + B
Print B > A, C > A + B And A + C > B
Print "D="; A + B, "E="; C
End Sub
(4)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
A$ = "software and hardware"
B$ = Right(A$, 8)
C$ = Mid(A$, 1, 8)
MsgBox A$, , B$, C$, 1
End Sub
(5)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
a = 1 :
b = 2 :
c = 3
a = a +
b : b = b + a :
c = b + a
If a <> 3 Or b <> 3 Then
a =
b - a : b =
c - a : c = b + a
End If
- 6 -
第6章过程
Print a + b + c
End Sub
(6)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
For X = 5 To 1 Step -1
For Y = 1 To 6 - X
Print Tab(Y + 5); "*";
Next Y
Next X
End Sub
(7)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 1:
b = 0
Do While a <= 5
b = b + a * a
a = a + 1
Loop
Print a, b
End Sub
(8)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim ch As String, i As Integer
ch = "DEF"
For i = 1 To Len(ch)
ch = Mid(ch, 2 * i - 1, 1) & Left(ch, Len(ch))
Print ch
Next i
End Sub
(9)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim p As Integer, i As Integer
p = 1
For i = 1 To 5
p = p + (2 * i - 1) / (2 * i + 1)
If p >= 20 Then Exit For
- 7 -
- 8 -
第6章 过 程
Next i Print i, p End Sub
(10)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim p As Integer, i As Integer, n As Integer p = 20: n = 20
For i = 1 To n Step p
p = p + 2 : n = n - 3 i = i + 1
If p >= 10 Then Exit For Next i Print i, p, n End Sub
4、编程题:
(1)有函数:??
??
?≥-<≤-<=)
10(124)101(2
3)1(x x x x x x
y 编写程序,输入x 值后,则输出相应y 值。要求用“If …ElseIf …EndIf ”和用“Select Case ”两种方法完成该题目。
(2)编写程序,随机生成100个两位正整数,并统计其中小于等于40、大于40小于等于70及大于70的数据个数。
(3)编写程序,分别统计1~100中,满足3的倍数、7的倍数的数各有多少? (4)编写程序,随机生成20个三位正整数,将其中的偶数与奇数分别输出到窗体上。 (5)编写程序,求100~300间的所有素数。
(6)编写程序,输出所有的“水仙花数”。所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。
(7)编写程序,判断某整数是一个回文数。所谓回文数是指左右数字完全对称的自然数。例如,121、12321、484、555都是回文数。
(8)在文本框中输入一个字符串,并统计其中字母、数字、空格及其它字符的个数。 (9)求一元二次方程 ax 2+bx+c=0 的根。
(10)计算上学期你所学的课程的总成绩和平均成绩。
第6章过程
练习题五
1、选择题:
(1)下列数组声明语句中,正确的是_____。
A.Dim a[3 , 4] As Integer
B.Dim a(3 , 4) As Integer
C.Dim a(n , n) As Integer
D.Dim a(34) As Integer
(2)在Visual Basic语言中,定义数组时,其下标允许是_____。
A.变量
B.常量
C.算数表达式(可含变量)
D.变量、常量、算数表达式(可含变量)
(3)若有声明语句Dim a(1 to 10) As Integer,则下列应用_____合法。
A.a(1) = "adk" B.a(7) = 32768
C.a(8) = "23" D.a(0) = 2.3
(4)用Dim A (-3 To 5) As Integer语句定义的数组的元素个数是_____。
A.6 B.7
C.8 D.9
(5)若有说明:Dim a(3,4) As Integer,则下面正确的叙述是_____。
A.每个元素都有初值,但未必都为0
B.只有a(0,0)初值为0
C.数组a中每个元素的初值都为0
D.此说明语句不正确
(6)下列语句中的_____可以用来正确的声明一个二维的动态数组。
A.Private A(n) As Integer B.Dim A( ) As Integer
C.Dim A( , ) As Integer D.Dim A(1 to n)
(7)对动态数组A( ),若原数组为A(5),要改变数组A(10)时,为保证其数组内的数据不丢失,应使用_____语句进行定义。
A.Dim A(10) B.ReDim A(10)
C.ReDim Preserve A(10) D.Dim A(5 To 10)
(8)以下程序段输出的结果是_____。
- 9 -
第6章过程
Dim a
a = Array(1,2,3,4,5,6,7)
For i = Lbound(a) To Ubound(a) : a(i) = a(i) * a(i) : Next
Print a(i)
A.49 B.0
C.不确定D.程序出错
(9)下列有关数组的说法不正确的是_____。
A.在窗体模块中不可以定义全局数组
B.可以使用Erase语句释放所有数组所占的存储空间
C.语句Dim X(3.6+2) As Integer,定义了一个维上界是6的一维整型数组
D.ReDim语句只能出现在过程内部
(10)下面有关数组处理的叙述中,不正确的是_____。
①在过程中用Redim语句定义的动态数组,其下标的上下界可为赋了值的变量
②在过程中,可以使用dim,private和stati c语句定义数组
③用Redim语句重新定义动态数组时,不得改变该数组的数据类型
④可用Public语句在窗体模块的通用说明处定义一个全局数组
A.①②③④B.①③④
C.①②③D.②④
(11)以下有关控件数组的说法中错误的是_____
A.控件数组由一组具有共同名称和相同类型的控件组成
B.控件数组中的每一个控件共享同样的事件过程
C.控件数组中的每个元素的下标由控件的Index属性指定
D.同一控件数组中的元素只能有相同的属性设置值
(12)假设有数组定义语句:Dim A(5) As Integer,List1为一个列表框控件,下面给数组元素赋值的语句错误的是_____。
A.A(4) = 5
B.A(4) = InputBox("请输入一个数:")
C.A = Array(1,2,3,4,5,6)
D.A(4) = List1.ListCount
(13)执行下面程序窗体上显示的结果是_____。
Private Sub Form_click()
Dim A(5) As Integer, B(3 To 8, 200 To 208)
Print UBound(A); UBound(B, 1); UBound(B, 2)
End Sub
A.5 3 200 B.5 8 200
C.5 8 208 D.5 3 208
- 10 -
第6章过程
(14)阅读下面的程序段:
For i = 1 To 3
For j = 1 To I
For k = j To 3
a = a + 1
Next k
Next j
Next I
执行上面的三重循环后,a 的值为_____。
A.3 B.9
C.14 D.21
(15)下述对控件数组描述中,正确的是_____。
A.组成控件数组的控件所有的属性值都相同
B.按钮与文本可以组成控件数组
C.窗体也可以创建成控件数组
D.控件数组的外观可以不相同
2、填空题:
(1)以下程序代码将具有100个元素的数组A按每行10个数的形式赋值给二维数组B。即将A(1)到A(10)依次赋值给B(1, 1)到B(1, 10),将A(11)到A(20)依次赋值给B(2, 1)到B(2, 10)。……,将A(91)到A(100)依次赋值给B(10, 1)到B(10, 10)。
Private Sub Command1_Click()
Dim A(1 To 100) As Integer, B(1 To 10, 1 To 10) As Integer
For I = 1 To ___①___
A(I) = Int(Rnd * 5 + 1)
Next I
For I = 1 To ___②___
For J = 1 To ___③___
B(I, J) = ___④___
Print B(I, J);
Next J
Next I
End Sub
(2)以下程序代码使用二维数组A表示矩阵,实现单击命令按钮Command1时使矩阵的两条对角线上的元素值全为1,其余元素值全为0。
Private Sub Command1_Click()
- 11 -
第6章过程
Dim A(4, 4)
For I = 1 To 4
For J = 1 To 4
A(___①___) = 0
Next J
A(___②___) = 1
A(___③___) = 1
Next I
For I = 1 To 4
For J = 1 To 4
Print A(I, J);
Next J
Next I
End Sub
(3)以下程序代码实现单击命令按钮Commandl时生成20个(0,100)之间的随机整数,存于数组中,打印数组中大于50小于90的数,并求这些数的和。
Private Sub Command1_Click()
Dim arr(1 To 20)
For i = 1 To 20
arr(i) = ___①___
Text1.Text = Text1.Text & arr(i) & Chr(13) & Chr(10)
Next i
Sum = 0
For Each x ___②___
If ___③___ Then
Print Tab(20); x
Sum = ___④___
End If
Next ___⑤___
Print Tab(20); "Sum="; Sum
End Sub
(4)以下程序的功能是重新排列数组a中的元素,使相等元素相邻存放,并且保持它们在数组中首次出现时的相对次序。请填空。
例如,原数组:1,2,4,3,3,2,3,1,5,4
重排后:1,1,2,2,3,3,3,4,4,5
排列的原理是先删去重复的元素,在根据元素在数组中出现的次数展开排列。
Private Sub Form_Click()
- 12 -
第6章过程
Dim a() As Integer, b() As Integer, n As Integer
Dim i As Integer, j As Integer, k As Integer, t As Integer, m As Integer
n = 10
ReDim a(n), b(n)
a(1) = 1: a(2) = 2: a(3) = 4: a(4) = 3: a(5) = 3
a(6) = 2: a(7) = 3: a(8) = 1: a(9) = 5: a(10) = 4
m = 1
___①___
Do While m <= t
k = 1: i = m + 1
Do While i <= t
If a(i) = a(m) Then
k = k + 1
For j = ___②___
a(j) = a(j + 1)
Next j
t = t - 1
Else
___③___
End If
Loop
b(m) = k: m = m + 1
Loop
For i = 1 To m - 1
Print a(i);
Next
t = n
For i = m - 1 To 1 Step -1
For j = 1 To ___④___
a(t) = a(i)
___⑤___
Next j
Next i
For i = 1 To n
Print a(i);
Next i
End Sub
(5)以下程序代码生成大小可变的正方形图案,如图5-28图5-29所示,最外圈是第一
- 13 -
- 14 -
第6章 过 程
层,要求每层上用的数字与层数相同。
Option Base 1
Dim a() AS Integer
Private Sub Form_Click()
N=InputBox(“请输入行数:
”) ___①___
For i=___②___ ' i 为层数
For j=i To n-i+1
For k=i To n-i+1 ___③___ Next k
Next j Next i
For i=1 To n
For j=1 To n
Print Tab(j*3);a(i ,j); Next j ___④___
Next i End Sub
3、阅读题:
(1)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim M(10) As integer
For I=0 To 10
M(I)=2*I Next I
图5-29 n=9
图5-28 n=6
第6章过程
Print M(M(3))
End Sub
(2)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim M(2) As Integer
For i = 1 To 2
M(i) = 0
Next i
k = 2
For i = 1 To k
For j = 1 To k
M(j) = M(i) + 1
Print M(k);
Next j
Next i
End Sub
(3)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim A(10, 10)
For I = 2 To 4
For J = 4 To 5
A(I, J) = I * J
Next J
Next I
Print A(2, 5) + A(3, 4) + A(4, 5)
End Sub
(4)阅读程序,写出程序运行后的输出结果:_____。
Private Sub Form_Click()
Dim M(5, 5) As Integer, S(5) As Integer
For I = 1 To 5
S(I) = 0
For J = 1 To 5
M(I, J) = I + J
S(I) = S(I) + M(I, J)
Next J
Next I
For Each X In S
Print X;
- 15 -
- 16 -
第6章 过 程
Next End Sub
(5)阅读程序,写出程序运行后的输出结果:_____。
Dim A() As Integer
Private Sub Form_Click()
ReDim A(1 To 5) For I = 1 To 5 A(I) = I Next I
ReDim A(1 To 10) ' 若将该语句改为ReDim Preserve A(1 To 10),结果如何?
For I = 6 To 10
A(I) = 2 * I Next I
For I = 1 To 10
Print A(I); Next I End Sub
四、编程题:
(1)随机生成15个100以内的正整数,并显示在一个文本框中,再将所有对称位置的两个数据对调后显示在另一个文本框中(第1个与第15个对调,第2个与第14个对调,第3个与第13个对调,……)。
(2)数组的逆置。随机生成10个两位正整数,存放在数组A 中,再将数组中的数据进行逆置,在窗体上输出逆置前后的数组元素。应用程序运行参考界面如图5-30所示。
(3)数组的循环移位。将10个数放入数组中,然后将其中第一个数放置到最后,其余数依次前移。应用程序运行参考界面如图5-31所示。
图 5-30
- 17 -
第6章 过 程
(4)随机生成20个两位正整数,统计其中有多少个不相同的数。 (5)设有一个二维数组A(5, 5),试编程计算:
① 数组所有元素之和;
② 所有靠边元素之和; ③ 所有对角线元素之和。
(6)求一个N ×N 矩阵A 的转置。N 从键盘输入,A 矩阵和它的转置矩阵A T 分别显示在两个文本框中。(提示:转置矩阵A T(I, J) =A(I, J))
(7)找出100以内的所有素数,存放在数组Prime 中。并将所找到的素数,按每行10个的形式显示在窗体上。
(8)求矩阵A 中每一列的最大值以及最大值所在的行。应用程序运行参考界面如图5-32所示。
(9)设计窗体,输入两个数,根据不同运算符计算结果。设需要进行的有加、减、乘、除、整除、余数、指数和字符串连接8种运算。根据运算方式,显示计算结果。应用程序运行
参考界面如图5-29所示。
图 5-32
图 5-31
- 18 -
第6章 过 程
(10)将升序数组A 和升序数组B ,合并成升序数组C 。应用程序运行参考界面如图5-30所示。
练习题六
1、选择题:
(1)Sub 过程和Function 过程最根本的区别是_____。
A .两种过程参数的传递方式不同
B .两种过程分别用于实现不同的程序功能
C .Sub 过程不能返回值,而Function
过程可以返回值
图 5-29
图 5-30
第6章过程
D.Function过程可以没有形参,而Sub过程不能没有形参
(2)以下叙述中,错误的是_____。
A.在Sub或Function过程中不能再定义其他Sub或Function过程
B.在调用过程时,与使用ByRef说明的形参对应的实参只能按地址传递方式结合
C.递归过程既可以是递归Function过程,也可以是递归Sub过程
D.在调用过程时,形参为数组的参数对应的实参只能是数组
(3)以下叙述中,正确的是_____。
A.一个Sub过程至少要有一个Exit Sub语句
B.一个Sub过程必须有一个End Sub语句
C.可以在Sub过程中定义一个Function过程,但不能定义Sub过程
D.调用一个Function过程可以获得多个返回值
(4)在程序中用Private Function Fun(X As Integer, Y As Single)定义了函数Fun。在调用函数Fun的过程中,变量I,J均定义为Integer型,能正确引用函数Fun的是_____。
①Fun(I , J) ②Call Fun(I , 3.65)
③Fun(3.14 , 234) ④Fun("245", "231.5")
A.①③B.②③④
C.①②③D.①②③④
(5)定义两个过程Private Sub1(St() As String)和Private Sub2(Ch() As String * 6),在调用过程中用Dim S(3) As String *6, A(3) As String定义了两个字符型数组,下面调用语句中正确的有_____。
①Call Sub1(S) ②Call Sub1(A)
③Call Sub2(A) ④Call Sub2(S)
A.①②B.①③
C.②③D.②④
(6)名为sort的Sub子过程的形式参数为一数组,以下的定义语句中正确的是_____。
A.Private Sub sort(A() As Integer)
B.Private Sub sort(A(10) As Integer)
C.Private Sub sort(ByV al A() As Integer)
D.Private Sub sort(A( , ) As Integer)
(7)窗体的Name属性为Frm1,在窗体模块通用声明处和过程Sub1中分别用Public K As Integer, Dim K As Integer 声明了两个同名变量K,则在过程Sub1中要访问全局变量K,可采用_____。
A.Frm1.K B.Form.K
C.Form1.K D.K
(8)以下叙述中,错误的是_____。
A.一个Visual Basic程序中的任何一个代码段都可以直接引用全局变量
- 19 -
第6章过程
B.过程级变量的作用范围仅限于声明它们的过程中
C.Static类型变量可以在标准模块的声明部分定义
D.通用过程可以由用户定义过程名
(9)以下叙述中,错误的是_____。
A.如果过程被定义为Static类型,则过程中局部变量都是Static类型
B.在设计Visual Basic程序时,窗体、标准模块、类模块等需要分别保存为文件
C.全局变量必须在标准模块中定义
D.事件过程可以由用户定义过程名
(10)运行下面程序,当在窗体上单击一下后,窗体上显示的结果是_____。
Private Sub Sub1(x As Integer)
Static m As Integer
m = m + x
x = x + 1
Print m;
End Sub
Private Sub Form_Click()
Dim I As Integer
For I = 1 To 6
Sub1 I
Next I
End Sub
A.1 3 5 B.1 2 3 4 5 6
C.1 3 6 10 15 21 D.1 4 9
2、填空题:
(1)采用Function过程编写求其中的最大值程序。(产生10个两位随机整数)Option Explicit
Option Base 1
Private Sub Form_Click( )
Dim A(10) As Integer
Dim I As Integer , Maxnumber As Integer
For I=1 to 10
A(I)=___①___
Print A(I);
Next I
- 20 -