VB题java 随机正整数产生一个有36个两位正整数组成的6×6矩

求大神用VB编写这个题目”随机产生100个两位正整数,在窗体上每行输出10个数,统计其中小于等于3_百度知道
求大神用VB编写这个题目”随机产生100个两位正整数,在窗体上每行输出10个数,统计其中小于等于3
求大神用VB编写这个题目”随机产生100个两位正整数,在窗体上每行订顶斥雇俪概筹谁船京输出10个数,统计其中小于等于35;大于35且小于等于70以及大于70的数据的个数”
提问者采纳
Dim&n&As&Integer,&s1&As&Integer,&s2&As&Integer,&s3&As&Integer,&i&As&IntegerRandomizeFor&i&=&1&To&100&&&&n&=&Int(Rnd&*&90)&+&10&&&&If&n&&&70&Then&&&&&&&&s3&=&s3&+&1&&&&ElseIf&n&&&35&Then&&&&&&&&s2&=&s2&+&1&&&&Else&&&&&&&&s1&=&s1&+&1&&&&End&If&&&&Print&n;&&&&If&i&Mod&10&=&0&Then&Prin订顶斥雇俪概筹谁船京tNextPrintPrint&&小于等于35的数有&;&s1;&&个&Print&&大于35且小于等于70的数有&;&s2;&&个&Print&&大于70的数有&;&s3;&&个&
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
正整数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁VB题目求助_百度知道
VB题目求助
利用随机函数生成一个由两位正整数构成的4行5列的矩阵,求出矩阵的行和为最大的与最小的行,并调换这两行的位置。结果在图片框中显示
提问者采纳
intJiaohuan As Integer Dim strshuchu As String
If j &求行交换后输出For i = 1 To 4
strshuchu = &quot,以及对于的行数max = sum(1)max_Num = 1min = sum(1)min_Num = 1For i = 1 To 4
If min &gt, min_Num As Integer Dim sum(4) As I生成数据矩阵
For i = 1 To 4
For j = 1 To 5
juzhen(i;行交换For i = 1 To 5 intJiaohuan = juzhen(max_NumPrivate Sub Command1_Click()
Dim i As Integer, j As Integer, j) & &quot, max_Num As Integer, j) & &行交换后&quot, 5) As Integer
Dim max As I&两位数, i) = intJiaohuanNext iintJiaohuan = sum(max_Num)sum(max_Num) = sum(min_Num)sum(min_Num) = intJiaohuanPicture1;
strshuchu = strshuchu & juzhen(i;+&quot,最小值; 5 Then
strshuchu = strshuchu & juzhen(i;=&quot.Print &quot, j) & &quot,10-100之间
Picture1; sum(i) Then
max = sum(i)
max_Num = i
End IfNext i'&#39.Print &quot,并输出For i = 1 To 4
strshuchu = &
For j = 1 To 5
If j &&quot, i) = juzhen(min_Num, min As I求行的和'
sum(i) = 0
For j = 1 To 5
sum(i) = sum(i) + juzhen(i, juzhen(4; & sum(i)
Picture1, i) juzhen(max_N生成矩阵&=& & sum(i)
Picture1; 5 Then
strshuchu = strshuchu & juzhen(i;+&quot, i) juzhen(min_N
strshuchu = strshuchu & juzhen(i, j) = Int(Rnd * 90) + 10 '求行的和sum的最大; sum(i) Then
min = sum(i)
min_Num = i
If max &lt, j) & &quot.Print strshuchuNext i&#39
其他类似问题
为您推荐:
其他1条回答
下载知道APP
随时随地咨询
出门在外也不愁51VB教材习题答案_vb答案-牛bb文章网
51VB教材习题答案 vb答案
所属栏目: &
新编Visual Basic程序设计教程习 题 解 答蔡树元著目 录第一章 Visual Basic概述 .................................................................................................... - 3 - 第二章 创建用户界面 ......................................................................................................... - 4 - 第三章 VB语言基础 .......................................................................................................... - 6 - 第四章 算法基础Visual Basic的基本语句 ....................................................................... - 8 - 第五章 数 组 ............................................................................................................... - 16 - 第六章 程序调试 ............................................................................................................... - 28 - 第八章 过 程 ............................................................................................................... - 29 - 附:苏州大学出版社的Visual Basic程序设计实验指导书答案 .......... 错误!未定义书签。 2006年春江苏省计算机二级试卷(Visual Basic) .................................... 错误!未定义书签。第一章 Visual Basic概述1. VB是用于开发________环境下应用程序的工具。 (B)A. DOS B. Windows C. DOS和Windows D. UNIX2. VB6.0是________位操作系统下的应用程序开发工具。 (A)A. 32 B. 16 C. 32或16 D. 643. 一个对象可执行的动作与可被一个对象所识别的动作分别称为________(B)A.事件、方法 B.方法、事件 C.属性、方法 D.过程、事件4. 有一个红色、充满氢气的气球,如果人不小心松开手抓的引线,就会飞走;如果用针刺它,则会爆破。请问,对于气球对象,哪些是属性、哪些是事件、哪些是方法? 答:属性是红色、氢气;事件是松开、针刺;方法是飞走、爆破。 5. 简述事件驱动过程程序的设计原理?答:使用VB不仅可以非常便捷地设计出Windows应用程序的窗口界面,设置界面中各种对象的属性,而且可以通过编写程序代码段,为对象规定在被某个D事件‖激活时应发生的各种动作以及所要进行的信息处理的具体内容,这样的代码段称为D过程‖。为各个对象编写的过程集合在一起,就构成一个完整的应用程序。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属性的控件有哪些?它们的取值及类型有何异同?答:常用控件中具有Value属性的控件有:选项按钮、复选框、滚动条:(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&,62.清除方法(1)窗 体 [窗体名.]Cls 例:[Form1.]Cls(2)文本框 文本框名.Text=&& 例:Text1.Text= &&(3)标 签 标签名.Caption=&& 例: Label1.Caption= &&(4)图片框 图片框名.Print 内容 例: Picture1.Cls(5)列表框 列表框名. Clear 例:List1. Clear(6)组合框 组合框名. Clear 例:Combo1. Clear3.删除方法(1)列表框 列表框名.RemoveItem 位置号 例:List1. RemoveItem List1.ListIndex(2)组合框 组合框名.AddItem 内容[,位置号] 例: Combo1. RemoveItem Combo1.ListIndex51VB教材习题答案_vb答案第三章 VB语言基础1. 如果编写的过程要被多个窗体及其对象调用,应将这些过程放在哪一类模块中?(B)A.窗体模块 B.标准模块 C.工程 D.类模块2. 事件过程与通用过程的主要区别是什么?答:事件过程是指为窗体以及窗体上的各种对象编写的用来响应由用户或系统引发的各种事件的代码行;通用过程是指一个应用程序中的多个窗体可以共享一些代码,或者一个窗体内不同的事件过程可以共享的一些代码;事件过程是由用户或系统响应某个事件而执行的,通用过程是由事件过程或其他通用过程调用而执行的。3. 通用过程只能存在于标准模块中,这种说法对吗?答:不对,通用过程既可存在于标准模块中,也可存在于窗体模块中。4. VB有哪些数据类型?答:VB中的数据类型有:整型、长整型、单精度、双精度、定长字符型、变长字符型、逻辑型、字节型、日期型、货币型、对象型、变体型。5. 字符型常量与日期型常量在使用时有何区别?下列常量中哪些是字符串型常量,哪些是日期型常量?哪些什么也不是?A. DI am a student.‖ B. D江苏南京‖ C. #02/25/1999#D. #January 1,1993# E. D02/25/1999# F. #January 1,1993‖答:字符型常量在使用时要加西文的双引号,日期型常量再使用时要加#号;字符型常量有:A、B;日期型常量有:C、D;什么也不是:E、F。6. 下列符号中哪些是VB合法的变量名?A. blnFrag B. _a5b C. lngNum D. Area_TriangleE. User&Input F. 5Name答:合法的变量名有:A、C、D7. 变量作用域包括几个等级?说明的方式有何区别?答:变量作用域包括三个等级:过程级、窗体级、全局级。局部(过程级):用Dim、Static在过程中定义,作用范围:该过程,脱离该过程后无效,也就是在其它过程中无效;Static:静态变量,脱离该过程后,变量的值不消失,用于子过程或函数过程中;窗体(模块)级:用Private、Dim在通用/声明部分定义,作用范围:该窗体中所有过程,脱离该窗体后无效,也就是在其它窗体的过程中无效;全局(公有的):用Public在通用/声明部分定义;如果在标准模块中定义,则作用范围为该工程的所有窗体,调用时直接使用变量名;如果在窗体模块中定义,则作用范围为该工程的所有窗体,但本窗体调用时直接使用变量名,该工程中其它窗体调用时,须加定义时的窗体名作为前缀。8. 写出下面数学式对应的算术表达式。(1) b?c a/(b+c/d) d(2) x?x2?1 (x+Sqr(x*x+1))^(1/3)2y(3) (ax?by)(ax?by) 2*y/((a*x+b*y)*(a*x-b*y))1?(4) 1?1 1+1/(1+1/m)- 6 -(5) 2(6) 2x() (d/3)^(2*x)/2 3ln(y?cos2x) Log(y+cos(x)^2)(7) |x3x?y| Abs((Exp(x)+Sin(x)^3)/(x+y))(8) lnexy?|tan?1z?cos3x| x?y?zLog((Exp(x*y)+Abs(Tan(z)^(-1)+Cos(x)^3))/(x+y-z))9. 指出并改正下面数学式对应的VB算术表达式中的错语。(1) a?b A+B/A-B (A+B)/(A-B)(2) (d?1)y ABC/(D+1)*Y A*B*C/((D+1)*Y)(3) (xy)5 XY^5 (X*Y)^510.将下面的条件用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&8011.求下列表达式的运算结果:Mid(DVisual Basic‖,1,12)=Right(DProgramming Language Visual Basic‖,12) TrueDABCRG‖&=Dabcde‖ FalseInt(134.69)&=Cint(134.69) False78.9/32.77&=97.5/43.87 And C45.4&-4.98 FalseStr(32.345)=Cstr(32.345) False12.下列语句代码哪些可正常执行(正常执行是指系统不给出出错提示)?A. Print 32765+3 溢出B. Print 5+7=14 FalseC. Print 256/128 2D. Print D14‖+ 32 46E. Print D14‖& 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.执行语句代码Print Format(, D##,##0.00‖),以下答案中那一个是正确的结果。(C)A. 7543.57 B. 7,543.56 C. 7,543.57 D. 7543.56- 7 -第四章 算法基础Visual Basic的基本语句1.设X与Y是同一类型的变量,试设计一个算法,把X与Y中的数据相互交换。答:S1:输入X与YS2:X =& AS3:Y =& XS4:A =& YS5:输出X与Y程序代码如下:Option ExplicitDim A As String, B As String, temp As StringPrivate Sub Command1_Click()A = Text1.TextB = Text2.Texttemp =AA =BB = tempText1.Text = AText2.Text = BEnd SubPrivate Sub Command2_Click()Text1.Text = &&Text2.Text = &&Text1.SetFocusEnd SubPrivate Sub Command3_Click()Unload MeEnd Sub2. 设A、B、C是同一类型的变量,并分别被赋予不同大小的数据,设计一个算法,使得执行的结果为A&B&C答:S1:输入A、B、CS2:如果A&B,则A与B交换S3:如果A&C,则A与C交换S4:如果B&C,则B与C交换S5:输出A、B、C程序代码如下:Option ExplicitPrivate Sub Command1_Click()Dim a As Integer, b As Integer, c As IntegerDim t As Integera = Text1.Text: b = Text2.Text: c = Text3.TextIf a & b Then: t = a: a = b: b = t: End- 8 -If a & c Then: t = a: a = c: c = t: EndIf b & c Then: t = b: b = c: c = t: EndText4.Text = aText5.Text = bText6.Text = cEnd SubPrivate Sub Command2_Click()Text1.Text = &&Text2.Text = &&Text3.Text = &&Text4.Text = &&Text5.Text = &&Text6.Text = &&Text1.SetFocusEnd SubPrivate Sub Command3_Click()Unload MeEnd Sub3. 设计一个可以判断某数是否是素数的算法。答:S1:输入一个正整数NS2:I=2S3:如果N能被I整数,则转S7S4:I=I+1S5:如果I小于等于N-1则转S3S6:输出N是素数,程序结束S7:输出N不是素数,程序结束程序代码如下:Option ExplicitDim x As LongPrivate Sub Command1_Click()Dim i As IntegerFor i = 2 To x - 1If x Mod i = 0 Then Exit ForNext iIf i = x ThenText2.Text = &是素数&ElseText2.Text = &不是素数&End IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub- 9 -Private Sub Text1_Change()x = Val(Text1.Text)End Sub4. 设计一个判断某正整数是一个回文数的算法。所谓回文数是指左右数字完全对称的自然数。 答:S1:输入一个数字字符串SS2:I=1S3:如果第I个数字与倒数第I个数字不同,则转S7S4:I=I+1S5:如果I小于等于字符串长度的一半,则返回S3S6:输出S是回文数,程序结束S7:输出S不是回文数,程序结束。程序代码如下:Option ExplicitPrivate Sub Command1_Click()Dim x As String, i As Integerx = Text1.TextFor i = 1 To Len(x) / 2If Mid(x, i, 1) && Mid(x, Len(x) - i + 1, 1) Then Exit ForNext iIf i & Len(x) / 2 ThenLabel1.Caption = &是回文数&ElseLabel1.Caption = &不是回文数&End IfEnd SubPrivate Sub Command2_Click()Label1.Caption = &&Text1.Text = &&End SubPrivate Sub Command3_Click()Unload MeEnd Sub5. 设计一个算法,求出给定的自然数的所有因子。答:S1:输入一个正整数NS2:I=1S3:如果N能被I整数,则输出IS4:I=I+1S5:如果I小于等于N则转S3S6:程序结束程序代码如下:Option ExplicitPrivate Sub Form_Click()- 10 -51VB教材习题答案_vb答案Dim x As Long, i As Long, j As Longx = InputBox(&请输入一个自然数:&)Print x & &的所有因子如下:&For i = 1 To xIf x Mod i = 0 ThenPj = j + 1If j Mod 10 = 0 Then PrintEnd IfNext iPrintPrint &共有&; &个。&End Sub6.在文本框Text1与Text2中分别输入35与48,变量S与X分别为字符型与整型,试问以下赋值语句的执行结果是什么?(1)S=Text1.Text + Text2.Text D3548‖(2)X=Text1.Text + Text2.Text 3548(3)S=Text1.Text & Text2.Text D3548‖(4)X=Text1.Text & Text2.Text 3548(5)S=Val(Text1.Text) + Text2.Text D83‖(6)X=Val(Text1.Text) + Text2.Text 83(7)S=Val(Text1.Text) & Text2.Text D3548‖(8)X=Val(Text1.Text) & Text2.Text 35487.根据下图填空:, , )1. 写出显示如下图所示信息框的MsgBox函数。MsgBox(&Z的值& & Str(z) & &大于0& , 48 , &程序示例& )2. 阅读程序,写出执行结果。(1)Private Sub Form_Click()- 11 -Dim a As Integer, b As Integera = 1: b = 0Do While a &= 5b = b + a * aa = a + 1LoopPrint a, bEnd Sub运行结果为: 6 55(2)Private Sub Form_Click()Dim ch As String, i As Integerch = &DEF&For i = 1 To Len(ch)ch = Mid(ch, 2 * i - 1, 1) & Left(ch, Len(ch))Print chNext iEnd Sub运行结果为: DDEFEDDEFFEDDEF(3)Private Sub Form_Click()Dim p As Integer, i As Integerp = 1For i = 1 To 5p = p + (2 * i - 1) / (2 * i + 1)If p &= 20 Then Exit ForNext iPrint i, pEnd Sub运行结果为: 6 5(4)Private Sub Form_Click()Dim p As Integer, i As Integer, n As Integerp = 2: n = 20For i = 1 To n Step pp = p + 2n = n - 3i = i + 1If p &= 10 Then Exit ForNext iPrint i, p, nEnd Sub运行结果为: 11 10 810.编写程序,随机生成100个两位整数,并统计出其中小于等于40、大于40且小于等于70及大于70的数据个数。- 12 -Option ExplicitOption Base 1Private Sub Command1_Click()Dim a(100) As Integer, i As Integer,m As Integer, n As Integer, k As IntegerPicture1.Print &生成100个两位随机整数&For i = 1 To 100a(i) = Int(Rnd * 90) + 10Picture1.Print a(i);If i Mod 10 = 0 Then Picture1.PrintNext im = 0: n = 0: k = 0For i = 1 To 100If a(i) &= 40 Thenm = m + 1ElseIf a(i) & 40 And a(i) &= 70 Thenn = n + 1Elsek = k + 1End IfNext iPicture1.Print &统计情况:&Picture1.Print &小于等于40的数有&; mPicture1.Print &小于等于70的数有&; nPicture1.Print &大于70的数有&; kEnd SubPrivate Sub Command2_Click()Picture1.ClsEnd SubPrivate Sub Command3_Click()Unload MeEnd Sub11. 随机生成20个100以内的正整数,将其中的奇数和偶数分两行显示在窗体上。 Option ExplicitOption Base 1Private Sub Command1_Click()Dim a(20) As Integer, i As Integer,m As String, n As StringPicture1.Print &生成20个100以内的正整数&For i = 1 To 20a(i) = Int(Rnd * 100) + 1Picture1.Print a(i);If i Mod 10 = 0 Then Picture1.PrintNext iFor i = 1 To 20If a(i) Mod 2 && 0 Then- 13 -m = m + Str(a(i))Elsen = n + Str(a(i))End IfNext iPicture1.Print &奇数行&Picture1.Print mPicture1.Print &偶数行&Picture1.Print nEnd SubPrivate Sub Command2_Click()Picture1.ClsEnd SubPrivate Sub Command3_Click()Unload MeEnd Sub12. 编写程序求出100以内的所有勾股数,所谓勾股数是指满足条件a2+b2=c2(a≠b)的自然数 (无参考界面)Option ExplicitPrivate Sub Form_Click()Dim a As Integer, b As Integer, c As Integer,j As LongFor a = 1 To 100For b = 1 To 100For c = 1 To 100If a & b ThenIf a * a + b * b = c * c ThenP &*&; &+&;P &*&; &=&;P &*&; & &;j = j + 1If j Mod 2 = 0 Then PrintEnd IfEnd IfNext cNext bNext aEnd Sub13. 设计一个用二分法求方程x3-x4+4x2-1=0在区间[0,1]上的一个实根。Option ExplicitPrivate Sub Command1_Click()Dim a As Single, b As Single,c As Single, fa As Single,fb As Single, fc As SingleDo- 14 -a = 0: b = 1fa = a ^ 3 - a ^ 4 + 4 * a ^ 2 C 1fb = b ^ 3 - b ^ 4 + 4 * b ^ 2 C 1If fa * fb & 0 ThenDoc = (a + b) / 2fc = c ^ 3 - c ^ 4 + 4 * c ^ 2 C 1If fc * fa &= 0 Thena = c: fa = fcElseb = c: fb = fcEnd IfLoop Until Abs(a-b) & 0.0000001 And fc&1E-7 Text1.Text = &x=& & Format(c, &#0.0000000&) Exit DoElseText1.Text = &方程在此区间无解!& Exit DoEnd IfLoopEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub- 15 -51VB教材习题答案_vb答案第五章 数 组1. 随机生成15个100以内的正整数并显示在一个文本框中,再将所有对称位置的两个数据对调后显示在另一个文本框中。Option ExplicitOption Base 1Dim a(15) As IntegerPrivate Sub Command1_Click()Dim i As IntegerRandomizeFor i = 1 To 15a(i) = Int(Rnd * 100) + 1Text1.Text = Text1.Text + Format(a(i), &00&) + Space(2)Next iEnd SubPrivate Sub Command2_Click()Dim i As Integer, t As IntegerFor i = 1 To UBound(a) / 2t = a(i)a(i) = a(UBound(a) + 1 - i)a(UBound(a) - i + 1) = tNext iFor i = 1 To 15Text2.Text = Text2.Text + Format(a(i), &00&) + Space(2)Next iEnd SubPrivate Sub Command3_Click()Text1.Text = &&: Text2.Text = &&: Text1.SetFocusEnd SubPrivate Sub Command4_Click()Unload MeEnd Sub2. 随机生成20个100以内的两位正整数,统计其中有多少个不相同的数。Option ExplicitOption Base 1Dim a() As IntegerPrivate Sub Command1_Click()Dim N As Integer, I As IntegerText1 = &&- 16 -Text2 = &&Text3 = &&Text1.SetFocusReDim a(20)RandomizeFor I = 1 To 20a(I) = Int(90 * Rnd) + 10Text1 = Text1 & CStr(a(I)) + Space(2)Next IEnd SubPrivate Sub Command2_Click()Dim Ub As Integer, I As Integer, J As IntegerDim k As Integer, N As IntegerText2 = &&: Text3 = &&Ub = UBound(a)N = 1Do While N & UbI = N + 1Do While I &= UbIf a(N) = a(I) ThenFor J = I To Ub - 1a(J) = a(J + 1)Next JUb = Ub - 1ReDim Preserve a(Ub)ElseI = I + 1End IfLoopN = N + 1LoopFor I = 1 To UBound(a)Text2 = Text2 & CStr(a(I)) + Space(2)Next IText3 = CStr(Ub)End SubPrivate Sub Command3_Click()Unload MeEnd SubPrivate Sub Form_Load()Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2End Sub- 17 -3. 参照下图所示界面,编写一个求由一位随机整数构成的数组每一行与每一列之和。 Option ExplicitOption Base 1Dim a(4, 5) As IntegerDim SumL As Integer, SumC As IntegerPrivate Sub CmdArry_Click()Dim I As Integer, J As IntegerRandomizeFor I = 1 To 4For J = 1 To 5 a(I, J) = Int(Rnd * 9) + 1Picture1.Print a(I, J);Next JPicture1.PrintNext IEnd SubPrivate Sub CmdClear_Click()Picture1.Cls: Text1.Text = &&: Text2.Text = &&End SubPrivate Sub CmdColumn_Click()Dim I As Integer, J As IntegerFor J = 1 To 5SumC = 0For I = 1 To 4SumC = SumC + a(I, J)Next IText2.Text = Text2.Text & SumC & & &Next JEnd SubPrivate Sub CmdExitCmdClear_Click()Unload MeEnd SubPrivate Sub CmdLine_Click()Dim I As Integer, J As IntegerFor I = 1 To 4SumL = 0For J = 1 To 5SumL = SumL + a(I, J)Next JText1.Text = Text1.Text & SumL & Chr(13) & Chr(10)Next IEnd Sub- 18 -4. 在一个数列中,删除其中的重复数,使得数列只保留不同的数。答:界面如右:程序代码如下:Option Base 1Option ExplicitPrivate Sub Form_Click()Dim a() As Integer, n As IntegerDim i As Integer, j As Integer, k As Integern = InputBox(&请输入数据个数:&)ReDim a(n)Print &生成的& & n & &个数如下:&For i = 1 To na(i) = Int(Rnd * 90) + 10Print a(i);If i Mod 10 = 0 Then PrintNext ii = 1Do While i &= n - 1j = i + 1Do While j &= nIf a(i) = a(j) ThenFor k = j To n - 1a(k) = a(k + 1)Next kn = n - 1ReDim Preserve a(n)Elsej = j + 1End IfLoopi = i + 1LoopPrint &不相同的数如下:&For i = 1 To nPrint a(i);If i Mod 10 = 0 Then PrintNext iPrintEnd Sub5. 有20个数围成一圈,找出每四个相邻数之和中的最大值,并指出是哪四个相邻的数。Dim i As IntegerPrivate Sub Command1_Click()Dim a(20, 2) As IntegerDim b(20) As Integer- 19 -Dim temp As IntegerFor i = 1 To 20b(i) = Val(Text1(i - 1).Text)NextFor i = 1 To 20a(i, 2) = iNextFor i = 1 To 17a(i, 1) = b(i) + b(i + 1) + b(i + 2) + b(i + 3)Nexttemp = a(1, 1)For i = 2 To 20If temp & a(i, 1) Then temp = a(i, 1)NextFor i = 1 To 20If temp = a(i, 1) Then Exit ForNext iText2.Text = tempText1(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 SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Command3_Click()RandomizeFor i = 0 To 19Text1(i).Text = Fix(Rnd() * 100)NextEnd SubPrivate Sub Command4_Click()For i = 0 To 19Text1(i).Text = &&Text1(i).ForeColor = RGB(0, 0, 0)Text2.Text = &&Label1.Caption = &&NextEnd Sub- 20 -51VB教材习题答案_vb答案6. 设有一个二维数组A(5,5),试编写程序计算:(1)所有元素之和;(2)所有靠边元素之和;(3)两条对角线元素之和。Option ExplicitDim a(5, 5) As Integer, I As Integer, J As IntegerDim s1, s2, s3 As IntegerPrivate Sub Command1_Click()Picture1.Print &生成数组元素:&RandomizeFor I = 0 To 4For J = 0 To 4a(I, J) = Int(Rnd * 90) + 10Picture1.Print Right(& & & a(I, J), 3);Next JPicture1.PrintNext IEnd SubPrivate Sub Command2_Click()s1 = 0: s2 = 0: s3 = 0For I = 0 To 4For J = 0 To 4s1 = s1 + a(I, J)If I = 0 Or J = 0 Or I = 4 Or J = 4 Then s2 = s2 + a(I, J)If I = J Or I + J = 4 Then s3 = s3 + a(I, J)Next JNext IText1 = s1: Text2 = s2: Text3 = s3End SubPrivate Sub Command3_Click()Picture1.Cls: Text1 = &&: Text2 = &&: Text3 = &&End SubPrivate Sub Command4_Click()Unload MeEnd Sub7. 找出一个m×n数组的“鞍点”。所谓鞍点是指一个在本行中最大,在本列中最小的数组元素,若找到了鞍点,则输出鞍点的行号和列号,若数组中不存在鞍点,则输出鞍点不存在。Option ExplicitDim i As Integer, j As Integer, n As Integer, m As IntegerDim max As Integer, min As Integer, x As Integer, y As IntegerDim s As Integer, t As Integer, a() As Integer, b As IntegerPrivate Sub Command1_Click()s = InputBox(&请输入s=&)- 21 -t = InputBox(&请输入t=&)ReDim a(s, t)RandomizeFor i = 1 To sFor j = 1 To ta(i, j) = Int(Rnd * 100)Picture1.Print Right(& & & a(i, j), 3);Next jPicture1.PrintNext iCommand2.Enabled = TrueText1.Text = &&: Text2.Text = &&End SubPrivate Sub Command2_Click()For i = 1 To smax = a(1, 1) '判断第一行是否有鞍点For j = 1 To tIf a(i, j) & max Thenmax = a(i, j): x = i: n = jEnd IfNext jmin = a(x, n)For y = 1 To sIf a(y, n) & min Thenmin = a(y, n): m = yEnd IfNext yIf m = x Thenb = mText1.Text = m: Text2.Text = nEnd IfNext i '判断其它几行If m && b ThenMsgBox &鞍点不存在!&, 48, &提示信息&End IfEnd SubPrivate Sub Command3_Click()Unload MeEnd SubPrivate Sub Form_Load()Picture1.ClsMove (Screen.Width - Width) / 2, (Screen.Height -Height) / 2End Sub- 22 -8. 按金字塔形状打印杨辉三角形。Option ExplicitOption Base 1Private Sub Form_click()Dim a() As Long, L As IntegerDim n As Integer, i As Integer, j As Integern = InputBox(&请输入杨辉三角形的行数:&, &杨辉三角形&)ReDim a(n, n)For i = 1 To na(i, 1) = 1For j = 2 To i - 1a(i, j) = a(i - 1, j - 1) + a(i - 1, j)If L & Len(CStr(a(i, j))) Then L = Len(CStr(a(i, j)))Next ja(i, i) = 1Next iFor i = 1 To nFor j = 1 To iIf j = 1 ThenPrint Space(L * (n - i)) & Left(CStr(a(i, j)) & Space(L), L);ElsePrint Space(L) & Left(CStr(a(i, j)) & Space(L), L);End IfNext jPrintNext iEnd Sub9. 利用随机函数生成一个由两位正整数构成的4行5列矩阵,求出矩阵行的和为最大与最小的行,并调换这两行位置。Option Base 1Dim a(4, 5) As IntegerDim b(4) As IntegerDim m, n As IntegerPrivate Sub Command1_Click()Dim i, j As IntegerRandomizeFor i = 1 To 4For j = 1 To 5a(i, j) = Int(Rnd * 90) + 10Picture1.Print a(i, j) & & &;Next jPicture1.PrintNext iEnd SubPrivate Sub Command2_Click()- 23 -Dim p1, p2 As IntegerDim t As IntegerPicture2.ClsFor i = 1 To 4b(i) = 0For j = 1 To 5b(i) = b(i) + a(i, j)Next jNext ip1 = 1: p2 = 1For i = 2 To 4If b(i) & b(p1) Then p1 = iIf b(i) & b(p2) Then p2 = iNext iLabel1.Caption = &最大的行是第& & p1 & &行,和为:& & b(p1)Label2.Caption = &最小的行是第& & p2 & &行,和为:& & b(p2)m = p1:n = p2End SubPrivate Sub Command3_Click()For j = 1 To 5t = a(m, j): a(m, j) = a(n, j): a(n, j) = tNext jFor i = 1 To 4For j = 1 To 5Picture2.Print a(i, j) & & &;Next jPicture2.PrintNext iEnd SubPrivate Sub Command4_Click()Unload MeEnd Sub10. 求一个n×n阶的矩阵A的转置矩阵。N从键盘输入,A矩阵和它的转置矩阵分别显示在两个文本框中。Option ExplicitDim i, j As Integer, m As Integer, n As IntegerDim s As String, s1 As String, a() As IntegerDim at() As IntegerPrivate Sub Command1_Click()s = &&: Text3.Text = &&m = Val(Text1.Text)n = Val(Text2.Text)ReDim a(m, n), at(n, m)- 24 -RandomizeFor i = 1 To mFor j = 1 To na(i, j) = Int(90 * Rnd) + 10s = s & Format(a(i, j), &00&) & & &Next js = s & Chr(13) & Chr(10)Next iText3.Text = sIf n = 0 Or n = Str(Null) ThenMsgBox &输入错误,请重输!&, 48, &提示信息&End IfEnd SubPrivate Sub Command2_Click()s1 = &&: Text4.Text = &&For i = 1 To nFor j = 1 To mat(i, j) = a(j, i)s1 = s1 & Format(at(i, j), &00&) & & &Next js1 = s1 & Chr(13) & Chr(10)Next iText4.Text = s1End SubPrivate Sub Command3_Click()s = &&: s1 = &&Text1.Text = &&: Text2.Text = &&: Text3.Text = &&: Text4.Text = &&: Text3.SetFocus End SubPrivate Sub Command4_Click()Unload MeEnd SubPrivate Sub Text1_Change()Text2.SetFocusEnd SubPrivate Sub Text2_Change()Command1.SetFocusEnd Sub11. 有如下一个二维数组,找出不同行、不同列的的乘积最大的一组,并将这三个元素按下面的形式×)=×× A(2,×)=×× A(3,×)=××答:三个数组元素打印出来。A(1,- 25 -51VB教材习题答案_vb答案Option Base 1Option ExplicitPrivate Sub Form_Click()Dim a(3, 3) As Integer, i As Integer, m As SingleDim j As Integer, k As Integer, max As SingleDim ci As Integer, cj As Integer, ck As IntegerPrint &生成的二维数组:&For i = 1 To 3For j = 1 To 3a(i, j) = Int(Rnd * 9) + 1Print a(i, j);Next jPrintNext iPrint &不同行不同列的三个数的乘积是:&max = a(1, 1) * a(2, 2) * a(3, 3)ci = 1: cj = 2: ck = 3For i = 1 To 3For j = 1 To 3For k = 1 To 3If i && j And j && k And i && k Thenm = a(1, i) * a(2, j) * a(3, k)PIf m & max Thenmax = mci = icj = jck = kEnd IfEnd IfNext kNext jNext iPrintPrint &最大值为:& & Str(max)Print &A(1,& & CStr(ci) & &)=& & Str(a(1, ci))Print &A(2,& & CStr(cj) & &)=& & Str(a(2, cj))Print &A(3,& & CStr(ck) & &)=& & Str(a(3, ck))End Sub12. 编写打印N阶幻阵的程序。Option ExplicitDim N As Integer, A() As IntegerPrivate Sub Command1_Click()Dim I As Integer, J As Integer, m As IntegerReDim A(N, N)- 26 -Label1.Caption = CStr(N) & &阶幻阵&I = N: J = (N + 1) / 2: A(I, J) = 1For m = 2 To N * NI = I + 1: J = J + 1If I & N ThenIf J &= N ThenI = 1: J = JElseIf J & N ThenI = I - 2: J = J - 1End IfElseIf I &= N ThenIf J & N ThenI = I: J = 1ElseIf J &= N ThenIf A(I, J) && 0 Then I = I - 2: J = J - 1End IfEnd IfA(I, J) = mNext mFor I = 1 To NFor J = 1 To NPicture1.Print Right(Space(4) & A(I, J), 4);Next JPicture1.PrintNext IEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Option1_Click(index As Integer)Select Case indexCase 0: N = 3Case 1: N = 5Case 2: N = 7End SelectEnd Sub- 27 -1.下面是一个有错误的程序,它的功能是把一个正整数序列重新排列,新序列的排列规则是:奇数在序列左边,偶数在序列右边,排列时,奇、偶数依次从序列两端向序列中间排放。答:Option Base 1Option ExplicitPrivate Sub Command1_Click()Dim a(10) As Integer, i As Integer, j As IntegerDim b(10) As Integer, k As IntegerFor i = 1 To 10a(i) = Int(Rnd * 100) + 1Picture1.Print a(i);Next iPicture1.Printj = 1: k = 5 将其中的K=5改为K=10For i = 1 To 10If a(i) Mod 2 = 0 Then 将其中的=0改为=1或改为&&0b(j) = a(i)j = j + 1Elseb(k) = a(i)k = k + 1 将其中的K=K+1改为K=K-1End IfNext iFor i = 1 To 10Picture2.Print b(i);Next iPicture2.PrintEnd SubPrivate Sub Command2_Click()Picture1.ClsPicture2.ClsEnd SubPrivate Sub Command3_Click()EndEnd Sub- 28 -1. 在过程中声明的局部变量和在过程中声明的静态变量有什么不同?答:局部变量离开过程后,该变量的值就消失,而静态变量离开过程后,该变量的值不消失,下次调用时该变量保留上一次的值。2. 在VB程序中调用程序向过程传递数据有哪几种方式?它们之间有什么不同?答:在VB程序中调用程序向过程传递数据有两种:按值传递与按地址传递。按值传递是指调用时将实参的值复制给形参,形参的值改变与实参没有任何关系;按地址传递是指调用时实参与形参共用同一个存储单元,形参的值发生变化实参的值也发生变化,实参的值发生变化,形参的值也发生变化。3. 举例说明按值传递与按地址传递方式的异同?答:按值传递举例:Private Sub Command1_Click()Dim a As Integera = 2Call abc(a)Print aEnd SubPrivate Sub abc(ByVal b As Integer)b = b + 2Print bEnd Sub单击命令按钮,事件过程中的实参A的值为2,调用ABC子过程,形参B的值为2,然后执行子程序,B的值为4,返回事件过程后,A的值仍为2。按地址传递举例:Private Sub Command1_Click()Dim a As Integera = 2Call abc(a)Print aEnd SubPrivate Sub abc(b As Integer)b = b + 2Print bEnd Sub单击命令按钮,事件过程中的实参A的值为2,调用ABC子过程,形参B的值为2,然后执行子程序,B的值为4,返回事件过程后,A的值也变为4。4. 阅读程序,给出输出结果:(1)Option ExplicitOption Base 1Private Sub Form_Click()Dim St As String, Char As StringDim Data() As String, I As Integer, J As IntegerSt = &&- 29 -For I = 1 To Len(St)If Mid(St, I, 1) && &8& ThenChar = Char & Mid(St, I, 1)ElseJ = J + 1ReDim Preserve Data(J)Data(J) = CharChar = &&End IfNext ICall Conver(Data, Char)Print CharEnd SubPrivate Sub Conver(a() As String, Ch As String) Dim I As Integer, J As IntegerDim N As Integer, Dec As IntegerFor I = 1 To UBound(a)N = Len(a(I))For J = 1 To NDec = Dec + Val(Mid(a(I), J, 1)) * 8 ^ (N - J) Next JCh = Ch & Chr(Dec)Dec = 0Next IEnd Sub输出结果为:BASIC(2)Option ExplicitPrivate Sub Form_Click()Dim N As Integer, I As IntegerN = 2For I = 9 To 1 Step -1Call Sub2(I, N)Print I, NNext IEnd SubPrivate Sub Sub2(X As Integer, Y As Integer) Static N As IntegerDim I As IntegerFor I = 3 To 1 Step -1N = N + XX = X - 1Next IY = Y + N- 30 -51VB教材习题答案_vb答案End Sub输出结果为:6 262 62-2 98(3)Option ExplicitPrivate Sub Form_Click()Dim A As IntegerA = 2Call Sub1(A)End SubPrivate Sub Sub1(X As Integer)X = X * 2 + 1If X & 10 ThenCall Sub1(X)End IfX = X * 2 + 1Print XEnd Sub输出结果为:2347答案:(1)BASIC(2)(3)5. 编写一个摄氏温度与华氏温度转换的通用过程。摄氏(C)与华氏(F)温度转换的公式如下:F=C*9/5+32 Option ExplicitPrivate Sub Cmd1_Click()Dim c As Single, s As Singlec = Val(Text1.Text)Call Tran(c)End SubPrivate Sub Cmd2_Click()Unload MeEnd SubPrivate Sub Tran(t As Single)Dim s As Single, answer As Integer- 31 -If Text1.Text = &0& ThenText2.Text = &32&ElseIf t & 0 Thens = t * 9 / 5 + 32Text2.Text = Str(s)Elseanswer = MsgBox(&非法数据!&, vbOKOnly + vbExclamation, &提示信息&)If answer = vbOK ThenText1.Text = &&Text2.Text = &&End IfEnd IfEnd Sub6. 编写一个验证一个数是否是素数的通用过程。用InputBox函数输入一个正整数,调用该过程判断其是否是素数,在文本框中显示判断结果,如输入11,则显示11是素数。Option ExplicitPrivate Sub CmdJudge_Click()Dim S As IntegerS = InputBox(&请输入一个正整数&)If prime(S) ThenPrint S & &是一个素数!&ElsePrint S & &不是一个素数!&End IfEnd SubPrivate Function prime(m As Integer) As BooleanDim i As Integerprime = FalseFor i = 2 To Sqr(m)If m Mod i = 0 Then Exit FunctionNext iprime = TrueEnd FunctionPrivate Sub CmdExit_Click()Unload MeEnd Sub7. 若两个素数之差为2,则这两个素数就量对孪生素数,例如:3和5、5和7、11和13等都是孪生素数,编写一个程序,找出1―100之间的所有的孪生素数。Option ExplicitOption Base 1Private Sub Form_Click()Dim I As Integer, J As Integer- 32 -Print &1~1000之间的所有孪生素数:&For I = 2 To 1000If prime(I) And prime(I + 2) ThenPrint Right(Space(2) + CStr(I), 3) & &与& & Right(Space(2) + CStr(I + 2), 3); & &;J = J + 1If J Mod 4 = 0 Then PrintEnd IfNext IPrintEnd SubPrivate Function prime(m As Integer) As BooleanDim I As IntegerFor I = 2 To m / 2If m Mod I = 0 Then prime = False: Exit FunctionNext Iprime = TrueEnd Function8. 利用随机函数生成20个在1―100之间的各不相同的正整数,并在窗体上显示出来。Private Sub Form_Click()Dim I As IntegerDim a(20) As IntegerClsCall Sub1(a)'Call Sub2(a)Print &20个在1~100之间各不相同的正整数:&For I = 1 To 20Print Right(Space(3) + CStr(a(I)), 4);If I Mod 10 = 0 Then PrintNext IPrintEnd SubPrivate Sub Sub1(a() As Integer)Dim I As Integer, J As Integer, temp As IntegerRandomizeI = 1Dotemp = Int(100 * Rnd) + 1For J = 1 To I - 1If temp = a(J) Then Exit ForNext JIf J &= I Thena(I) = tempI = I + 1End If- 33 -Loop While I &= 20End SubPrivate Sub Sub2(a() As Integer)Dim I As Integer, J As IntegerDim n As IntegerRandomizeFor I = 1 To 20n = Int(100 * Rnd) + 1For J = 1 To I - 1If n = a(J) ThenI = I - 1Exit ForEnd IfNext JIf J &= I Thena(I) = nEnd IfNext IEnd Sub9. 将上面生成的20个数首尾相连,找出每相邻四个数之和最大的四个数,并按下面的格式打印出来:n1+n2+n3+n4=sum,其中n1、n2、n3和n4是所求的四个数,sum是这四个数的和。Option ExplicitOption Base 1Private Sub Form_Click()Dim I As Integer, J As Integer, k As IntegerDim a(20) As Integer, x As Integer, max As IntegerCall xx(a)Print &20个在1~100之间的各不相同的正整数:&For I = 1 To 20Print a(I);If I Mod 10 = 0 Then PrintNext IPrintCall Maxsum(a, x, max)Print &相邻四个数之和最大的是:& For I = 0 To 2k = x + IIf k & 20 Then k = k - 20Print a(k); &+&;Next IIf k + 1 & 20 Then k = k - 20Print a(k + 1); &=&; maxEnd Sub- 34 -Private Sub xx(a() As Integer)Dim I As Integer, J As IntegerRandomizea(1) = Int(100 * Rnd) + 1I = 2Doa(I) = Int(100 * Rnd) + 1For J = 1 To I - 1If a(I) = a(J) Then Exit ForNext JI = I + 1Loop While I &= 20End SubPrivate Sub Maxsum(aa() As Integer, x As Integer, max As Integer)Dim I As Integer, J As Integer, k As Integer, sum As IntegerFor I = 1 To UBound(aa)sum = 0For J = 0 To 3k = I + JIf k & 20 Then k = k - 20sum = sum + aa(k)Next JIf max & sum Then max = sum: x = INext IEnd Sub10. 利用随机函数生成25个正整数,分别赋给一个5×5数组的每个元素,然后找出最大元素的位置,并按“A(n1,n2)=M”形式打印出来。Option ExplicitOption Base 1Dim A(5, 5) As IntegerPrivate Sub Command1_Click()Dim I As Integer, J As IntegerFor I = 1 To 5For J = 1 To 5A(I, J) = Int(Rnd * 90) + 10Picture1.Print A(I, J);Next JPicture1.PrintNext IText1.Text = &&End SubPrivate Sub Command2_Click()Dim I As Integer, J As Integer, n1 As Integer, n2 As Integer, Max As Integer- 35 -51VB教材习题答案_vb答案Text1.Text = &&n1 = 1: n2 = 1Max = A(n1, n2)For I = 1 To 5For J = 1 To 5If Max & A(I, J) ThenMax = A(I, J): n1 = I: n2 = JEnd IfNext JNext IText1.Text = &A(& & n1 & &,& & n2 & &)=& & A(n1, n2)End SubPrivate Sub Command3_Click()Text1.Text = &&: Picture1.ClsEnd SubPrivate Sub Command4_Click()Unload MeEnd Sub11. 编写一个求裴波拉契数列的递归过程,并将其前六项显示在文本框中,裴波拉契数列的通项公式是:?1 n=1,2?Fab(n)=?? Fab(n-2)+Fab(n-1) n?3??Option ExplicitPrivate Sub Command1_Click()Dim N As Integer, I As Integer, A() As IntegerText2.Text = &&N = Val(Text1.Text)ReDim A(N)For I = 1 To NA(I) = Fab(I)Text2.Text = Text2.Text + Str(A(I))Next IEnd SubPrivate Function Fab(M As Integer) As IntegerIf M = 1 Or M = 2 ThenFab = 1ElseFab = Fab(M - 2) + Fab(M - 1)End IfEnd FunctionPrivate Sub Command2_Click()Unload Me- 36 -End Sub12. 编写程序验证一个大于2的偶数,可以表示为两个素数之和。Option ExplicitOption Base 1Private Sub Command1_Click()Dim N As Integer, I As IntegerDim J As Integer, Flg As BooleanN = Val(Text1.Text)For I = 3 To NIf Prime(I) And Prime(N - I) ThenText2.Text = N & &=& & I & & +& & N - IExit ForEnd IfNext IEnd SubPrivate Sub Command2_Click()Text1.Text = &&: Text2.Text = &&End SubPrivate Sub Command3_Click()Unload MeEnd SubPrivate Function Prime(M As Integer) As BooleanDim I As Integer, Idx As IntegerPrime = FalseFor I = 2 To Sqr(M)If M Mod I = 0 Then Exit FunctionNext IPrime = TrueEnd Function13. 一个n位的正整数,其各位数的n次方之和等于这个数,称这个数为AmstrongOption ExplicitPrivate Sub Command1_Click()Dim I As Long, M As LongM = Val(Text1.Text)Text2.Text = &&For I = 10 To MCall ArmShow(I)Next IEnd SubPrivate Sub Armstrong(P As Long, aa() As Integer, flg As Boolean)- 37 -Dim I As Integer, k As Integer, sum As Longk = Len(CStr(P))For I = 1 To kReDim Preserve aa(I)aa(I) = Val(Mid(CStr(P), I, 1))sum = sum + aa(I) ^ kNext IIf P = sum Then flg = TrueEnd SubPrivate Sub Command2_Click()Text1.Text = &&: Text2.Text = &&End SubPrivate Sub Command3_Click()Unload MeEnd SubPrivate Sub ArmShow(N As Long)Dim I As Long, k As LongDim A() As Integer, flag As BooleanReDim A(1)Call Armstrong(N, A, flag)If flag ThenText2.Text = Text2.Text + CStr(N) + &=&k = UBound(A)For I = 1 To k - 1Text2.Text = Text2.Text + CStr(A(I)) + &^& + CStr(k) + &+&Next IText2.Text = Text2.Text + CStr(A(I)) + &^& + CStr(k) + Chr(13) + Chr(10)End IfEnd Sub14. 编写一个将N进制数转换成十进制数的通用程序。Dim N As Integer, St As StringPrivate Sub Cmd1_Click()Dim Num As LongCall Trans(Num)End SubPrivate Sub Cmd2_Click()EndEnd SubPrivate Sub Text1_Change()N = Val(Text1.Text)- 38 -Lab3.Caption = CStr(N) + &进制数&End SubPrivate Sub Text2_Change()St = Text2.TextEnd SubPrivate Sub Trans(Number As Long)Dim L As Integer, I As Integer, S As StringL = Len(St)For I = 1 To LS = UCase(Mid(St, I, 1))If S &= &A& And S &= &F& ThenNum = Asc(S) - Asc(&A&) + 10ElseIf S &= &0& And S &= &9& ThenNum = Val(S)ElseMsgBox &输入错误,请重新输入!!&Exit SubEnd IfNumber = Number + Num * N ^ (L - I)Next IText3.Text = CStr(Number)End Sub15. 编写一个裁判评分程序,设共有裁判六人,评分满分为10分,除去一个最高分再除去一个最低分,剩余的评分的平均值即为选手得分。Option ExplicitOption Base 1Private Sub Command1_Click()Dim A(6) As Single, I As Integer, Aver As SingleFor I = 1 To 6If Text1(I - 1) && && And IsNumeric(Text1(I - 1)) ThenA(I) = Text1(I - 1)ElseMsgBox &数据错误,重输!&Text1(0).SetFocusEnd IfNext ICall Sort(A, Aver)Text2.Text = AverEnd SubPrivate Sub Sort(AA() As Single, Av As Single)Dim I As Integer, J As Integer, temp As SingleDim sum As Single- 39 -For I = 1 To UBound(AA) - 1For J = I + 1 To UBound(AA)If AA(I) & AA(J) Thentemp = AA(I)AA(I) = AA(J)AA(J) = tempEnd IfNext JNext IFor I = 2 To UBound(AA) - 1sum = sum + AA(I)Next IAv = sum / 4End SubPrivate Sub Command2_Click()Dim A(6) As Single, I As Integer, Aver As Single For I = 1 To 6Text1(I - 1) = &&Next IText2.Text = &&End SubPrivate Sub Command3_Click()Unload MeEnd Sub16. 编写程序求下面数列的和,计算结果精确到an≤10-5为止。y?12?12?4?12?4?6?????12?4?6?????2n????式中n=1,2,3,…Option ExplicitPrivate Sub Command1_Click()Dim y As SingleCall Shuli(y)Text1 = &y=& & yEnd SubPrivate Sub Shuli(x As Single)Dim n As Integer, t As Single, I As Integer t = 1Don = n + 1For I = 1 To n- 40 -51VB教材习题答案_vb答案t = t / (2 * I)x = x + tNext ILoop Until t &= 0.00001End SubPrivate Sub Command2_Click()Unload MeEnd Sub17. 编写程序求下面级数的和,计算结果精确到第n项的值小于等于10-5为止。x2x3x51?22?3+3?5+???+xfns=x++f+???,0&x&1n?1?fn其中:?1f?,n?1n=?1,n?2??fn?1?fn?2,n?2Option ExplicitPrivate Sub Command1_Click()Dim x As Single, s As SingleIf Text1 && 0 And IsNumeric(Text1) Thenx = Val(Text1)ElseMsgBox &非法数据,重输!!!&Text1.SetFocusEnd Ifs = fun1(x)Text2 = Str(s)End SubPrivate Sub Command2_Click()Text1 = &&: Text2 = &&End SubPrivate Sub Command3_Click()Unload MeEnd SubPublic Function fun1(y As Single) As SingleDim n As Integer, p As Single, t As Singlep = y: n = 1Don = n + 1t = y ^ fun2(n + 1) / fun2(n) / fun2(n + 1)- 41 -p = p + tLoop Until t &= 0.00001fun1 = pEnd FunctionPrivate Function fun2(ByVal m As Integer) As IntegerDim i As IntegerIf m = 1 Or m = 2 Thenfun2 = 1Elsefun2 = fun2(m - 1) + fun2(m - 2)End IfEnd Function18. 编写二分插入排序程序。(算法提示:在直接插入排序中是采用顺序查找法查找插入位置,而二分插入排序是采用二分法在已排序的子数列中查找插入位置,其他处理与直接插入排序相同。)Option ExplicitOption Base 1Private Sub Form_Click()Dim Number(10) As Integer, I As IntegerRandomizePrint &生成数组元素:&For I = 1 To 10Number(I) = Int(Rnd * 100) + 1Print Number(I);Next IPrintPrint &排序后:&Call Insertion(Number)For I = 1 To 10Print Number(I);Next IPrintEnd SubPrivate Sub Insertion(Sort() As Integer)Dim I As IntegerDim Left As Integer, Right As IntegerDim Mid As Integer, Key As IntegerDim Ub As Integer, Temp As IntegerUb = UBound(Sort)For I = 2 To UbLeft = 1: Right = I - 1Temp = Sort(I)Do While Left &= RightMid = (Left + Right) / 2- 42 -If Sort(Mid) & Sort(I) Then Left = Mid + 1 ElseRight = Mid - 1 End IfLoopKey = IDo Until Key = LeftSort(Key) = Sort(Key - 1) Key = Key - 1LoopSort(Key) = TempNext IEnd Sub- 43 -欢迎您转载分享:
更多精彩:

我要回帖

更多关于 有一个两位正整数 的文章

 

随机推荐