VB期末考试题库2011

更新时间:2024-04-02 09:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

试卷方案:201101 Visual Basic期末考试方案

题型:5种

1.单选题(20题*1=20分)

2.程序运行结果填空题(15空*2=30分) 3.完善程序填空题(10空*2=20分) 4.改错题(3错*4=12分)

5.编程题(共2题,1题为8分,另一题10分=18分) 一、填空 共20题 第1题 题号:28

运行下列程序,单击Command1, 在窗体上显示的第一行内容是______【1】____, 第二行的内容是_____【2】____, 第三行的内容是_____【3】______。 Option Explicit

Private Sub Command1_Click() Dim s As String s=\ Call trans(s) End Sub

Private Sub trans(s As String) Dim j As Integer,t As String Dim k As Integer k=3 Do

j=InStr(s,\ t=LCase(Right(s,j))

s=Right(t,Len(s)-k) & Left(s,Len(t)) k=k-1 Print s Loop Until k=0 End Sub

答案:

=======(答案1)======= icBa

=======(答案2)======= baicBa

=======(答案3)======= baba

第2题 题号:18

执行下面程序,单击Command1,则窗体上显示的第一行是_【1】___,第三行是__【2】__,最后一行是__【3】__。 Option Explicit

Private Sub Command1_Click() Dim x As Integer,y As Integer x=12:y=0

1

Do While x> 0 If x Mod 4=0 Then y=y+x Else y=y-x End If x=x-3 Print x,y Loop End Sub

答案:

=======(答案1)======= 9 12

=======(答案2)======= 3 -3

=======(答案3)======= 0 -6

第3题 题号:27

执行下面的程序,单击Command1,窗体上显示的第一行是______【1】_____,第二行是______【2】____,第四行是______【3】_____。 Option Explicit

Private Sub Command1_Click() Dim a As Integer, b As Integer a=1 : b=1 Call sub1(a, b) Print a, b End Sub

Private Sub sub1(a As Integer, b As Integer) a=a+b : b=b+a Print a, b If a>10 Then a=a+b b=b+a Else

Call sub1(a, b) End If End Sub

答案:

=======(答案1)======= 2 3

=======(答案2)======= 5 8

=======(答案3)======= 34 55

2

第4题 题号:26

运行下面的程序,单击Command1,在窗体上显示的变量a的值为____【1】______,变量b的值为_____【2】____,变量c的值为_____【3】______。 Option Explicit

Private Sub Command1_Click()

Dim a As Integer, b As Integer, c As Integer a=5: b=10: c=15

Print fun(a,b,c)+fun(a,b,c) Print a,b,c End Sub

Private Function fun(x As Integer, y As Integer, z As Integer) As Integer z=x x=x+y y=y+z fun=x+y End Function

答案:

=======(答案1)======= 30

=======(答案2)======= 30

=======(答案3)======= 15

第5题 题号:16

执行下面的程序,连续三次单击命令按钮Command1之后,A数组共有 【1】 个元素;数组元素A(2)的值是【2】 ,A(4)的值是 【3】 。 Option Explicit Option Base 1

Private Sub Command1_Click() Static A( ) As Integer,n As Integer Dim i As Integer,k As Integer k=n ' n=n + 2

ReDim Preserve A(n) For i=k+1 To n A(i)=i*n+1 Next i For i=1 To n Print A(i); Next i Print End Sub

答案:

=======(答案1)======= 6

3

=======(答案2)======= 5

=======(答案3)======= 17

第6题 题号:32

运行下面程序,单击Command1,在窗体上显示的变量A的值为___【1】____,变量B的值为____【2】______。 Option Explicit Dim a As Integer

Private Sub Command1_Click() Dim b As Integer b = 3 a = 4

b = fun(fun(a, b + 2), a) + b Print a, b End Sub

Private Function fun(n As Integer, k As Integer) n = n + a k = n - k fun = n + k + a End Function

答案:

=======(答案1)======= 19

=======(答案2)======= 68

第7题 题号:14

执行下面的程序,单击Commandl,则窗体上第一行显示的是【1】 Option Explicit Dim x As Integer

Private Sub Command1_Click() Dim y as Integer X=10:Y=2 Call process(y) Print X,Y

Call process((y)) Print X,Y End Sub

Private Sub process(n As Integer) Dim y As Integer If n>0 Then x=x-n y=x Else x=x+n y=x+2

4

2】 ,第二行显示的是【 。 End If n=-n End Sub

答案:

=======(答案1)======= 8 -2

=======(答案2)======= 6 -2

第8题 题号:37

执行下面程序,单击Command1,窗体上显示的第一行是__【1】___,第二行是___【2】___,第四行是___【3】_______,最后一行是___【4】_____. Option Explicit

Private Sub Command1_Click() Dim n As Integer n = 5 Call test(n) Print n End Sub

Private Sub test(ByVal n As Integer) Dim i As Integer, s As Integer If n > 0 Then For i = 1 To n s = s & CStr(i) Next i Print s

Call test(n - 2) Else

Print \ End If End Sub

答案:

=======(答案1)======= 12345

=======(答案2)======= 123

=======(答案3)======= OVER

=======(答案4)======= 5

第9题 题号:38

运行下列程序,单击Command1,在窗体上显示的第一行内容是【1】,第二行的内容是【2】,第三行的内容是【3】。(\的ASCII码是65,\是90) Option Explicit

Private Sub Command1_Click()

Dim i As Integer, st As String, n As Integer, p As String * 1

5

p = \

For i = 3 To 1 Step -1 n = Asc(p) - i

If n < 65 Then n = n + 26 st = Chr(n) st = st & F(i) Print st Next i End Sub

Private Function F(n As Integer) Dim i As Integer Static s As Integer For i = 1 To n s = s + i Next i F = s End Function

答案:

=======(答案1)======= Y6

=======(答案2)======= Z9

=======(答案3)======= A10

第10题 题号:21

执行下面的程序,单击Command1,输出的变量i的值是【1】,变量j的值是【2】,变量k的值是【3】。 Option Explicit

Private Sub Command1_Click() Dim i As Integer,j As Integer Dim k As Integer i=10 j=4

k=Funk(i,j) Print i,j,k End Sub

Priate Function Funk(ByVal A As Integer,B As Integer) As Integer A=A+B B=B-2

If B=0 Or B=1 Then Funk=1 Else

Funk=A+Funk(A,B) End If End Function

答案:

=======(答案1)=======

6

10

=======(答案2)======= 0

=======(答案3)======= 15

第11题 题号:31

运行下面程序,如果连续三次单击命令按钮之后,A数组共有___【1】___个元素;数组元素A(2)的值是__【2】____,A(5)的值是__【3】______. Option Explicit Option Base 1

Private Sub Command1_Click()

Static a() As Integer, n As Integer Dim i As Integer, k As Integer k = n n = n + 2

ReDim Preserve a(n) For i = k + 1 To n a(i) = i * n + 1 Next i

For i = 1 To n Print a(i); Next i Print End Sub

答案:

=======(答案1)======= 6

=======(答案2)======= 5

=======(答案3)======= 31

第12题 题号:17

执行下面的程序,单击Command1,在窗体界面上显示的第一行是【1】,第二行是【2】,第三行是【3】行是【4】 。 Option Explicit

Private Sub Command1_Click()

Dim a As Integer,b As Integer,i As Integer i=1218 a=i\\100 b=i Mod 100 If b<>0 Then Print a Print b

. Print Lcd((a),(b));a;b Print Lcd(a,b);a;b

7

,第四 End If End Sub

Private Function Lcd(x As Integer,Y As Integer) As Integer Dim d As Integer If x

If x Mod y=0 Then Lcd=x Exit Do Else x=x+d End If Loop End Function

答案:

=======(答案1)======= 12

=======(答案2)======= 18

=======(答案3)======= 36 12 18

=======(答案4)======= 36 36 12

第13题 题号:13

执行以下程序,单击Command1,则在Picturel上显示的第一行是【1】,第二行是【2】,第三行是【3】 Option Explicit

Private Sub Command1_Click()

Dim A(3,3) As Integer,i As Integer,j As Integer Dim k As Integer i=3:j=2:A(i,j)=1:k=1 Do Until k>9 k=k+1

If i+1>3 And j+1<=3 Then i=1:j=j+1

ElseIf i+1<=3 And j+1>3 Then i=i+1:j=1

Elself i+1>3 And j+1>3 Then i=i-1

ElseIf i+1<=3 And j+1<=3 And A(i+1,j+1)<>0 Then i=i-1 Else

i=i+1:j=j+1 End If

8

。 A(i,j)=k Loop

For i=1 To 3 For j=1 To 3

Picture1.Print A(i,j); Next j

Picture1.Print Next i End Sub

答案:

=======(答案1)======= 4 9 2

=======(答案2)======= 3 5 7

=======(答案3)======= 8 1 6

第14题 题号:22

执行下列程序,单击Command1,在窗体上显示的第一行内容是__【1】__,第二行的内容是__【2】__,第三行的内容是_【3】___。 Option Explicit

Private Sub Command1_Click Dim n As Integer ,i As Integer n=2

For i=7 To 1 Step -1 Call sub2(i,n) Print i,n Next i End Sub

Private Sub sub2(x As Integer,y As Integer) Static n As Integer Dim i As Integer For i =2 To 1 Step -1 n =n+x x =x-1 Next i y=y+n End Sub

答案:

=======(答案1)======= 5 15

=======(答案2)======= 2 35

=======(答案3)======= -1 56

9

第15题 题号:20

执行下列的程序,单击Command1,在窗体上显示的变量b的值为__【1】__,变量c的值为___【2】_,变量z的值为__【3】__。 Private Sub Command1_Click()

Dim b As Integer,c As Integer,z As Integer b=2 c=1

z=fun(b,fun(b+1,c))+b-c+1 Print b,c,z End Sub

Private Function fun(x As Integer,ByVal y As Integer) As Integer x=x-y y=x+y+2 fun=y-x End Function

答案:

=======(答案1)======= -1

=======(答案2)======= 1

=======(答案3)======= 4

第16题 题号:25

执行下面程序,单击Command1,窗体上显示的第一行是____【1】____,第二行是_____【2】____,第四行是__【3】______.

Option Explicit

Private Sub Command1_Click()

Dim a As Integer, b As Integer, i As Integer a=2:b=5

For i=a To a*b Step a Call sub1(i,a,b) Print a,b Next i Print a,b,i End Sub

Private Sub sub1(i As Integer, a As Integer, b As Integer) i=i+1 a=a+1 b=b+1 End Sub

答案:

=======(答案1)======= 3 6

=======(答案2)======= 4 7

10

=======(答案3)======= 5 8 11

第17题 题号:19

执行下面程序,单击Command1,窗体上显示的第一行是__【1】__,第二行是__【2】__,第三行是_【3】___。 Option Explicit Option Base 1

Private Sub Command1_Click()

Dim sa (3,3) As String*1,i As Integer,j As Integer,k as Integer k=1

For i=1 To 3 For j=1 To 3

sa(i,j)=Chr(Asc(\ Print sa(i,j);\ k=k+3 Next j Print Next i End Sub

答案:

=======(答案1)======= D H L

=======(答案2)======= N R V

=======(答案3)======= X B F

第18题 题号:23

执行下面程序,单击Command1,则数组元素a(1,2)的数值是____【1】_____,a(3,3)的数值是____【2】______,图片框中最后一行显示的是____【3】_____. Option Explicit

Private Sub Command1_Click()

Dim a(4,4) as Integer, i as Integer, j as Integer Dim k As Integer, num as Integer num=0 For k=1 To 4 For i=1 To k-1 num=num+1 a(i,k)=num next i

For j=k To 1 Step -1 num=num+1 a(k,j)=num next j next k For i=1 To 4

11

For j=1 To 4

Picture1.Print Right(\ Next j

Picture1.Print Next i End Sub

答案:

=======(答案1)======= 2

=======(答案2)======= 7

=======(答案3)======= 16 15 14 13

第19题 题号:29

执行下面程序,单击Command1,则图片框中显示的第一行是___【1】___,显示的第二行是_____【2】___,最后一行显示的是___【3】_____. Private Sub Command1_Click() Dim a(3, 3) As Integer

Dim i As Integer, j As Integer For i = 1 To 3

For j = 3 To 1 Step -1 If i >= j Then a(i, j) = i - j Else

a(i, j) = j - i End If Next j Next i

For i = 1 To 3

For j = 3 To 1 Step -1 Picture1.Print a(i, j); Next j

Picture1.Print Next i End Sub

答案:

=======(答案1)======= 2 1 0

=======(答案2)======= 1 0 1

=======(答案3)======= 0 1 2

第20题 题号:12

执行下面程序,单击Command1,则窗体上显示的第一行是【1】,第二行是【2】 ,第三行是【3】。 Option Explicit

12

Private Sub Command1_Click() Dim a As String,i As Integer Dim x As String,z As String a=\ i=InStr(5,a,\ Do

x=Mid(a,i,3) z=Right(x,1) z=UCase(x & Z) i=i-2 Print z Loop Until i=1 End Sub

答案:

=======(答案1)======= DENN

=======(答案2)======= TUDD

=======(答案3)======= MSTT

二、单项选择 共50题 第1题 题号:44

以下有关对象属性的说法中,错误的是___________. A. 工具箱中的控件并不是VB中所有的控件

B. 若将Frame的Enabled属性设置为False,则不能使用放置在Frame里面的控件 C. 对象的Name属性在运行时不能改变 D. 对象的所有属性都可以在属性窗口中设置

答案:D 第2题 题号:3

数学表达式(如图所示)的VB算术表达式为_______ . A. Sin(27)+Sqr(x+Exp3)/(x+y)

B. Sin(27*3.14159/180)+Sqr(x+Exp(3))/Abs(x+y) C. Sin(27*3.14159/180)+Sqr(x+e^3)/Abs(x+y) D. Sin(27*pi/180)+Sqr(x+Exp(3)/Abs(x+y)

答案:B

第3题 题号:17

下列有关对象的叙述中,正确的是______ A. 对象由属性,事件和方法构成

B. 对象的所有属性既可以在属性窗口设置,又可以在程序运行时用赋值语句设置 C. 对象的事件一定就是由VB预先设置好的人工干预的动作 D. 对象的方法是对象响应某个事件后执行的一段程序代码

答案:A

第4题 题号:46

表达式CInt(4.5)+Cint(-4.51)+Int(4.9)+Int(-4.1)+Fix(-1.9)+0 Mod 2的运算结果是___.

13

A. 1 B. -1 C. –2 D. –3

答案:D

第5题 题号:32

下列关于菜单的说法中,错误的是__________.

A. 每一个菜单项就是一个对象,并且可设置自己的属性和事件 B. 菜单项不可以响应DblClick事件 C. VB6.0允许创建超过四级的子菜单

D. 程序执行时,如果要求菜单项是灰色,不能被用户选择,则应设置菜单项的Enabled属性为False

答案:C

第6题 题号:42

.以下关于数组的说法中,错误的是__________.

A. 使用了Preserve 子句的Redim语句,只允许改变数组最后一维的上界 B. 对于动态数组, Redim 语句可以改变其维界但不可以改变其数据类型 C. Erase语句的功能只是对固定大小的数组进行初始化 D. Lbound函数返回值是指定数组某一维的下界

答案:C 第7题 题号:8

设a=3,b=2,c=1,运行print a>b>c的结果是____________. A. True

B. False

C. 1

D. 出错

答案:B 第8题 题号:4

以下说法不正确的是____________.

A. 使用不带关键字Preserve的ReDim语句可以重新定义数组的维数 B. 使用不带关键字Preserve的ReDim语句可以改变数组各维的上、下界 C. 使用不带关键字Preserve的ReDim语句可以改变数组的数据类型

D. 使用不带关键字Preserve的ReDim语句可以对数组中的所有元素进行初始化

答案:C

第9题 题号:37

在列表框List1中有若干列表项,可以删除选定列表项的语句是__________. A. List1.text=\

B. List1.List(List1.ListIndex)=\C. list1.Clear

D. List1.RemoveItem List1.ListIndex

答案:D

第10题 题号:41

数学表达式(如图所示)对应的VB表达式是__________.

A. (e^(2*π*x-5)*Log(x)+(Sin(2x))^3)/Sqr(Sin(x)-Cos(x^2)) B. (Exp(2*3.14159*x-5)*Log(x)+(Sin(2*x))^3)/Sqr(Sin(x)-Cos(x^2)) C. (Exp(2*π*x-5)*Ln(x)+(Sin(2*x))^3)/Sqr(Sin(x)-Cos(x^2)) D. e^(2*3.14159*x-5)*Ln(x)+(Sin(2*x))^3)/Sqr(Sing(x)-Cos(x^2))

答案:B

第11题 题号:14

以下有关数组参数的说明中,正确的是______

14

A. 在过程中也可用Dim语句对形参数组进行说明

B. 动态数组作为实参时,可用ReDim语句在过程中改变对应形参数组的维界 C. 调用过程时,数组名不能作为实参 D. 数组可以按地址传递也可以按植传递

答案:B

第12题 题号:43

下列有关过程的说法中,错误的是_____________.

A. 在Sub或 Function过程内部不能再定义其它Sub或 Function 过程 B. 对于使用ByRef说明的形参,在过程调用时形参和实参只能按传址方式结合 C. 递归过程既可以是递归Function过程,也可以是递归Sub过程 D. 可以像调用Sub过程一样使用Call语句调用Function过程

答案:B

第13题 题号:49

要将焦点设置在某个控件上,以下四个选项中正确的是______. A. 只能使用鼠标直接点击控件 B. 只能使用Tab键将焦点移到该控件 C. 只能在程序中调用该控件的SetFocus方法 D. A、B、C三选项中涉及的方法均可使用

答案:D

第14题 题号:55

以下Case语句中,能正确描述Y的绝对值大于6的是______. A. Case Abs(Y)>6 B. Case -6 To 6 C. Case Not(-6 To 6) D. Case Is<-6,Is>6

答案:D

第15题 题号:45

以下关于变量作用域的叙述中,正确的是____________.

A. 窗体中凡用Private声明的变量只能在某个指定的过程中使用 B. 模块级变量只能用Dim语句声明

C. 凡是在窗体模块或标准模块的通用声明段用Public语句声明的变量都是全局变量 D. 当不同作用域的同名变量发生冲突时,优先访问局限性小的变量

答案:C

第16题 题号:16

以下关于数值常量的说法中,错误的是______ A. 八进制数的表示方法是在数字前面加&O B. 十六进制数的表示方法是在数字前面加&H

C. 在浮点运算中使用D来分隔尾数和指数时,系统将把该数值作为单精度型数处理 D. 32768是合法的数值常量

答案:C

第17题 题号:27

数学表达式(如图所示)对应的VB表达式是___________. A. Abs(e^x+Sin(30)^3)∕Sqr(x+y))

15

B. Abs(Exp(x)+Sin(30)^3)∕(Sqr(x+y))

C. Abs(e^x+Sin(30*3.14159∕180)^3)∕(Sqr(x+y)) D. Abs(Exp(x)+Sin(30*3.14159∕180)^3)∕Sqr(x+y))

答案:D

第18题 题号:29

下面的4个表达式中,有关_________个能够对Single类型变量x(正数)的第3位小数正确地进行四舍五入计算. Format(x,″#.00″) Int(100*(x+0.005))/100 CInt(100*(x+0.005)/100 Fix(100*(x+0.005))/100 A. 1个

B. 2个

C. 3个

D. 4个

答案:C

第19题 题号:26

执行以下语句时,会出现错误提示的是__________. A. Print\B. Print\C. Print\D. Print\

答案:A

第20题 题号:34

以下Case语句含有错误的是___________. A. Case 0 To 10 B. Case Is>10

C. Case Is>10 And Is<50 D. Case 3,5,Is>10

答案:C

第21题 题号:1

下列语句中,正确的是__________ A. Textl.SetFocus B. Forml.Clear C. Labell.SetFocus D. Listl.Cls

答案:A

第22题 题号:9

下列选项中,所包含的所有表达式能够将两位整数x的个位数与十位数对调(如将78转换为87)的是_______________.

①Val(Right(X,1)&Left(X,1)) ②Val(Right(Str(X),1)&Left(Str(X),1)) ③Val(Right(CStr(X),1)&Left(CStr(X),1)) ④Val(Mid(X,2,1)+Mid(X,1,1)) A. ①②

B. ②③

C. ②④

D. ①③④

答案:D

第23题 题号:15

以下关于子过程或函数的定义中,正确的是______ A. Sub f1(n As String*1 )

16

B. Sub f1(n As Integer)As Integer C. Function f1(f1 As Integer)As Integer D. Function f1(ByVal n As Integer)

答案:D

第24题 题号:54

下列有关控件数组的说法中,错误的是______.

A. 控件数组由一组具有相同名称和相同类型的控件组成, 不同类型的控件无法组成控件数组

B. 控件数组中的所有控件不得具有各自不同的属性设置值 C. 控件数组中的所有控件共享同一个事件过程

D. 控件数组中每个元素的下标由控件的Index属性指定

答案:B

第25题 题号:7

以下对数组参数的说明中,错误的是___________ . A. 在过程中可以用Dim语句对形参数组进行声明 B. 形参数组只能按地址传递

C. 实参为动态数组时,可用ReDim语句改变对应形参数组的维界 D. 只需把要传递的数组名作为实参,即可调用过程

答案:A

第26题 题号:6

要向文件datal.txt添加数据,正确的文件打开命令是_____________. A. Open\B. Open\C. Open\D. Open\

答案:C

第27题 题号:31

下面有关数组处理的叙述中,正确的是__________. A. 在过程中使用ReDim语句可以改变动态数组数据的类型 B. 在过程中,可以使用Dim 、Private和 Static语句来定义数组

C. 用ReDim语句重新定义动态数组时,可以改变数组的大小,但不能改变数组的维数 D. 不可以用Public语句在窗体模块的通用处说明一个全局数组

答案:D

第28题 题号:35

下面的表达式中,运算结果为True的是__________. A. \

B. Int(134.69) <=CInt(134.69) C. 3>2>1

D. Mid(\

答案:B

第29题 题号:36

设计界面时,要使一个文本框具有水平和垂直滚动条,应先将其________属性置为True,再将ScrollBar属性设置为3.

17

A. MultiLine B. AutoSize C. Alignment D. RightToLeft

答案:A

第30题 题号:23

下面有关数组的说法中,正确的是______ A. 数组的维下界不可以是负数

B. 模块通用声明处有Option Base 1,则模块中数组定义语句Dim A(0 To 5)会与之冲突 C. 模块通用声明处有Option Base 1,模块中有Dim A(0 To 5),则A数组第一维维下界为0 D. 模块通用声明处有Option Base 1,模块中有DimA(0 To 5),则A数组第一维维下界为1

答案:C

第31题 题号:53

下面有关数组的叙述中,不正确的是______.

① 在过程中用ReDim语句定义的动态数组,其下标的上下界可以是变量 ② 数组作为形式参数时,传递的是每个数组元素的值

③ 在窗体模块的通用声明处可以用Public 说明一个全局数组

④ 数组定义语句中可以用负数或小数来指定某一维的维下界或维上界的值 A. ②③

B. ①③④

C. ①②③④

D. ③④

答案:A

第32题 题号:11

下列关于对象SetFocus与GotFocus的描述中,正确的是_____ A. SetFocus是事件,GotFocus是方法 C. Setfocus和GotFocus都是方法

B. Setfocus和Gotfocus都是事件 D. SetFocus是方法,GotFocus是事件

答案:D

第33题 题号:2

创建一个名为\文件\的菜单项,欲使其可用Alt+F方式访问,则在菜单编辑器的 标题文本框中应输入_________. A. 文件($F)

B. 文件(&F)

C. 文件(#F)

D. 文件(%F)

答案:B

第34题 题号:50

在下列属性中,属于CommandButton控件、ListBox控件共有的是______. A. Caption、Text

B. Visible、Font

C. Caption、Visible

D. List、Visible

答案:B

第35题 题号:22

下列能够正确表示条件\VB逻辑表达式是______ A. X≤Y

B. X<=Y And Y

C. X≤Y OR Y

D. X<=Y

答案:B

第36题 题号:33

以下关于Function过程的说法中,错误的是___________. A. Function过程名可以有一个或多个返回值 B. 在Function过程内部不得再定义Function过程 C. Function过程中可以包含多个Exit Function语句 D. 可以像调用Sub过程一样调用Function过程

18

答案:A

第37题 题号:52

下面的关系表达式中,运算结果为True的是______. A. CInt(1.5)=Int(1.5)

B. Fix(1.5)=Int(1.5) D. Fix(-1.5)=Int(-1.5)

C. Fix(-1.5)=CInt(-1.5)

答案:B

第38题 题号:21

已知XB,则下列表达式中,结果为True的是______ A. Sgn(X-Y)+Sgn(A-B)=-1 C. Sgn(Y-X)+Sgn(A-B)=2

B. Sgn(X-Y)+Sgn(A-B)=-2 D. Sgn(Y-X)+Sgn(A-B)=0

答案:C

第39题 题号:38

执行__________语句时,会出现出错提示信息. A. Print 5+7=14 C. Print 32768*2

B. Print 16384*2 D. Print \

答案:B

第40题 题号:51

数学表达式(如图所示)对应的Visual Basic表达式是______. A. Sin(30*3.14159/180)+Sqr(Log(x)+y)/2*3.14159+Exp(x+y) B. (Sin(30*π/180)+Sqr(Ln(x)+y))/(2*π+Exp(x+y))

C. Sin(30*180/3.14159)+Sqr(Log(x)+y)/(2*3.14159+e^(x+y)) D. (Sin(30*3.14159/180)+Sqr(Log(x)+y))/(2*3.14159+Exp(x+y))

答案:D

第41题 题号:48

在一个多窗体程序中,可以仅将窗体Form2从内存中卸载的语句是________. A. Form2.Unload C. Form2.End

B. Unload Form2 D. Form2.Hide

答案:B

第42题 题号:12

Print方法可在______上输出数据.

①窗体 ②文本框 ③图片框 ④标签 ⑤列表框 ⑥立即窗口 A. ①③⑥

B. ②③⑤

C. ①②⑤

D. ③④⑥

答案:A

第43题 题号:47

若要使逻辑表达式x>y Xor y

B. x=2、y=1、z=2 D. x=2、y=2、z=2

答案:A

第44题 题号:5

下列____________是合法的变量名. A. abs

B. –al

C. cdc d

D. Abe_10

19

答案:D

第45题 题号:10

下列______是正确的VB常量. A. D-6

B. E-6

C. 5D

D. 5E-6

答案:D

第46题 题号:56

若在模块中用Private Function Fun(A as Single,B as Integer) As Integer 定义了函数Fun.调用函数Fun的过程中定义了I、J和K三个Integer型变量,则下列语句中不能正确调用函数Fun的语句是___________. A. Fun 3.14,J

B. Call Fun(I,365)

C. Fun(I),(J)

D. K=Fun(\

答案:B

第47题 题号:57

若需要在同一窗体内安排两组相互独立的单选按钮(OptionButton),可使用______控件做容器将它们分开. ①TextBox ②PictureBox ③ Image ④ Frame A. ①或②

B. ②或③

C. ②或④

D. ③或④

答案:C

第48题 题号:58

以下关于文件的叙述中,错误的是__________。

A:用Output模式打开一个顺序文件,即使不对它进行写操作,原来的内容也被清除 B:可以用Print #语句或 Write# 语句将数据写到顺序文件中

C:若以Output、Append、Random、Binary 方式打开一个不存在的文件,系统会出错 D:顺序文件或随机文件都可以用二进制访问模式打开

答案:C

第49题 题号:24

窗体上有若干命令按钮和一个文本框,程序运行时焦点置于文本框中,为了在按下回车键时执行某个命令按钮的Click事件过程,需要将该按钮的_________属性设置为True. A. Enabled

B. Default

C. Cancel

D. Visible

答案:B

第50题 题号:13

数学表达式对应的VB表达式是______ A. (x^5-Cos(29))/Sqr(e^x+In(y))+5 B. (x^5-Cos(29))/(Sqr(Exp(x)+Log(y))+5)

C. (x^5-Cos(29*3.14159/180))/(Sqr(Exp(x)+Log(y))+5) D. (x^5-Cos(29*3.14159/180))/(Sqr(e^x+Log(y))+5

答案:C

三、程序填空 共16题

第1题 题号:14(2008年(春)笔试试卷-9)

'本程序的功能是把由4个\分隔的十进制数表示的IP地址转换为由32位二进制数组成 '的IP地址。 例如十进制表示的IP地址为202.119.191.1,其中每个十进制数对应一个8位 '的二进制数,合起来构成一个32位二进制的IP地址11001010011101111011111100000001。 '过程Tiqu用于提取十进制IP地址中每个用\分隔的十进制数;

'过程Convert用于将十进制数转换为相应的8位二进制数。程序界面参见下图。

20

Option Explicit

Private Sub Command1_Click()

Dim str1 As String, str2 As String Dim a(4) As Integer, i As Integer str1 = Text1.Text Call Tiqu(str1, a) For i = 1 To 4

If a(i) < 0 Or a(i) > 255 Then MsgBox(\地址错误!\ Exit Sub Else

'**********SPACE********** 【?】 End If Next i

Text2.Text = str2 End Sub

Private Sub Tiqu(st As String, a() As Integer)

Dim n As Integer, k As Integer, s As String, d As String * 1, i As Integer n = Len(st): k = 0: s = \ For i = 1 To n

'**********SPACE********** 【?】 If d = \ k = k + 1 a(k) = Val(s) '**********SPACE********** 【?】 Else

s = s & d End If Next i a(4) = s End Sub

Private Function convert(ByVal n As Integer) As String Dim b As Integer, i As Integer, s As String Do While n > 0 b = n Mod 2 n = n \\ 2

'**********SPACE********** 【?】 Loop

For i = 1 To 8 - Len(s) s = \ Next i

'**********SPACE**********

21

【?】 End Function

答案:

=======(答案1)======= str2=str2 & convert(a(i)) =======(答案2)======= d=Mid(st,i,1)

=======(答案3)======= s=\

=======(答案4)======= s=CStr(b) & s =========或========= s=b & s

=======(答案5)======= convert=s

第2题 题号:21(2009年(春)笔试试卷-8)

'下面程序的功能是:统计存放在数组A中的N个数有多少个是不同的。 '具体做法是:变量Left指向要被处理的数(从第2个元素开始),

'Right指向数组最后一个元素。若A(Left)与排在它前面的某个数组元素值相同, '就用数组元素A(Right)的值来替换A(Left)的值,同时将变量Right的值减1;

'否则将变量Left的值加1,处理数组下一个元素,重复以上过程,直到Left>Right为止。 'Right的值即为不同的数的个数。程序界面参见下图所示。 Option Explicit Option Base 1

Private Sub Command1_Click()

Dim A() As Integer, N As Integer, I As Integer Dim OP As Integer

N = InputBox(\请输入数据个数\ ReDim A(N) Randomize For I = 1 To N

A(I) = Int(Rnd * 10) + 1 Text1 = Text1 & A(I) & \ Next I

Call statistic(A, OP)

Text2 = \有 \个不同的数: \ For I = 1 To OP

Text2 = Text2 & A(I) & \ Next I End Sub

Private Sub statistic(A() As Integer, Right As Integer) Dim Left As Integer, K As Integer, I As Integer '**********SPACE********** Right=【?】 Left = 2

Do While Left <= Right

22

'**********SPACE********** K= 【?】

For I = K To 1 Step -1

If A(Left) = A(I) Then Exit For Next I

'**********SPACE********** If 【?】 Then Left = Left + 1 Else

A(Left) = A(Right) '**********SPACE********** 【?】 End If Loop End Sub

答案:

=======(答案1)======= UBound(A)

=======(答案2)======= Left-1

=======(答案3)======= I=0

=======(答案4)======= Right=Right-1

第3题 题号:7(2008年(春)笔试试卷-7)

'下面程序的功能是随机生成小于100的诸素数组成的数据。程序界面如下图所示。 Option Explicit

Private Sub Command1_Click()

Dim p() As Integer,i As Integer,n As Integer Dim st As String,k As Integer Randomize

k =InputBox(\元素个数;\ ReDim p(k) Do

n =Int(Rnd*90)+10 '**********SPACE********** If 【?】 Then i =i+1 p(i) =n End If

'**********SPACE********** Loop Until【?】 For i =1 To UBound(p) st =st & Str(p(i))

If i Mod 10 =0 Then st =st & vbCrLf Next i

23

Text1 =st End Sub

Private Function prime(n As Integer) As Boolean Dim i As Integer Prime =True For i =2 To Sqr(n) If n Mod i =0 Then '**********SPACE********** 【?】 Exit For End If Next i End Function

答案:

=======(答案1)======= prime(n)

=========或========= prime(n)=true

=======(答案2)======= i=k

=======(答案3)======= prime=False

第4题 题号:19(2009年(春)笔试试卷-6)

'用以下公式求f(x) 的值。当通项的绝对值小于10^-7时停止计算,x的值由键盘输入。 '程序界面和公式参考图片所示: Option Explicit

Private Sub Command1_Click() Dim x As Single, fx As Single

Dim a As Single, a1 As Single, a2 As Single Dim t As Single a1 = 1: a2 = 2 x = Text1

'**********SPACE********** If 【?】Then MsgBox (\必须在-1~1之间\ Exit Sub End If

fx = a1 * x - a2 * x * x t = (-1) * x * x Do

a = 1 / (a1 + a2) t = (-1) * t * x '**********SPACE********** fx = 【?】 a1 = a2

'**********SPACE**********

24

【?】 Loop Until Abs(a * t) < 0.0000001 Text2 = fx End Sub

答案:

=======(答案1)======= Abs(x) >= 1

=======(答案2)======= fx+a*t

=======(答案3)======= a2=a

第5题 题号:4(2007年(秋)笔试试卷-9)

'下面程序的功能是:首先生成一个由小到大已排好序的整数数组,再输入一个数据, '单击\插入\按钮会自动把这个数据插人到原数组适当的位置,并保持数组的有序性。 '程序界面参见下图。 Option Explicit Dim a( ) As Integer

Private Sub Form_Activate() '生成有序数组 Dim i As Integer ReDim a(10) For i=1 To 10 a(i)=(i-1)*10+1

Text1=Text1 & Str(a(i)) Next i

Text2.SetFocus End Sub

Private Sub Command1_Click() Dim n As Integer,i As Integer n=Text2

For i=1 To UBound(a) '**********SPACE**********

If 【?】Then Exit For '确定插入的位置 Next i

'**********SPACE********** 【?】

For i=1 To UBound(a) Text3=Text3 & Str(a(i)) Next i End Sub

Private Sub inst(P() As Integer,n As Integer,k As Integer) '数组元素移位并实现插入 Dim i As Integer '**********SPACE********** 【?】

For i=UBound(P)-1 To k Step -1 '**********SPACE********** 【?】

25

Next i P(k)=n End Sub

答案:

=======(答案1)======= n

=======(答案2)======= Call inst(a,n,i) =========或========= inst a,n,i

=======(答案3)======= ReDim Preserve p(UBound(p)+1) =======(答案4)======= p(i+1)=p(i)

第6题 题号:15(2008年(秋)笔试试卷-7)

'下面程序的功能是:将输入的2位16进制数的每一位转换为一个4位的二进制数, '再组合成为一个8位的二进制数。程序界面参见下图。 Option Explicit

Private Sub Command1_Click()

Dim h As String, h1 As String * 1,h2 As String * 1 h=Text1

h1=Left(h,1): h2=Right(h,1) Text2=h2b(h1) & h2b(h2) End Sub

Private Function h2b(p As String) As String Dim st As String, i As Integer st=″0123456789ABCDEF″ For i=1 To Len(st) '**********SPACE********** If 【?】 Then Exit For Next i i=i-1 Do

'**********SPACE********** h2b=【?】 i=i\\2

Loop Until i<=0

'**********SPACE********** h2b=【?】 End Function

答案:

=======(答案1)======= p=Mid(st,i,1)

=======(答案2)======= i Mod 2 & h2b

=======(答案3)=======

26

Right(\=========或=========

String(4-Len(h2b),\

第7题 题号:13(2008年(春)笔试试卷-6)

'用以下公式(公式如下图所示)求Sin(x)的值.当级数通项的绝对值小与eps=10^-7时停止 '计算,x的值由键盘输入. ' 请完善如下程序 Option Explicit

Private Sub Form_Click()

Dim x As Double,t As Double,n As Integer,sum As Double Const eps=0.0000001

X =Val(InputBox(\请输入x:\'**********SPACE********** 【?】 sum =t n =1

'**********SPACE********** Do Until 【?】 t =-t

'**********SPACE********** t =【?】 sum =sum+t n =n+1 Loop

Print \End Sub

答案:

=======(答案1)======= t=x

=======(答案2)======= Abs(t)

=======(答案3)======= t*x*x/(2*n*(2*n+1)) =========或========= t*x^2/(2*n)/(2*n+1)

第8题 题号:18(2008年(秋)笔试试卷-9)

'下面程序的功能是:在文本框1中输入若干以空格分隔的整数(末尾无空格), '程序自动将输入的数据分解并存储到一个一维数组,

'再把数组中所有重复的元素删除(只保留一个),并输出到文本框2。 Option Explicit Option Base 1

Private Sub Command1_Click()

Dim a() As Integer, i As Integer, st As String Dim k As Integer, p As Integer st=Text1

27

Do

p=InStr(st,\ If p<>0 Then '**********SPACE********** 【?】

ReDim Preserve a(k) a(k)=Val(Left(st,p-1)) st=Right(st,Len(st)-p) Else

'**********SPACE********** 【?】

a(k+1)=Val(st) End If

'**********SPACE********** Loop Until【?】 Call del(a)

For i= 1 To UBound(a) Text2=Text2 & Str(a(i)) Next i

Text2=LTrim(Text2) End Sub

Private Sub del(a() As Integer)

Dim i As Integer, j As Integer, k As Integer Do i=i+1 j=i+1

Do While j<=Ubound(a) '**********SPACE********** If 【?】Then

For k=j To UBound(a)-1 a(k)=a(k+1) Next k

ReDim Preserve a(UBound(a)-1) Else

'**********SPACE********** 【?】 End If Loop

Loop Until i>UBound(a) End Sub

答案:

=======(答案1)======= k=k+1

=======(答案2)======= ReDim Preserve a(k+1) =======(答案3)=======

28

p=0

=======(答案4)======= a(i)=a(j)

=======(答案5)======= j=j+1

第9题 题号:11(2008年(春)笔试试卷-8)

'下面程序的功能是将给定整数 N 表示成若干个质数因子相乘的形式(分解质因数). '程序界面参见下图。 Option Explicit Option Base 1

Private Sub Command1_Click() Dim n As Integer,a() As Integer Dim st As String,i As Integer n =Text1 Call fenjie(n,a) st =CStr(n) & \ For i =1 To UBound(a)-1 St =st & a(i) & \ Next i

Text2 =st & a(i) End Sub

'**********SPACE********** Private Sub fenjie(【?】) Dim k As Integer,i As Integer k =2 Do

If n Mod k =0 Then i =i +1

ReDim Preserve a(i) a(i) =k

'**********SPACE********** 【?】 Else

'**********SPACE********** 【?】 End If

'**********SPACE********** Loop Until【?】 End Sub

答案:

=======(答案1)=======

ByVal n As Integer,a() As Integer =======(答案2)======= n=n\\k

=======(答案3)======= k=k+1

29

=======(答案4)======= n=1

第10题 题号:20(2009年(春)笔试试卷-7)

'学生的某次课程测验中,选择题的答案已记录在列表框List1中,

'其数据行格式是:学号为6个字符长度、2个空格、选择题的答案为15个字符长度。 '程序根据标准答案进行批改,每答对一题给1分,并将得分存放到列表框List2中。 '标准答案存放在变量Exact中。程序界面参考图片所示。 Option Explicit

Private Sub Command1_Click()

Dim Anw As String, StudId As String Dim Scor As Integer, Exact As String Dim I As Integer, J As Integer

Exact = \标准答案 '**********SPACE********** For I = 【?】

'**********SPACE********** Anw = 【?】

StudId = Left(Anw, 6)

Anw = Right(Anw, Len(Anw) - 8) '**********SPACE********** 【?】

For J = 1 To Len(Anw) '**********SPACE********** If 【?】Then Scor = Scor + 1 End If Next J

List2.AddItem StudId & \ Next I End Sub

答案:

=======(答案1)======= 0 To List1.ListCount-1 =======(答案2)======= List1.List(I)

=======(答案3)======= Scor=0

=======(答案4)======= Mid(Anw,J,1)=Mid(Exact,J,1)

第11题 题号:16(2008年(秋)笔试试卷-8)

'下面程序的功能是:输入一个n位的整数(n≤10),求出由这n个数字组成的n位的 '最小整数和最大整数。 Option Explicit 0ption Base 1

Private Sub Command1_Click()

30

Dim n As Long,a() As String n=Text1

Call change(n,a) Call sort(a)

For i=1 To UBound(a) large=a(i) & large '**********SPACE********** small=【?】 Next i Text2=large

For i=1 To Len(small) '**********SPACE********** If 【?】 Then Exit For Next i If i<>1 Then

small =Mid(small, i ,1) & Left(small,i-1) & Right(small,Len(small)-i) End If Text3=small End Sub

Private Sub sort(a() As Integer) '冒泡法排序 Dim i As Integer,j As Integer,t As Integer For i=1 To UBound(a)-1 For j=1 To UBound(a)-i '*********SPACE********** If 【?】 Then t =a(j) a(j)=a(j+1) a(j+1)=t End If Next j Next i End Sub

'**********SPACE********** Private Sub change(【?】) Dim k As Integer Do k=k+1

ReDim Preserve a(k) a(k)=n Mod 10 '**********SPACE********** n=【?】 Loop Until n=0 End Sub

答案:

=======(答案1)=======

31

small & a(i)

=======(答案2)======= Mid(small,i,1)<>0 =======(答案3)======= a(j)>a(j+1)

=======(答案4)======= n As Long,a() As Integer =======(答案5)======= n\\10

第12题 题号:17(2008年(秋)笔试试卷-6)

'下面程序的功能是计算如图所示的值。请完善如下程序: Option Explicit

Private Sub Command1_Click()

Dim n As Integer, st As String, i As Integer Dim k As Single, s As Single, j As Integer n=Text1 s=1

For i =2 To n

'**********SPACE********** 【?】

For j =1 To i st=st & CStr(i) next j

'**********SPACE********** k=【?】 s=s + k Next i Text2=s End Sub

答案:

=======(答案1)======= st=\

=======(答案2)======= (-1)^(i-1)/Val(st)

第13题 题号:22(2009年(春)笔试试卷9)

' 在计算机中用一个字节(8位)来存储一个字符的ASCII码,

' 其中低7位二进制数对应字符的编码,每个字节的最高位一般保持为\, ' 在数据传输时可用作奇偶校验位。传输时ASCII代码转换成传输码的方法是, ' 若7位ASCII码有偶数个1,则最高位为1。有奇数个1,则最高位为0。 ' 例如字母\的ASCII码十进制表示为65,二进制表示为01000001。

' \的传输码则为\。本程序的功能就是把ASCII代码转换成这种传输码。 ' 程序参考界面如下图所示。 Option Explicit

Private Sub Command1_Click() Dim i As Integer, s As String

32

Dim str As String, ch As String str = Text1.Text For i = 1 To Len(str) '**********SPACE********** 【?】

Call convert(ch, s)

List1.AddItem ch & \ Next i End Sub

Private Sub convert(ch As String, s As String)

Dim m As Integer, k As Integer, n As Integer, i As Integer '**********SPACE********** s= 【?】 n = Asc(ch) Do While n > 0

'**********SPACE********** 【?】 s = m & s If m = 1 Then k = k + 1 End If n = n \\ 2 Loop

For i = 1 To 7 - Len(s) '将字符的二进制代码补足7位 s = \ Next i

If k Mod 2 = 0 Then '**********SPACE********** 【?】 Else

s = \ End If End Sub

答案:

=======(答案1)======= ch = Mid(str, i, 1) =======(答案2)======= \

=======(答案3)======= m = n Mod 2

=======(答案4)======= s = \

第14题 题号:3(2007年(秋)笔试试卷-8)

'下面程序的功能是:找出仅由数字1、2、3、4组成的4位素数,要求每个素数由4个不 '同数字组成。算法提示:函数Validate用于验证一个4位数是否由4个不同数字组成。 '在函数中用A数组的各个元素分别对应数字0~9,只要某数字出现在四位数中,无论几次,

33

'均将该数字对应的数组元素值置为1。程序界面参见下图。 Option Explicit

Private Sub Command1_Click() Dim i As Integer,Flg As Boolean For i=1234 To 4321 '**********SPACE********** 【?】

Call Prime(i,Flg) If Flg Then

If Validate(i) Then

Text1=Text1 & i & vbCrLf . End If End If Next i End Sub

Private Sub Prime(n As Integer,f As Boolean) Dim k As Integer For k=2 To Sqr(n) '**********SPACE********** 【?】 Next k f=True End Sub

Private Function Validate(n As Integer) As Boolean Dim A(0 To 9)As Integer,s As String,i As Integer Dim s1 As String*1 '**********SPACE********** 【?】

For i=1 To Len(s) s1=Mid(s,i,1) '**********SPACE********** 【?】 Next i

If A(1)+A(2)+A(3)+A(4)=4 Then '**********SPACE********** 【?】 End If End Function

答案:

=======(答案1)======= Flg=False

=======(答案2)======= If n Mod k=0 Then Exit Sub =======(答案3)======= s=CStr(n)

34

=========或========= s=n

=======(答案4)======= A(Val(s1))=1

=========或========= A(s1)=1

=======(答案5)======= Validate=True

第15题 题号:1(2007年(秋)笔试试卷-6)

'本程序的功能是利用无穷级数求cos(x)的近似值,已知公式如图所示: '当第n项的绝对值小于等于10^-7时计算终止。程序界面参见下图。 Option Explicit

Private Sub Command1_Click()

Dim X As Single, n As Integer, sum As Single Dim a As Single X = Text1

'**********SPACE********** 【?】 a = 1 n = 1 Do a = -a

'**********SPACE********** a = 【?】 sum = sum + a n = n + 1

'**********SPACE********** Loop Until 【?】 Text2 = sum End Sub

答案:

=======(答案1)======= sum=1

=======(答案2)=======

a = a *x *x / (2 * n * (2 * n - 1)) =========或========= a*x^2/(2*n*(2*n-1)) =======(答案3)======= Abs(a)<=0.0000001 =========或========= Abs(a)<=1E-7

第16题 题号:2(2007年(秋)笔试试卷-7)

'定义方阵的一种范数为该方阵各列元素的绝对值之和中的最大值。以下程序的功能 '是求一个4×4方阵的范数。该方阵的数据是随机生成的-20~20之间的整数。

35

'程序界面参见下图。 Option Explicit Option Base 1

Private Sub Command1_Click() Dim a(4,4) As Integer

Dim i As Integer,j As Integer For i=1 T0 4 For j=1 To 4 '**********SPACE********** a(i,j)= 【?】

Picture1.Print Right(\ Next j

Picture1.Print Next i

'**********SPACE********** Text1.Text= 【?】 End Sub

Private Function fan(a()As Integer) As Integer Dim b(4) As Integer,max As Integer Dim i As Integer,j As Integer For i=1 To 4 For j=1 To 4 '**********SPACE********** b(j)=【?】 Next j Next i max=b(1) For i=2 To 4

If max

答案:

=======(答案1)======= Int(Rnd*41)-20 =======(答案2)======= fan(a)

=======(答案3)======= b(j)+Abs(a(i,j))

四、程序改错 共7题 第1题 题号:7

'【题目】从10个各不相同的正整数中,剔除若干个数。使得保留下来的数中, ' 任意两个数的和都不是平方数

'(所谓平方数就是该数等于某一个数的平方,例如4就是一个平方数)。

36

Option Explicit Option Base 1

Private Sub Command1_Click()

Dim a(10) As Integer, i As Integer, j As Integer, p As Integer, k As Integer '**********FOUND********** Do While p <= 10

k = Int(20 * Rnd) + 1 For j = 1 To p '**********FOUND**********

If k = a(j) Then Exit Do Next j If j > p Then p = p + 1 a(p) = k

Text1 = Text1 & Str(k) End If Loop

Call delete(a, p) For i = 1 To p

Text2 = Text2 & Str(a(i)) Next i End Sub

Private Sub delete(a() As Integer, p As Integer) Dim idx As Integer, j As Integer, sum As Integer idx = 2

Do While idx < p

For j = 1 To idx - 1 sum = a(idx) + a(j)

If Int(Sqr(sum)) = Sqr(sum) Then Exit For Next j

'**********FOUND********** If j > idx - 1 Then a(idx) = a(p) p = p - 1 Else

idx = idx + 1 End If Loop End Sub

答案:

=======(答案1)======= Do While p < 10 =======(答案2)======= If k = a(j) Then Exit For =======(答案3)=======

37

If j <= idx - 1 Then

第2题 题号:8

'【题目】本程序的功能是生成一组(10个)两位的互质数。

'一组互质数是指其中任意两个数之间都不存在除1以外的任何公约数。 Private Sub Command1_Click()

Dim i As Integer, k As Integer, num(10) As Integer Dim flag As Boolean, n As Integer num(1) = Int(Rnd * 90) + 10 k = 1 Do

'**********FOUND********** flag = True

n = Int(Rnd * 90) + 10 For i = 1 To k

If gcd(num(i), n) <> 1 Then flag = False Next i If flag Then k = k + 1 num(k) = n End If

Loop Until k = 10 For i = 1 To 10

Text1 = Text1 & Str(num(i)) Next i End Sub

'**********FOUND**********

Private Function gcd(m%, ByVal n%) As Integer Dim r As Integer Do

r = m Mod n m = n n = r

Loop Until r = 0

'**********FOUND********** gcd = n End Function

答案:

=======(答案1)======= flag = False

=======(答案2)=======

Private Function gcd(ByVal m%, ByVal n%) As Integer =======(答案3)======= gcd = m

第3题 题号:9

'【题目】本程序的功能是:把10~20范围内的数分别表示成若干个质因子连乘的形式。

38

Option Explicit Option Base 1

Private Sub Command1_Click()

Dim j As Integer, pf() As Integer, i As Integer Dim st As String For i = 10 To 20 Call prime_f(i, pf) st = CStr(i) & \'**********FOUND********** For j = 1 To UBound(pf) st = st & Str(pf(j)) & \ Next j

st = st & Str(pf(j)) List1.AddItem st Next i End Sub

'**********FOUND**********

Private Sub prime_f(n As Integer, a() As Integer) Dim i As Integer, k As Integer i = 2 Do

If n Mod i = 0 Then k = k + 1

ReDim Preserve a(k) a(k) = i n = n \\ i Else

i = i + 1 End If

'**********FOUND********** Loop Until n <= 0 End Sub

答案:

=======(答案1)======= For j = 1 To UBound(pf) - 1 =======(答案2)=======

Private Sub prime_f(ByVal n As Integer, a() As Integer) =======(答案3)======= Loop Until n <= 1

第4题 题号:1

'[题目]本程序的功能是:查找800-1200范围内的所有具有两个相同数字的素数。 '例如811、877等都是符合要求的数据。 Option Explicit

Private Sub Command1_Click() Dim i As Integer For i = 800 To 1200

39

If validate(i) And prime(i) Then List1.AddItem i End If Next i End Sub

'**********FOUND**********

Private Function validate(n As Integer) As Boolean Dim num() As Integer, k As Integer Dim i As Integer, j As Integer Do

k = k + 1

'**********FOUND********** ReDim num(k) num(k) = n Mod 10 n = n \\ 10 Loop Until n <= 0 k = 0

For i = 1 To UBound(num) - 1 For j = i + 1 To UBound(num)

If num(i) = num(j) Then k = k + 1 Next j Next

If k = 1 Then validate = True End Function

Private Function prime(n As Integer) As Boolean Dim i As Integer For i = 2 To Sqr(n) '**********FOUND**********

If n Mod i = 0 Then Exit For Next i prime = True End Function

答案:

=======(答案1)=======

Private Function validate(Byval n As Integer) As Boolean =======(答案2)======= ReDim Preserve num(k) =======(答案3)=======

If n Mod i = 0 Then Exit Function

第5题 题号:4

'题目:本程序功能是查找给定范围内满足以下条件的整数数对。 '条件1是每个整数的各位数字各不相同,且不得为数字0, '条件2是第二个数等于第一个数的两倍。 '例如123和246就是符合条件的数对。 Option Explicit

Private Sub Command1_Click()

40

Dim i As Integer Dim n As Integer For i = 123 To 5678 n = i * 2

If fun(i) And fun(n) Then

List1.AddItem \ End If Next i End Sub

'**********FOUND**********

Private Function fun(n As Integer) As Boolean Dim a() As Integer, i As Integer, j As Integer Do

i = i + 1

ReDim Preserve a(i) a(i) = n Mod 10

If a(i) = 0 Then Exit Function n = n \\ 10 '**********FOUND********** Loop Until n < 0

For i = 1 To UBound(a) - 1 For j = i + 1 To UBound(a) '**********FOUND**********

If a(i) = a(j) Then Exit For Next j Next i fun = True End Function

答案:

=======(答案1)=======

Private Function fun(ByVal n As Integer) As Boolean =======(答案2)======= Loop Until n = 0 =======(答案3)=======

If a(i) = a(j) Then Exit Function

第6题 题号:3

'[题目]本程序的功能是:随机生成一个有n个元素的数组(n由inputBox函数), '找出其中的最大元素并将它删除,再输出删除后的数组。 Option Explicit Option Base 1

Dim a() As Integer, n As Integer Private Sub Command1_Click() Dim i As Integer

n = InputBox(\请输入数组个数\ ReDim a(n) For i = 1 To n

41

a(i) = Int(Rnd * 100) + 1 Text1 = Text1 & Str(a(i)) Next i

Call Lookup(a) '**********FOUND********** For i = 1 To n

Text2 = Text2 & Str(a(i)) Next i End Sub

Private Sub Lookup(a() As Integer)

Dim Maxv As Integer, maxp As Integer, i As Integer Maxv = a(1): maxp = 1 For i = 2 To n

If a(i) > Maxv Then Maxv = a(i): maxp = i End If Next i

Call move_f(a, maxp) End Sub

Private Sub move_f(a() As Integer, k As Integer) Dim i As Integer

For i = k + 1 To UBound(a) '**********FOUND********** a(i) = a(i + 1) Next i

'**********FOUND********** ReDim a(UBound(a) - 1) End Sub

答案:

=======(答案1)======= For i = 1 To n-1 =======(答案2)======= a(i-1) = a(i)

=======(答案3)=======

ReDim Preserve a(UBound(a) - 1)

第7题 题号:10

'【题目】本程序的功能是:找出介于100、999之间的由三个不同数字组成的完全平方数。 '所谓完全平方数是指平方根为整数的数。例如,529的各位数字不同,且平方根是23, '所以529是符合要求的数。 Option Explicit Option Base 1

Private Sub Command1_Click() Dim i As Integer, p As Single For i = 100 To 999

If pf(i) And verify(i) Then p = Sqr(i)

42

List1.AddItem i & \ End If Next i End Sub

Private Function pf(n As Integer) As Boolean If Sqr(n) = Int(Sqr(n)) Then pf = True End Function

'**********FOUND**********

Private Function verify(n As Integer) As Boolean

Dim a() As Integer, k As Integer, i As Integer, j As Integer Do

k = k + 1

ReDim Preserve a(k) a(k) = n Mod 10 n = n \\ 10

'**********FOUND********** Loop Until n < 0

For i = 1 To UBound(a) - 1 For j = i + 1 To UBound(a) '**********FOUND**********

If a(i) = a(j) Then Exit For Next j Next i verify = True End Function

答案:

=======(答案1)=======

Private Function verify(ByVal n As Integer) As Boolean =======(答案2)======= Loop Until n <= 0 =======(答案3)=======

If a(i) = a(j) Then Exit Function

五、程序设计 共12题 第1题 题号:14

'--------------------------------- '【程序设计】

'--------------------------------- '【题目要求】

' 1) 编写程序,生成一个4行5列的二维数组,其每个数组元素是随机产生的两位数, ' 求该数组的最大元素及其所在的行号、列号。

' (若有多个相同的最大元素,则要一一标出其所在行号、列号)

' [算法提示]首先找出最大元素,再将数组中的元素与最大元素一一比较, ' 若有相等元素则输出其所在位置。 ' 窗体设计界面参见已给出的参考界面。 '【编程要求】

43

' 1) 运行程序,按“运行”按钮(Command1),生成一个4行5列的两位随机整数数组, ' 按参考界面格式显示在多行文本框Text1中,再调用求二维数组最大元素的通用过程, ' 最后将结果输出到一个多行文本框Text2中;(注意代码中不得使用randomize语句) ' 按“清除”按钮(Command2),则将文本框与图片框清空;

' 2) 程序中应定义一个名为maxele的通用函数过程,用于求二维数组的最大元素。 '【代码书写要求】

'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Command1等 '2)请在“****Program*****”与“****End*****”之间添加程序代码 '3)请在指定区间

' (1)先写出自定义函数过程maxele的程序代码以及Command2的代码 ' (2)最后完善Command1_Click()事件过程代码。 ' !!!! 注意:

' Command1_Click()过程的结束语句 End Sub及其它已经给出的代码, ' 均不得删除,否则无分。

答案:

Private Function maxele(a() As Integer) As Integer Dim i As Integer, j As Integer Dim max As Integer max = a(1, 1) For i = 1 To 4 For j = 1 To 5

If a(i, j) > max Then max = a(i, j) End If Next j Next i maxele = max End Function

Private Sub Command2_Click() Text1.Text = \Text2.Text = \End Sub

Private Sub Command1_Click() Dim a(4, 5) As Integer

Dim i As Integer, j As Integer Dim max As Integer For i = 1 To 4 For j = 1 To 5

a(i, j) = Int(Rnd * 90 + 10)

Text1.Text = Text1.Text & Str(a(i, j)) Next j

Text1.Text = Text1.Text & vbCrLf Next i

max = maxele(a)

Text2.Text = \最大元素是\ Text2.Text = Text2.Text & \位置是\

44

For i = 1 To 4 For j = 1 To 5

If max = a(i, j) Then

Text2.Text = Text2 & i & \行 \列 \ End If Next j Next i

第2题 题号:9

'--------------------------------- '【程序设计】

'--------------------------------- '【题目要求】

' 编一程序,将一维数组中元素向右循环移位,移位次数键盘输入。 ' 例如,数组各元素的值依次为1,2,3,4,5,6,7,8,9,10; ' 位移3次后,各元素的值依次为8,9,10,1,2,3,4,5,6,7。 ' 窗体设计界面参见已给出的参考界面。 '【编程要求】

' 1) 数组可定义为固定大小的10个元素的数组。

' 按“输入”按钮(Command1),则用inputbox函数逐一输入 ' “1---10”10个数据,并显示在文本框Text1中。 ' 在文本框Text2中输入循环移位位数(请输入3)

' 按“移位”按钮,调用通用Sub过程rmove(),实现移位操作,同时将 ' 移位后10个数据显示在文本框Text3中。

' 按“清除”按钮Command2,则将3个文本框清空,将焦点置于Text2上; ' 按“退出”按钮Command3,结束程序运行

' 2)程序中应定义一个通用Sub过程rmove(),以实现移位操作。 '【代码书写要求】

'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Command1等 '2)请在“****Program*****”与“****End*****”之间添加程序代码 '3)请在指定区间 (1)先写出自定义Sub过程rmove()的程序代码

' (2)然后完成Command1_Click(),Command3_Click(),Command4_Click()过程代码。 ' (3)最后完善Command2_Click()过程代码 ' !!!! 注意:

' Command2_Click()过程的结束语句 End Sub及其它已经给出的代码,均不得删除,否则无分。

答案:

Private Sub rmove(a() As Integer, m As Integer) Dim i As Integer, j As Integer, t As Integer n = UBound(a) For i = 1 To m t = a(n) '循环右移

For j = n To 2 Step -1 a(j) = a(j - 1) Next j a(1) = t Next i

45

End Sub

Private Sub Command1_Click() Dim i As Integer Text1 = \

'输入原始数据并显示在文本框1中 For i = 1 To UBound(a)

a(i) = Val(InputBox(\ Text1 = Text1 & a(i) & \ Next i End Sub

Private Sub Command3_Click() Text1 = \ Text2 = \ Text3 = \ Text2.SetFocus End Sub

Private Sub Command4_Click() End End Sub

Private Sub Command2_Click() Dim i As Integer, m As Integer m = Val(Text2) Call rmove(a, m) '输出右移后的数组值 For i = 1 To n

Text3 = Text3 & a(i) & \ Next i

第3题 题号:11

'--------------------------------- '【程序设计】

'--------------------------------- '【题目要求】

' 编写程序,随机生成一个4行5列由两位整数组成的数组,并找出其中所有的谷点元素。 ' 所谓谷点元素是指在本行内为最小,在本列内也为最小的元素。 ' 窗体设计界面参见已给出的参考界面。 '【编程要求】

' 1)按“生成数组”按钮(Command1),生成随机数组并显示到图片框(Picture1)中, ' 按“查找谷点”按钮(Command2),则找出谷点元素, ' 并按图示的格式显示到多行文本框(Text1)中, ' 按“清除”按钮Command3,清除图片框与文本框。

' 2) 程序中应定义一个名为cp的Sub过程,用于查找数组某行是否有谷点元素。 ' (算法提示:先求出某行最小元素,再判断该元素是否在该列也为最小, 若是,则为谷点数,否则,谷点不存在。) '【代码书写要求】

'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Command1等 '2)请在“****Program*****”与“****End*****”之间添加程序代码

46

'3)请在指定区间

' (1)先写出自定义Sub过程cp的程序代码以及Command1,Command3的代码 ' (2)最后完善Command2_Click()事件过程代码。 ' !!!! 注意:

' Command2_Click()过程的结束语句 End Sub及其它已经给出的代码, ' 均不得删除,否则无分。

答案:

Private Sub cp(a() As Integer, n%, f As Boolean, k%) Dim i%, minv%

minv = a(n, 1): k = 1 For i = 2 To UBound(a, 2) If minv > a(n, i) Then minv = a(n, i): k = i End If Next i

For i = 1 To 4

If minv > a(i, k) Then Exit Sub Next i f = True End Sub

Private Sub Command1_Click() Dim i%, j% For i = 1 To 4 For j = 1 To 5

a(i, j) = Int(Rnd * 90) + 10 Picture1.Print a(i, j); Next j

Picture1.Print Next i End Sub

Private Sub Command3_Click() Picture1.Cls Text1 = \End Sub

Private Sub Command2_Click()

Dim i As Integer '循环变量,控制行的变化

Dim flag As Boolean '过程调用时用于判断一行数据中是否有谷点的逻辑变量 Dim k As Integer '记录每一行的最小值所在列号 For i = 1 To 4

Call cp(a, i, flag, k) If flag Then

Text1 = Text1 & \ End If Next i

第4题 题号:2

'---------------------------------

47

'【程序设计】

'--------------------------------- '【题目要求】

'编写求前n项级数和的程序。求和公式参见已给出的参考图122所示。 ' 1)在文本框Text1中输入x值1,文本框Text2中输入n值5,

' 按“计算”按钮(Command1),则开始计算并在列表框List1中显示S1,S2,?,Sn; ' 按“清除”按钮(Command2),则将两个文本框及列表框清空,焦点置于Text1上; ' 按“退出”按钮(Command3),结束程序运行;

' 2)程序中应定义一个名为fact的函数过程,用于计算阶乘值。 '【代码书写要求】

' 1)列表框、文本框、命令按钮的名称必须使用系统默认的名称, ' 如List1,Text1,Command1等,否则扣分。 ' 2)窗体设计界面参见已给出的参考界面。

' 3)请在“****Program*****”与“****End*****”之间添加程序代码 ' 请在指定区间 1)先写出自定义函数fact及Command2,Command3的程序代码 ' 2)然后完善Command1_Click()过程代码。 ' !!!! 注意:

' Command1_Click()过程的结束语句 End Sub及其它已经给出的代码, ' 均不得删除,否则无分。

答案:

Public Function fact(n As Integer) As Long If n = 1 Then fact = 1 Else

fact = n * fact(n - 1) End If End Function

Private Sub Command2_Click() Text1.Text = \ Text2.Text = \ List1.Clear Text1.SetFocus End Sub

Private Sub Command3_Click() End End Sub

Private Sub Command1_Click() Const pi = 3.14159265

Dim k As Integer, x As Single, n As Integer, s As Single Dim t As Single x = Text1.Text n = Text2.Text For k = 1 To n

t = (-1) ^ k * (pi / 2) ^ (2 * k) * x ^ (4 * k + 1) / (fact(2 * k) * (4 * k + 1)) s = s + t

List1.AddItem \

48

Next k

第5题 题号:4

'--------------------------------- '【程序设计】

'--------------------------------- '【题目要求】

'编写程序,以给定的方式标记出方阵中每一行最小元素的位置。 '如果某一行有多个数值相等的最小元素,也要同时标记出来。 '标记方式为每一行的最小元素为 0,其他元素为 1。 '窗体设计界面参见已给出的参考界面。 ’【编程要求】

'1)在文本框Text1中输入 N 值(要求输入5),

' 按“执行”按钮,则随机生成一个 N 行 N 列的由两位正整数组成的 N 阶方阵, ' 并输出到多行文本框Text2 中,同时求出每一行的最小元素并生成标记矩阵 ' 输出到多行文本框Text3 中;

' 按“清除”按钮,则将3个文本框清空,将焦点置于文本框Text1上; ' 按“退出” 按钮,结束程序运行;

'2)程序中应定义一个求数组某一行的最小元素值的通用Sub过程minx()。 '3)原始方阵数据由随机函数生成(注意:不要使用randomize语句) '【代码书写要求】

'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Text2,Command1等 '2)请在“****Program*****”与“****End*****”之间添加程序代码

'3)请在指定区间 (1)先写出自定义Sub过程minx()的程序代码以及Command2_Click()、 ' Commnad3_Click()的代码

' (2)最后完善Command1_Click()过程代码。 ' !!!! 注意:

' Command1_Click()过程的结束语句 End Sub及其它已经给出的代码,均不得删除, ' 否则无分。

答案:

Private Sub minx(a() As Integer, k As Integer, min_v As Integer) Dim i As Integer min_v = a(k, 1)

For i = 2 To UBound(a, 1)

If a(k, i) < min_v Then min_v = a(k, i) Next i End Sub

Private Sub Command2_Click() Text1.Text = \ Text2.Text = \ Text3.Text = \ Text1.SetFocus End Sub

Private Sub Command3_Click() End End Sub

Private Sub Command1_Click()

49

Dim n As Integer, i As Integer, j As Integer Dim min_v As Integer, s1 As String, s2 As String Dim a() As Integer, m() As Integer 'Randomize n = Text1

ReDim a(n, n), m(n, n) For i = 1 To n For j = 1 To n m(i, j) = 1

a(i, j) = Int(Rnd * 90) + 10 s1 = s1 & Str(a(i, j)) Next j

s1 = s1 & vbCrLf Next i

For i = 1 To n

Call minx(a, i, min_v) For j = 1 To n

If a(i, j) = min_v Then m(i, j) = 0 s2 = s2 & Str(m(i, j)) Next j

第6题 题号:1

'--------------------------------- '【程序设计】

'--------------------------------- '【题目要求】

'从键盘上输入6名同学的成绩,分别为:87,72,56,89,92,66。将这些成绩 '显示在文本框Text1中(由Command1_Click()事件过程完成)。 '然后按降序对这6个成绩进行排序,并将结果显示在文本框Text2中

'(由Command2_Click()事件过程完成)。窗体设计界面参见已给出的参考界面。 '【代码书写要求】

'1)文本框、命令按钮的名称必须使用系统默认的名称,如Text1,Text2,Command1等 '2)用inputbox函数输入成绩。原始成绩必须为上面给出的数据,否则扣分。 '3)请在“****Program*****”与“****End*****”之间添加程序代码

答案:

Private Sub Command1_Click() Dim i As Integer N = 6

Text1.Text = \ ' 输入并显示数据 For i = 1 To N

X(i) = Val(InputBox(\请输入第\个学生的成绩\成绩排序\ Text1.Text = Text1.Text & Str(X(i)) Next i End Sub

Private Sub Command2_Click() ' 用比较交换法进行排序

50

本文来源:https://www.bwwdw.com/article/g2hr.html

Top