试卷方案: 201105 Visual Basic 期末考试方案
一、单项选择 _ 共 50 题 (选: 20 题 *1 ’=20 分) 第 1 题
以下有关对象属性的说法中,错误的是
.
A. 工具箱中的控件并不是 VB 中所有的控件
B.
若将 Frame 的 Enabled 属性设置为 C. 对象的 Name 属性在运行时不能改变
False ,则不能使用放置在 Frame 里面的控件 D. 对象的所有属性都可以在属性窗口中设置 第 2 题
3
x | x e 数学表达式 的 VB 算术表达式为 .
sin 27
y |
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) 第 3 题
下列有关对象的叙述中 , 正确的是
A. 对象由属性,事件和方法构成
B. 对象的所有属性既可以在属性窗口设置,又可以在程序运行时用赋值语句设置
C. 对象的事件一定就是由 VB 预先设置好的人工干预的动
作
D. 对象的方法是对象响应某个事件后执行的一段程序代码 第 4 题
表达式 A. 1 第 5 题
的运算结果是 CInt(4.5)+Cint(-4.51)+Int(4.9)+Int(-4.1)+Fix(-1.9)+0 Mod 2
.
C. – 2
D. – 3
B. -1
下列关于菜单的说法中 , 错误的是 .
A. 每一个菜单项就是一个对象,并且可设置自己的属性和事件
B. 菜单项不可以响应 DblClick
事件
C. VB6.0 允许创建超过四级的子菜单
D. 程序执行时,如果要求菜单项是灰色,不能被用户选择,则应设置菜单项的 第 6 题
属性为 Enabled False
以下关于数组的说法中 A. 使用了 Preserve , 错误的是 .
子句的 Redim 语句,只允许改变数组最后一维的上界 B. 对于动态数组 , Redim 语句可以改变其维界但不可以改变其数据类型 C. Erase 语句的功能只是对固定大小的数组进行初始化 D. Lbound 函数返回值是指定数组某一维的下界 第 7 题
设 运行 print a>b>c 的结果是 .
a=3,b=2,c=1, D. 出错
A. True
B. False
C. 1
第 8 题
A. 使用不带关键字
B. 使用不带关键字
C. 使用不带关键字
D. 使用不带关键字第9 题
的
的
的
的
ReDim语句可以重新定义数组的维数
ReDim语句可以改变数组各维的上、下界
ReDim语句可以改变数组的数据类型
ReDim语句可以对数组中的所有元素进行初始
化
Preserve
Preserve
Preserve
Preserve
在列表框List1 中有若干列表项
A. List1.text=""
B. List1.List(List1.ListIndex)=""
C. List1.Clear
, 可以删除选定列表项的语句是.
D. List1.RemoveItem List1.ListIndex
第10 题
2 x 5 3
e ln x sin ( 2 x )
数学表达式对应的VB表达式是.
x 2
| sin x cos |
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(Sin(x)-Cos(x^2))
第11 题
以下有关数组参数的说明中,正确的是
A. 在过程中也可用Dim 语句对形参数组进行说明
B. 动态数组作为实参时,可用ReDim语句在过程中改变对应形参数组的维
界
C. 调用过程时,数组名不能作为实参
D. 数组可以按地址传递也可以按植传递
第12 题
下列有关过程的说法中, 错误的是.
A. 在Sub 或
B. 对于使用
过程内部不能再定义其它Sub 或Function 过程Function
ByRef 说明的形参, 在过程调用时形参和实参只能按传址方式结合
C. 递归过程既可以是递归过程, 也可以是递归Sub 过程
Function
D. 可以像调用
第13 题
Sub 过程一样使用Call 语句调用Function 过程
要将焦点设置在某个控件上, 以下四个选项中正确的是.
A. 只能使用鼠标直接点击控件
B. 只能使用Tab 键将焦点移到该控件
C. 只能在程序中调用该控件的SetFocus 方法
D. A 、B、C 三选项中涉及的方法均可使用
第14 题
以下Case 语句中, 能正确描述A. Case Abs(Y)>6
C. Case Not(-6 To 6)
第15 题以下关于变量作用
域的叙述中Y 的绝对值大于 6 的是.
B. Case -6 To 6
D. Case Is<-6,Is>6 , 正确的是.
B. 模块级变量只能用Dim 语句声明
C. 凡是在窗体模块或标准模块的通用声明段用Public 语句声明的变量都是全局变量
D. 当不同作用域的同名变量发生冲突时,优先访问局限性小的变量
第16 题
以下关于数值常量的说法中, 错误的是
A. 八进制数的表示方法是在数字前面加
B. 十六进制数的表示方法是在数字前面加&O
&H
C. 在浮点运算中使用D来分隔尾数和指数时,系统将把该数值作为单精度型数处
理
D. 32768 是合法的数值常量
第17 题
x 3
e sin 30
数学表达式对应的VB表达式是.
x A. Abs(e^x+Sin(30)^3) y
∕Sqr(x+y))
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))
第18 题
下面的 4 个表达式中, 有关个能够对类型变量x( 正数) 的第3 位小数正确地进行四舍五入计
Single
算.
Format(x, ″#.00 ″)
Fix(100*(x+0.005))/100
Int(100*(x+0.005))/100 CInt(100*(x+0.005)/100
A. 1 个第19 题
B. 2 个
C. 3 个个
D. 4
执行以下语句时, 会出现错误提示的是.
A. Print"2b3 " +12.5
D.Print"2e3"+12
第20 题
以下Case 语句含有错误的是A. Case 0 To 10
第21 题
B. Print"12.5"+ 12
C.Print"12.5" & 12.5
.
B. Case Is>10
C. Case Is>10 And Is<50
D. Case 3,5,Is>10
下列语句中, 正确的是
A. Textl.SetFocus
第22 题
B. Forml.Clear
C. Labell.SetFocus
D. Listl.Cls
下列选项中, 所包含的所有表达式能够将两位整数
.
x 的个位数与十位数对调( 如将78 转换为87) 的是
①Val(Right(X,1)&Left(X,1))
③Val(Right(CStr(X),1)&Left(CStr(X),1))
②Val(Right(Str(X),1)&Left(Str(X),1))
④Val(Mid(X,2,1)+Mid(X,1,1))
D. ①③④
A. ①②第23 题
B. ②③②④
C.
以下关于子过程或函数的定义中, 正确的是
第24 题
下列有关控件数组的说法中, 错误的是.
A. 控件数组由一组具有相同名称和相同类型的控件组成,不同类型的控件无法组成控件数组
B. 控件数组中的所有控件不得具有各自不同的属性设置值
C. 控件数组中的所有控件共享同一个事件过程
D. 控件数组中每个元素的下标由控件的
第25 题
Index 属性指定
以下对数组参数的说明中, 错误的是.
A. 在过程中可以用Dim 语句对形参数组进行声明
B. 形参数组只能按地址传递
C. 实参为动态数组时,可用ReDim语句改变对应形参数组的维
界
D. 只需把要传递的数组名作为实参,即可调用过程
第26 题
要向文件datal.txt 添加数据, 正确的文件打开命令是.
A. Open"datal.txt"For Output As #1
B. Open"datal.txt"For Input As #1
C. Open"datal.txt"For Append As #5
D. Open"datal.txt" For Write As #5
第27 题下面有关数组处理的叙述
中,正确的是.
A. 在过程中使用ReDim语句可以改变动态数组数据的类
型
B. 在过程中,可以使用Dim 、Private 和Static 语句来定义数组
C. 用ReDim语句重新定义动态数组时,可以改变数组的大小,但不能改变数组的维
数
D. 不可以用Public 语句在窗体模块的通用处说明一个全局数组
第28 题
下面的表达式中, 运算结果为True 的是.
A. "abcrd" <="ABCRD"
C. 3>2>1
第29 题B. Int(134.69) <=CInt(134.69)
D. Mid("Visual",1,4)=Right("lausiV",4)
设计界面时设置为 3.
A. MultiLine 第30 题, 要使一个文本框具有水平和垂直滚动条, 应先将其属性置为再将ScrollBar 属性
True,
B. AutoSize
C. Alignment
D. RightToLeft
下面有关数组的说法中, 正确的是A. 数组的维下界不可以是负数
B. 模块通用声明处有
C. 模块通用声明处有
D. 模块通用声明处有第31 题
下面有关数组的叙述中
,则模块中数组定义语句Dim A(0 To 5) 会与之冲突Option Base 1
Option Base 1
Option Base 1
,模块中有
,模块中有
Dim A(0 To 5), 则A 数组第一维维下界为
DimA(0 To 5), 则A 数组第一维维下界为
1 , 不正确的是.
①②在过程中用ReDim语句定义的动态数
组
, 其下标的上下界可以是变量数组作为形式参数时
④数组定义语句中可以用负数或小数来指定某一维的维下界或维上界的值
A. ②③
第32 题下列关于对象A. SetFocus C. Setfocus 第33 题创建一个名为
.
B. ①③④
C. ①②③④
D. ③④
与GotFocus 的描述中, 正确的是
SetFocus
是事件,GotFocus 是方法 B. Setfocus 和Gotfocus 都是事件
和GotFocus 都是方法 D. SetFocus 是方法,GotFocus 是事件
" 文件" 的菜单项, 欲使其可用方式访问, 则在菜单编辑器的标题文本框中应输入
Alt+F
A. 文件($F) 第34 题在下列属性中
B. 文件(&F)
C. 文件(#F)
D. 文件(%F)
, 属于CommandButton控件、
ListBox
B. Visible 、Font
控件共有的是.
A. Caption 、Text 第35 题
、Visible 、Visible C. Caption D. List
下列能够正确表示条件"X≤Y 是A. X ≤Y 第36 题以下关于C. X ≤Y OR Y B. X<=Y And Y 过程的说法中, 错误的是. 过程名可以有一个或多个返回值 A. Function B. 在Function 过程内部不得再定义 C. Function 过程中可以包含多个 Function 过程 语句Exit Function D. 可以像调用 第37 题 Sub 过程一样调用Function 过程 下面的关系表达式中A. CInt(1.5)=Int(1.5) C. Fix(-1.5)=CInt(-1.5) 第38 题, 运算结果为True 的是. B. Fix(1.5)=Int(1.5) D. Fix(-1.5)=Int(-1.5) 已知X C. Sgn(Y-X)+Sgn(A-B)=2 , 结果为True 的是 B. Sgn(X-Y)+Sgn(A-B)=-2 D. Sgn(Y-X)+Sgn(A-B)=0 第39 题 执行语句时, 会出现出错提示信息. A. Print 5+7=14 C. Print 32768*2 第40 题 B. Print 16384*2 D. Print "14"+32 sin 30 2log x y 数学表达式对应的Visual Basic 表达式是. x y e 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)) 第 41 题 在一个多窗体程序中 A. Form2.Unload C. Form2.End 第 42 题 , 可以仅将窗体 Form2 从内存中卸载的语句是 B. Unload Form2 D. Form2.Hide . Print 方法可在 上输出数据 . ①窗体 A. ①③⑥ 第 43 题 ②文本框 B. ③图片框 ②③⑤ ④标签 ⑤列表框 ⑥立即窗口 ①②⑤ D. ③④⑥ C. 若要使逻辑表达式 结果为 True, 则 x 、y 、 z 的取值应为下列选项中的 x>y Xor y x=3 、 y=3 、z=4 x=1 、 y=3 、z=2 44 题 、 y=1 、 z=2 、 y=2 、 z=2 A. C. B. x=2 D. x=2 第 下列 是合法的变量名 . B. – al A. abs 第 45 题 C. cdc d D. Abe_10 下列 是正确的 VB 常 量 . A. D-6 第 46 题 若在模块中用 B. E-6 C. 5D D. 5E-6 定义了函数 Fun. 调用函数 Private Function Fun(A as Single,B as Integer) As Integer Fun 的过程中定义了 . I 、J 和 K 三个 Integer 型变量 , 则下列语句中不能正确调用函数 Fun 的语句是 A. Fun 3.14,J 第 47 题 B. Call Fun(I,365) C. Fun(I),(J) D. K=Fun("24","35") 若需要在同一窗体内安排两组相互独立的单选按钮 可使用 控件做容器将它们分开 (OptionButton), ④ Frame D. ③或④ . ①TextBox A. ①或② 第 48 题 ②PictureBox B. ②或③ ③ C. Image ②或④ 以下关于文件的叙述中,错误的是 。 A. 用 Output 模式打开一个顺序文件,即使不对它进行写操作,原来的内容也被清除 B. 可以用 Print # 语句或 Write# 语句将数据写到顺序文件中 C. 若以 Output 、 Append 、 Random 、Binary 方式打开一个不存在的文件,系统会出错 D. 顺序文件或随机文件都可以用二进制访问模式打开 第 49 题 窗体上有若干命令按钮和一个文本框 钮的 Click 事件过程 , 需要将该按钮的 , 程序运行时焦点置于文本框中 , 为了在按下回车键时执行某个命令按 属性设置为 True. A. Enabled 第 50 题 B. Default C. Cancel D. Visible 5 x cos 29 ln y) 数学表达式 对应的 VB 表达式是 x (e 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 二、填空_共20题(选:15空*2’=30分)——阅读理解:填写程序的输出结果第 1 题 运行下列程序,单击 , 第三行的内容是Command1, 在窗体上显示的第一行内容是 【3】。 【1】, 第二行的内容是【2】 Option Explicit Private Sub Command1_Click() Dim s As String s="Basic" 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,"a") 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 第 2 题 执行下面程序,单击 行是__【3】__。 Option Explicit Command,1则窗体上显示的第一行是_【1】___,第三行是__【2】__,最后一 Private Sub Command1 _Click() Dim x As Integer,y As Integer x=12:y=0 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 第 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 第 4 题 运行下面的程序,单击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 第 5 题 执行下面的程序,连续三次单击命令按钮Command1之后,A 数组共有 。【1】个元素;数组元素A(2) 的 值【2】 Option Explicit Option Base 1 ,A(4) 的值是【3】 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) Next i For i=1 To n Print A(i); Next i Print End Sub 第 6 题 运行下面程序,单击Command,1在窗体上显示的变量 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 第7 题 执行下面的程序,单击 Command,l则窗体上第一行显示的是【1】,第二行显示的是【2】。 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 End If n=-n 执行下面程序,单击Command,1窗体上显示的第一行是【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 "OVER" End If End Sub 第9 题 运行下列程序,单击Command,1在窗体上显示的第一行内容是【1】第二行的内容是【2】, 第三行 , 的内容是【3】。("A" 的ASCII 码是65,"Z" 是90) Option Explicit Private Sub Command1_Click() Dim i As Integer, st As String, n As Integer, p As String * 1 p = "B" 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 执行下面的程序,单击Command,1输出的变量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 第11 题运行下面程序,如果连续三次单击命令按钮之后, A数组共有 【2】,A(5) 的值是【3】. 【1】个元素;数组元素A(2) 的值是 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 第12 题 执行下面的程序,单击Command1 在, 窗体界面上显示的第一行是【1】,第二行是【2】,第三行是 【3】,第四行是【4】。 Option Explicit 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 End If End Sub Private Function Lcd(x As Integer,Y As Integer) As Integer Dim d As Integer If x d=x:x=y:y=d End If d=x Do If x Mod y=0 Then Lcd=x Exit Do Else x=x+d End If Loop End Function 第13 题执行以下 程序,单击Command,1则在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 End If 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 第14 题 执行下列程序,单击Command,1在窗体上显示的第一行内容是__【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 第15 题 执行下列的程序,单击Command,1在窗体上显示的变量 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 第16 题 执行下面程序,单击【3】. Command1窗,体上显示的第一行 是 【1】, 第二行是【2】, 第四行是 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 第17 题 执行下面程序,单击 _【3】___。 Option Explicit Option Base 1 Command,1窗体上显示的第一行是__【1】__,第二行是__【2】__,第三行是 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("A")+(k+i+j) Mod 26) Print sa(i,j);" "; k=k+3 Next j Print Next i End Sub 第18 题 执行下面程序,单击Command1则,数组元素a(1,2) 的数值是【1】,a(3,3) 的数值是【2】, 图片框中最后一行显示的是 Option Explicit 【3】. 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 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 For j=1 To 4 " & a(i,j),3); Picture1.Print Right(" Next j Picture1.Print Next i End Sub 第19 题 执行下面程序,单击Command,1则图片框中显示的第一行是【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 第20 题 执行下面程序,单击Command,1则窗体上显示的第一行是 【1】,第二行是【2】,第三行是【3】。 Option Explicit Private Sub Command1_Click() Dim a As String,i As Integer Dim x As String,z As String a="iamstudent" i=InStr(5,a,"d") x=Mid(a,i,3) z=Right(x,1) z=UCase(x & Z) i=i-2 Print z Loop Until i=1 End Sub 三、程序填空_共16题(选:10空*2’=20分)——完形填空:把题目中空的程序代码行补齐 第 1 题 ' 本程序的功能是把由4个"." 分隔的十进制数表示的IP 地址转换为由32 位二进制数组成 ' 的IP 地址。例如十进制表示的IP 地址为202.119.191.1, 其中每个十进制数对应一个8 位 ' 的二进制数,合起来构成一个32 位二进制的 IP 地址中每个用 IP 地址11001010011101111011111100000001 。"." 分隔的十进制数; 8 位二进制数。程序界面参见下图。 ' 过程' 过程Tiqu 用于提取十进制 Convert 用于将十进制数转换为相应的 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("IP 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 = "." Then k = k + 1 a(k) = Val(s) '**********SPACE********** 【?】 Else s = s & d End If 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 = "0" & s Next i '**********SPACE********** 【 ?】 End Function 第 2 题 ' 下面程序的功能是:统计存放在数组 A 中的 N 个数有多少个是不同的。 ' 具体做法是:变量 Left 指向要被处理的数(从第 2 个元素开始) , 'Right 指向数组最后一个元素。若 A(Left) 与排在它前面的某个数组元素值相同, ' 就用数组元素 A(Right) 的值来替换 A(Left) 的值,同时将变量 的值减 1; Left>Right Right ' 否则将变量 Left 的值加 1,处理数组下一个元素,重复以上过程,直到 为止。 '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 ", , 10) A(I) = Int(Rnd * 10) + 1 Text1 = Text1 & A(I) & " " Next I Call statistic(A, OP) 有 " & 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= 【 ?】 Do While Left <= Right '**********SPACE********** 【 ?】 K= For I = K To 1 Step -1 If A(Left) = A(I) Then Exit For Next I '**********SPACE********** 【 ?】 Then Left = Left + 1 Else A(Left) = A(Right) '**********SPACE********** 【 ?】 End If Loop End Sub 第 3 题 ' 下面程序的功能是随机生成小于 Option Explicit Private Sub Command1_Click() If 100 的诸素数组成的数据。程序界面如下图所示。 Dim p() As Integer,i As Integer,n As Integer Dim st As String,k As Integer Randomize 元素个数; ",,20) k =InputBox(" ReDim p(k) Do n =Int(Rnd*90)+10 '**********SPACE********** 【 ?】 Then If 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 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 【 ?】 Exit For End If Next i End Function 第 4 题 ' 用以下 公式 求 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********** 【 ?】 Then MsgBox ("x Exit Sub End If If 必须在 -1 ~ 1 之间 ") fx = a1 * x - a2 * x * x t = (-1) * x * x Do a = 1 / (a1 + a2) t = (-1) * t * x '**********SPACE********** 【 ?】 fx = a1 = a2 '**********SPACE********** 【?】 Loop Until Abs(a * t) < 0.0000001 Text2 = fx End Sub 第 5 题 ' 下面程序的功能是: 首先生成一个由小到大已排好 序的整数数组,再输入一个数据, ' 单击 " 插入 " 按钮会自动把这个数据插人到原数组 适当的位置,并保持数组的有序性。 ' 程序界面参见下图。 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********** 【?】Then Exit For 确定插入的位置 If 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********** 【?】 Next i P(k)=n End Sub 第 6 题 数组元素移位并实现插入 ' 下面程序的功能是:将输入的 2 位16 进制数的每一位转换为一个 4 位的二进制数, ' 再组合成为一个 Option Explicit 8 位的二进制数。程序界面参见下图。 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