新编Visual Basic程序设计教程习题解答
蔡树元著
目录
第一章Visual Basic概述 (1)
第二章创建用户界面 (2)
第三章VB语言基础 (4)
第四章算法基础Visual Basic的基本语句 (6)
第五章数组 (14)
第六章程序调试 (26)
第八章过程 (27)
第一章Visual Basic概述
1.VB是用于开发________环境下应用程序的工具。(B)
A. DOS
B. Windows
C. DOS和Windows
D. UNIX
2.VB6.0是________位操作系统下的应用程序开发工具。(A)
A. 32
B. 16
C. 32或16
D. 64
3.一个对象可执行的动作与可被一个对象所识别的动作分别称为________(B)
A.事件、方法
B.方法、事件
C.属性、方法
D.过程、事件
4.有一个红色、充满氢气的气球,如果人不小心松开手抓的引线,就会飞走;如果用针刺它,则会爆破。
请问,对于气球对象,哪些是属性、哪些是事件、哪些是方法?
答:属性是红色、氢气;事件是松开、针刺;方法是飞走、爆破。
5.简述事件驱动过程程序的设计原理?
答:使用VB不仅可以非常便捷地设计出Windows应用程序的窗口界面,设置界面中各种对象的属性,而且可以通过编写程序代码段,为对象规定在被某个―事件‖激活时应发生的各种动作以及所要进行的信息处理的具体内容,这样的代码段称为―过程‖。为各个对象编写的过程集合在一起,就构成一个完整的应用程序。
6.VB的集成开发环境都有哪些元素些组成?
答:VB的集成开发环境由标题条、菜单条、弹出式菜单(上下文菜单)、工具栏、控件工具箱、初始窗体、工程资源管理器子窗口、属性子窗口、窗体布局子窗口、代码编辑器窗口、立即、本地和监视窗口等。
7.简述用VB开发应用程序的一般步骤?
答:VB开发应用程序的一般步骤是:①创建程序的用户界面;②设置界面上各个对象的属性;③编写对象响应事件的程序代码;④保存工程;⑤测试和调试应用程序,检查并排除程序中的错误;
⑥创建可执行程序。
第二章创建用户界面
1.窗体的属性主要可分为几类?Caption属性和Name属性有何不同?
答:窗体的属性主要可分为:杂项、外观、行为、字体、位置等五类。Caption:窗体标题,是出现在窗体标题栏上的文本内容;Name:窗体名称,在程序代码中被作为对象的标识名。
2.以下窗体名中哪些是非法的窗体名?(A B E)
A. aform
B. 3frm
C. f_1
D. frm5
E. f_1*
3.VB为什么要提供多种窗体边框风格?试从已学习过的各种Windows应用程序的窗口中举例说明?
答:VB中提供了六种窗体的边框风格,如设定值为1和3,它表示Windows应用程序中的对话框,其大小不可改变;设定值为2表示Windows应用程序中的窗口,其大小可以改变。
4.在桌面上存在多个窗口时,改变窗口的工作状态会引发何种事件?改变窗口大小呢?
答:改变窗口的工作状态会引发激活事件和失去激活事件;改变窗口大小会引发Resize事件。5.(略)
6.有程序代码如下:Form2.Caption=‖Help‖,试问:Form2、Caption和Help分别代表_ __ (C)
A.对象、值、属性
B.值、属性、对象
C.对象、属性、值
D.属性、对象、值
7.VB的常用控件中,哪些控件具有Caption属性,而没有Text属性?哪些控件具有Text属性,却没有Caption属性?
答:具有Caption属性而没有Text属性的控件有:标签、命令按钮、复选框、选项按钮、框架;具有Text属性而没有Caption属性的控件有:文本框、组合框、列表框。
8.对象的属性是否只能在设计界面时在属性窗口中进行设置?属性窗口中的属性列表是否包括了一个对象的所有属性?
答:属性的设置既可以在属性窗口中进行设置,也可以在程序代码中进行设置,但有些对象的有些属性只能在属性窗口中进行设置,如文本框的多行属性,有些对象的有些属性只能在程序代码中进行设置,如列表框的列表项数目属性;属性窗口中的属性列表中不包括一个对象的所有属性,如列表框的ListIndex属性、ListCount属性就不在属性列表中。
9.除窗体之外,还有哪些控件可作为其他控件的容器使用?
答:还有:框架、图片框
10.常用控件中具有Value属性的控件有哪些?它们的取值及类型有何异同?
答:常用控件中具有V alue属性的控件有:选项按钮、复选框、滚动条:
(1)选项按钮的取值为逻辑型,选中该选项按钮时,其值为True,未选中该选项按钮时,其值为False;
(2)复选框的取值为数值型,选中该复选框时,其值为1,未选中该复选框是,其值为0,复选框变灰
时,其值为2;
(3)滚动条的取值为数值型,其值为滚动块在滚条中的位置。
11.哪些控件对象可以获得焦点?某程序的界面上有多个文本框,还有命令按钮,如果没有特别设置,在程序启动时,哪个控件将具有焦点?
答:可以获得焦点的控件对象:文本框、命令按钮、选项按钮、复选框、列表框、组合框、滚动条(水平滚动条、垂直滚动条)
如果没有特别设置,在程序启动时,首先设置具有焦点的控件将具有焦点。
12.以下使用方法的代码中,正确的是________ (C)
A. Label1.SetFocus
B. Form1.Clear
C. Text1.SetFocus
D. Combo1.Cls
将复选框的Value属性设为"2",其效果与把它的Enabled属性设置为"False"有何异同?若把一个控件的Visible属性设为"False",意味着什么?
答:将复选框的Value属性设为2,表示该复选框暂时变灰,启动后仍然可以对其操作,而将复选框的Enabled属性设置为False,表示该复选框灰化,启动后不可以对其操作,直到将Enabled属性设置为True,才能对其操作。若把一个控件的Visible属性设为False,表示该控件不可见。
14.如何给一个列表框或组合框控件增添列表项?已有的列表项如何删除?
答:给列表框或组合框控件增添列表项,可用属性窗口中的List属性,或在程序代码中使用AddItem 方法。如果删除所有的列表项可用Clear方法,如果删除某一列表项可用RemoveItem方法。
附:显示、清除、删除方法
1.显示方法:
(1)窗体[窗体名.]Print 内容
例:[Form1.]Print "学习Visual Basic"
(2)文本框文本框名.Text=内容
例:Text1.Text="学习Visual Basic"
(3)标签标签名.Caption=内容
例:Label1.Caption= "学习Visual Basic"
(4)图片框图片框名.Print 内容
例:Picture1.Print "学习Visual Basic"
(5)列表框列表框名.AddItem 内容[,位置号]
例:List1. AddItem "学习Visual Basic"
List1. AddItem "学习Visual Basic",6
(6)组合框组合框名.AddItem 内容[,位置号]
例:Combo1. AddItem "学习Visual Basic"
Combo1. AddItem "学习Visual Basic",6
2.清除方法
(1)窗体[窗体名.]Cls
例:[Form1.]Cls
(2)文本框文本框名.Text=""
例:Text1.Text= ""
(3)标签标签名.Caption=""
例:Label1.Caption= ""
(4)图片框图片框名.Print 内容
例:Picture1.Cls
(5)列表框列表框名. Clear
例:List1. Clear
(6)组合框组合框名. Clear
例:Combo1. Clear
3.删除方法
(1)列表框列表框名.RemoveItem 位置号
例:List1. RemoveItem List1.ListIndex
(2)组合框组合框名.AddItem 内容[,位置号]
例:Combo1. RemoveItem Combo1.ListIndex
第三章 VB 语言基础
1. 如果编写的过程要被多个窗体及其对象调用,应将这些过程放在哪一类模块中?(B )
A.窗体模块
B.标准模块
C.工程
D.类模块 2. 事件过程与通用过程的主要区别是什么?
答:事件过程是指为窗体以及窗体上的各种对象编写的用来响应由用户或系统引发的各种事件的代码行;通用过程是指一个应用程序中的多个窗体可以共享一些代码,或者一个窗体内不同的事件过程可以共享的一些代码;事件过程是由用户或系统响应某个事件而执行的,通用过程是由事件过程或其他通用过程调用而执行的。
3. 通用过程只能存在于标准模块中,这种说法对吗?
答:不对,通用过程既可存在于标准模块中,也可存在于窗体模块中。 4. VB 有哪些数据类型?
答:VB 中的数据类型有:整型、长整型、单精度、双精度、定长字符型、变长字符型、逻辑型、字节型、日期型、货币型、对象型、变体型。
5. 字符型常量与日期型常量在使用时有何区别?下列常量中哪些是字符串型常量,哪些是日期型常量?
哪些什么也不是?
A. ―I am a student.‖
B. ―江苏南京‖
C. #02/25/1999#
D. #January 1,1993#
E. ―02/25/1999#
F. #January 1,1993‖
答:字符型常量在使用时要加西文的双引号,日期型常量再使用时要加#号;字符型常量有:A 、B ;日期型常量有:C 、D ;什么也不是:E 、F 。 6. 下列符号中哪些是VB 合法的变量名?
A. blnFrag
B. _a5b
C. lngNum
D. Area_Triangle
E. User&Input
F. 5Name
答:合法的变量名有:A 、C 、D
7. 变量作用域包括几个等级?说明的方式有何区别?
答:变量作用域包括三个等级:过程级、窗体级、全局级。局部(过程级):用Dim 、Static 在过程中定义,作用范围:该过程,脱离该过程后无效,也就是在其它过程中无效;Static :静态变量,脱离该过程后,变量的值不消失,用于子过程或函数过程中;窗体(模块)级:用Private 、Dim 在通用/声明部分定义,作用范围:该窗体中所有过程,脱离该窗体后无效,也就是在其它窗体的过程中无效;全局(公有的):用Public 在通用/声明部分定义;如果在标准模块中定义,则作用范围为该工程的所有窗体,调用时直接使用变量名;如果在窗体模块中定义,则作用范围为该工程的所有窗体,但本窗体调用时直接使用变量名,该工程中其它窗体调用时,须加定义时的窗体名作为前缀。 8. 写出下面数学式对应的算术表达式。
(1) d
c b a
+ a/(b+c/d)
(2)
3
21++x x (x+Sqr(x*x+1))^(1/3)
(3) ))((2by ax by ax y
-+ 2*y/((a*x+b*y)*(a*x-b*y))
(4) m
1
111++ 1+1/(1+1/m)
(5) x
d 23
2
1)
( (d/3)^(2*x)/2 (6)
)cos ln(2x y + Log(y+cos(x)^2)
(7)
||
3sin y
x x e x ++ Abs((Exp(x)+Sin(x)^3)/(x+y))
(8)
z
y x x z e xy -+++-|
cos tan |31ln
Log((Exp(x*y)+Abs(Tan(z)^(-1)+Cos(x)^3))/(x+y-z))
9. 指出并改正下面数学式对应的VB 算术表达式中的错语。
(1) b a b
a -+ A+B/A-B (A+B)/(A-B)
(2) y d abc
)1(+ ABC/(D+1)*Y A*B*C/((D+1)*Y)
(3) 5)(xy XY^5 (X*Y)^5
10.将下面的条件用VB 的逻辑表达式表示。 (1) X+Y 小于10且X-Y 要大于0 (2) X 、Y 都是正整数或都是负整数 (3) A 、B 之一为零但不得同时为零
(4) C1+C2+C3大于等于255或C1与C2分别大于90且C3大于80 答:(1)X+Y<10 And X-Y>0
(2)X*Y>0 And X=Int(X) And Y=Int(Y) (3)A*B=0 And A<>B 或A=0 Xor B=0
(4)C1+C2+C3>=255 Or C1>90 And C2>90 And C3>80
11.求下列表达式的运算结果:
Mid(―Visual Basic‖,1,12)=Right(―Programming Language Visual Basic‖,12) True ―ABCRG‖>=―abcde‖ False Int(134.69)>=Cint(134.69) False 78.9/32.77<=97.5/43.87 And –45.4>-4.98 False Str(32.345)=Cstr(32.345) False
12.下列语句代码哪些可正常执行(正常执行是指系统不给出出错提示)?
A. Print 32765+3 溢出
B. Print 5+7=14 False
C. Print 256/128 2
D. Print ―14‖+ 32 46
E. Print ―14‖& 32 “1432”
答:能正常执行的语句有:B 、C 、D 、E ,具体执行结果见上。 13.VB 只有求自然对象的函数Log(X),如果计算式中需要使用常用对数或以2为底的对数,应如何处理?
答:使用换底公式。常用对数:Ln(x)应用Log(x)/Log(10)表示;Log 2(x)应用Log(x)/Log(2)表示。
14.执行语句代码P rint Format(7543.568, ―##,##0.00‖),以下答案中那一个是正确的结果。
(C )
第四章算法基础Visual Basic的基本语句
1.设X与Y是同一类型的变量,试设计一个算法,把X与Y中的数据相互交换。
答:S1:输入X与Y
S2:X => A
S3:Y => X
S4:A => Y
S5:输出X与Y
程序代码如下:
Option Explicit
Dim A As String, B As String, temp As String
Private Sub Command1_Click()
A = Text1.Text
B = Text2.Text
temp =A
A =B
B = temp
Text1.Text = A
Text2.Text = B
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
2. 设A、B、C是同一类型的变量,并分别被赋予不同大小的数据,设计一个算法,使得执行的结果为
A>B>C
答:S1:输入A、B、C
S2:如果A
S3:如果A S4:如果B S5:输出A、B、C 程序代码如下: Option Explicit Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer Dim t As Integer a = Text1.Text: b = Text2.Text: c = Text3.Text If a < b Then: t = a: a = b: b = t: End If a < c Then: t = a: a = c: c = t: End If b < c Then: t = b: b = c: c = t: End Text4.Text = a Text5.Text = b Text6.Text = c End Sub Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text1.SetFocus End Sub Private Sub Command3_Click() Unload Me End Sub 3. 设计一个可以判断某数是否是素数的算法。答:S1:输入一个正整数N S2:I=2 S3:如果N能被I整数,则转S7 S4:I=I+1 S5:如果I小于等于N-1则转S3 S6:输出N是素数,程序结束 S7:输出N不是素数,程序结束 程序代码如下: Option Explicit Dim x As Long Private Sub Command1_Click() Dim i As Integer For i = 2 To x - 1 If x Mod i = 0 Then Exit For Next i If i = x Then Text2.Text = "是素数" Else Text2.Text = "不是素数" End If End Sub Private Sub Command2_Click() Unload Me Private Sub Text1_Change() x = Val(Text1.Text) End Sub 4. 设计一个判断某正整数是一个回文数的算法。所谓回文数是指左右数字完全对称的自然数。答:S1:输入一个数字字符串S S2:I=1 S3:如果第I个数字与倒数第I个数字不同,则转S7 S4:I=I+1 S5:如果I小于等于字符串长度的一半,则返回S3 S6:输出S是回文数,程序结束 S7:输出S不是回文数,程序结束。 程序代码如下: Option Explicit Private Sub Command1_Click() Dim x As String, i As Integer x = Text1.Text For i = 1 To Len(x) / 2 If Mid(x, i, 1) <> Mid(x, Len(x) - i + 1, 1) Then Exit For Next i If i > Len(x) / 2 Then Label1.Caption = "是回文数" Else Label1.Caption = "不是回文数" End If End Sub Private Sub Command2_Click() Label1.Caption = "" Text1.Text = "" End Sub Private Sub Command3_Click() Unload Me End Sub 5. 设计一个算法,求出给定的自然数的所有因子。 答:S1:输入一个正整数N S2:I=1 S3:如果N能被I整数,则输出I S4:I=I+1 S5:如果I小于等于N则转S3 S6:程序结束 程序代码如下: Option Explicit Dim x As Long, i As Long, j As Long x = InputBox("请输入一个自然数:") Print x & "的所有因子如下:" For i = 1 To x If x Mod i = 0 Then Print i; j = j + 1 If j Mod 10 = 0 Then Print End If Next i Print Print "共有"; j; "个。" End Sub 6.在文本框Text1与Text2中分别输入35与48,变量S与X分别为字符型与整型,试问以下赋值语句的执行结果是什么? (1)S=T ext1.Text + Text2.Text ―3548‖ (2)X=Text1.Text + Text2.Text 3548 (3)S=T ext1.Text & Text2.Text ―3548‖ (4)X=Text1.Text & Text2.Text 3548 (5)S=Val(Text1.Text) + Text2.Text ―83‖ (6)X=Val(Text1.Text) + Text2.Text 83 (7)S=Val(Text1.Text) & Text2.Text ―3548‖ (8)X=Val(Text1.Text) & Text2.Text 3548 7.根据下图填空: z = InputBox("输入一个数:" , "程序示例" , 1.5 ) 1.写出显示如下图所示信息框的MsgBox函数。 MsgBox("Z的值" & Str(z) & "大于0" , 48 , "程序示例" ) 2.阅读程序,写出执行结果。 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 运行结果为: 6 55 (2)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 运行结果为:DDEF EDDEF FEDDEF (3)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 Next i Print i, p End Sub 运行结果为: 6 5 (4)Private Sub Form_Click() Dim p As Integer, i As Integer, n As Integer p = 2: 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 运行结果为:11 10 8 10.编写程序,随机生成100个两位整数,并统计出其中小于等于40、大于40且小于等于70及大于70的 Option Explicit Option Base 1 Private Sub Command1_Click() Dim a(100) As Integer, i As Integer,m As Integer, n As Integer, k As Integer Picture1.Print "生成100个两位随机整数" For i = 1 To 100 a(i) = Int(Rnd * 90) + 10 Picture1.Print a(i); If i Mod 10 = 0 Then Picture1.Print Next i m = 0: n = 0: k = 0 For i = 1 To 100 If a(i) <= 40 Then m = m + 1 ElseIf a(i) > 40 And a(i) <= 70 Then n = n + 1 Else k = k + 1 End If Next i Picture1.Print "统计情况:" Picture1.Print "小于等于40的数有"; m Picture1.Print "小于等于70的数有"; n Picture1.Print "大于70的数有"; k End Sub Private Sub Command2_Click() Picture1.Cls End Sub Private Sub Command3_Click() Unload Me End Sub 11. 随机生成20个100以内的正整数,将其中的奇数和偶数分两行显示在窗体上。Option Explicit Option Base 1 Private Sub Command1_Click() Dim a(20) As Integer, i As Integer,m As String, n As String Picture1.Print "生成20个100以内的正整数" For i = 1 To 20 a(i) = Int(Rnd * 100) + 1 Picture1.Print a(i); If i Mod 10 = 0 Then Picture1.Print Next i For i = 1 To 20 m = m + Str(a(i)) Else n = n + Str(a(i)) End If Next i Picture1.Print "奇数行" Picture1.Print m Picture1.Print "偶数行" Picture1.Print n End Sub Private Sub Command2_Click() Picture1.Cls End Sub Private Sub Command3_Click() Unload Me End Sub 12. 编写程序求出100以内的所有勾股数,所谓勾股数是指满足条件a2+b2=c2(a≠b)的自然数(无参考界面) Option Explicit Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer,j As Long For a = 1 To 100 For b = 1 To 100 For c = 1 To 100 If a < b Then If a * a + b * b = c * c Then Print a; "*"; a; "+"; Print b; "*"; b; "="; Print c; "*"; c; " "; j = j + 1 If j Mod 2 = 0 Then Print End If End If Next c Next b Next a End Sub 13.设计一个用二分法求方程x3-x4+4x2-1=0在区间[0,1]上的一个实根。 Option Explicit Private Sub Command1_Click() Dim a As Single, b As Single,c As Single, fa As Single,fb As Single, fc As Single a = 0: b = 1 fa = a ^ 3 - a ^ 4 + 4 * a ^ 2 – 1 fb = b ^ 3 - b ^ 4 + 4 * b ^ 2 – 1 If fa * fb < 0 Then Do c = (a + b) / 2 fc = c ^ 3 - c ^ 4 + 4 * c ^ 2 – 1 If fc * fa >= 0 Then a = c: fa = fc Else b = c: fb = fc End If Loop Until Abs(a-b) < 0.0000001 And fc<1E-7 Text1.Text = "x=" & Format(c, "#0.0000000") Exit Do Else Text1.Text = "方程在此区间无解!" Exit Do End If Loop End Sub Private Sub Command2_Click() Unload Me End Sub 第五章数组 1.随机生成15个100以内的正整数并显示在一个文本框中,再将所有对称位置的两个数据对调后显示在另一个文本框中。 Option Explicit Option Base 1 Dim a(15) As Integer Private Sub Command1_Click() Dim i As Integer Randomize For i = 1 To 15 a(i) = Int(Rnd * 100) + 1 Text1.Text = Text1.Text + Format(a(i), "00") + Space(2) Next i End Sub Private Sub Command2_Click() Dim i As Integer, t As Integer For i = 1 To UBound(a) / 2 t = a(i) a(i) = a(UBound(a) + 1 - i) a(UBound(a) - i + 1) = t Next i For i = 1 To 15 Text2.Text = Text2.Text + Format(a(i), "00") + Space(2) Next i End Sub Private Sub Command3_Click() Text1.Text = "": Text2.Text = "": Text1.SetFocus End Sub Private Sub Command4_Click() Unload Me End Sub 2.随机生成20个100以内的两位正整数,统计其中有多少个不相同的数。 Option Explicit Option Base 1 Dim a() As Integer Private Sub Command1_Click() Dim N As Integer, I As Integer Text1 = "" Text2 = "" Text3 = "" Text1.SetFocus ReDim a(20) Randomize For I = 1 To 20 a(I) = Int(90 * Rnd) + 10 Text1 = Text1 & CStr(a(I)) + Space(2) Next I End Sub Private Sub Command2_Click() Dim Ub As Integer, I As Integer, J As Integer Dim k As Integer, N As Integer Text2 = "": Text3 = "" Ub = UBound(a) N = 1 Do While N < Ub I = N + 1 Do While I <= Ub If a(N) = a(I) Then For J = I To Ub - 1 a(J) = a(J + 1) Next J Ub = Ub - 1 ReDim Preserve a(Ub) Else I = I + 1 End If Loop N = N + 1 Loop For I = 1 To UBound(a) Text2 = Text2 & CStr(a(I)) + Space(2) Next I Text3 = CStr(Ub) End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 End Sub 3. 参照下图所示界面,编写一个求由一位随机整数构成的数组每一行与每一列之和。Option Explicit Option Base 1 Dim a(4, 5) As Integer Dim SumL As Integer, SumC As Integer Private Sub CmdArry_Click() Dim I As Integer, J As Integer Randomize For I = 1 To 4 For J = 1 To 5 a(I, J) = Int(Rnd * 9) + 1 Picture1.Print a(I, J); Next J Picture1.Print Next I End Sub Private Sub CmdClear_Click() Picture1.Cls: Text1.Text = "": Text2.Text = "" End Sub Private Sub CmdColumn_Click() Dim I As Integer, J As Integer For J = 1 To 5 SumC = 0 For I = 1 To 4 SumC = SumC + a(I, J) Next I Text2.Text = Text2.Text & SumC & " " Next J End Sub Private Sub CmdExitCmdClear_Click() Unload Me End Sub Private Sub CmdLine_Click() Dim I As Integer, J As Integer For I = 1 To 4 SumL = 0 For J = 1 To 5 SumL = SumL + a(I, J) Next J Text1.Text = Text1.Text & SumL & Chr(13) & Chr(10) Next I 4. 在一个数列中,删除其中的重复数,使得数列只保留不同的数。 答:界面如右: 程序代码如下: Option Base 1 Option Explicit Private Sub Form_Click() Dim a() As Integer, n As Integer Dim i As Integer, j As Integer, k As Integer n = InputBox("请输入数据个数:") ReDim a(n) Print "生成的" & n & "个数如下:" For i = 1 To n a(i) = Int(Rnd * 90) + 10 Print a(i); If i Mod 10 = 0 Then Print Next i i = 1 Do While i <= n - 1 j = i + 1 Do While j <= n If a(i) = a(j) Then For k = j To n - 1 a(k) = a(k + 1) Next k n = n - 1 ReDim Preserve a(n) Else j = j + 1 End If Loop i = i + 1 Loop Print "不相同的数如下:" For i = 1 To n Print a(i); If i Mod 10 = 0 Then Print Next i Print End Sub 5. 有20个数围成一圈,找出每四个相邻数之和中的最大值,并指出是哪四个相邻的数。Dim i As Integer Private Sub Command1_Click() Dim a(20, 2) As Integer Dim temp As Integer b(i) = Val(Text1(i - 1).Text) Next For i = 1 To 20 a(i, 2) = i Next For i = 1 To 17 a(i, 1) = b(i) + b(i + 1) + b(i + 2) + b(i + 3) Next temp = a(1, 1) For i = 2 To 20 If temp < a(i, 1) Then temp = a(i, 1) Next For i = 1 To 20 If temp = a(i, 1) Then Exit For Next i Text2.Text = temp Text1(i - 1).ForeColor = RGB(255, 0, 0) Text1(i + 1).ForeColor = RGB(255, 0, 0) Text1(i + 2).ForeColor = RGB(255, 0, 0) Text1(i).ForeColor = RGB(255, 0, 0) Label1.Caption = "四个数为:" & b(i) & "," & b(i + 1) & "," & b(i + 2) & "," & b(i + 3) End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Command3_Click() Randomize For i = 0 To 19 Text1(i).Text = Fix(Rnd() * 100) Next End Sub Private Sub Command4_Click() For i = 0 To 19 Text1(i).Text = "" Text1(i).ForeColor = RGB(0, 0, 0) Text2.Text = "" Label1.Caption = "" Next End Sub