一、选择题 (1) 在深度为5的满二叉树中,叶子结点的个数为 A.32 B.31 C.16 D.15 解析: 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个叶子结点。这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。 (2) 若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是 A.bdgcefha B.gdbecfha C.bdgaechf 解析: 前序遍历的第一个结点a为树的根结点;中序遍历中a的左边的结点为a的左子树,a右边的结点为a的右子树;再分别对a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。 (3) 一些重要的程序语言(如C语言和Pascal语言) 允许过程的递归调用。而实现递归调用中的存储分配通常用 A.栈 B.堆 C.数组 D.链表 解析: 一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。 (4) 软件工程的理论和技术性研究的内容主要包括软件开发技术和 A.消除软件危机 B.软件工程管理 C.程序设计自动化 D.实现软件可重用 解析: 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。 (5) 开发软件时对提高开发人员工作效率至关重要的是 A.操作系统的资源管理功能 B.先进的软件开发工具和环境 C.程序人员的数量 D.计算机的并行处理能力 解析: 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。 (6) 在软件测试设计中,软件测试的主要目的是 A.实验性运行软件 B.证明软件正确 C.找出软件中全部错误 D.发现软件错误而执行程序 解析: 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。 (7) 数据处理的最小单位是 A.数据 B.数据元素 C.数据项 D.数据结构 解析: 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。 (8) 索引属于 A.模式 B.内模式 C.外模式 D.概念模式 解析: 内模式(Internal SchemA.又称物理模式(Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。 (9) 下述关于数据库系统的叙述中正确的是 A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余 C.数据库系统中数据的一致性是指数据类型一致 D.数据库系统比文件系统能管理更多的数据 解析: 数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。 (10) 数据库系统的核心是 A.数据库 B.数据库管理系统 C.模拟模型 D.软件工程 解析: 数据库管理系统(Database Management System,简称DBMS) 是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。
(11) 下列说法错误的是 A.窗体文件的扩展名为.frm B.一个窗体对应一个窗体文件 C.Visual Basic中的一个工程只包含一个窗体 D.Visual Basic中一个工程最多可以包含255个窗体 解析:Visual Basic中的一个工程可以包括一个或多个窗体,最多不超过255个窗体,因此选项D)是正确的,选项C)是不正确;窗体述文件的扩展名是.frm,所以选项A)是正确的;一个窗体对应于一个窗体文件,所以选项B)也是正确的。 (12) 下列四组控件属性中,属性值的类型不相同的一组是 A.Label控件的Enabled属性与TextBox控件的Enabled属性 B.OptionButton控件的Value属性与CheckBox控件的Value属性 C.Command控件的Default属性与Command控件的Cancel属性 D.Command控件的Visible属性与Form控件的Visible属性 解析:CheckBox控件的Value属性取值是0、1或2;OptionButton控件的Value属性取值是True或False。 (13) 下列方法中不能退出Visual Basic的是 A.按Alt+Q组合键 B.按下Alt+F组合键,然后按Esc键 C.打开"文件"菜单,执行"退出"命令 D.按F10键,然后按F键,再按X键 解析:Alt+Q为退出Visual Basic的快捷键,所以选项A)是正确的;F10为激活菜单栏的快捷键,激活菜单栏,然后按F键选择"文件"菜单,再按X键选择"退出"命令按钮,可退出,所以选项D)正确;Alt+F为激活"文件"菜单的快捷键,打开快捷菜单后,相应的快捷命令在各命令选项后都有提示,所以选项B)不正确;打开"文件"菜单,执行"退出"命令,也是可以的,所以选项C)正确。 (14) 任何控件都有的属性是 A.BackColor B.Caption C.Name D.BorderStyle 解析:本题的四个选项中只有选项C)Name属性适用于所有控件,其他只是适用于部分控件。如:对话框控件就没有BackColor和BorderStyle属性。 (15) 可以实现从键盘输入一个作为双精度变量a的值的语句是 A.a=InputBox() B.a=InputBox("请输入一个值") C.a=Val(InputBox("请输入一个值") ) D.a=Val(InputBox() ) 解析:InputBox函数的格式为: InputBox(prompt[,default][,xpos,ypos][,helpfile,context]) 其中prompt是一个字符串,用于提示用户输入,是在对话框中显示的信息,不可省略,故选项A)和选项D)不正确;Val(字符串)函数的功能是把自变量中的第一个字符串转换为数值,其中的数值是一个双精度的实数,所以正确答案为选项C);选项B)没有类型转换符,不正确。 (16) 下列符号常量的声明中,不合法的是 A.Const a As Single=1.1 B.Const a="OK" C.Const a As Double=Sin(1) D.Const a As Integer="12" 解析:在用Const定义符号常量时,格式是:Const 常量名 = 表达式 [,常量名=表达式]……,其中常量名中可以用类型说明符,需要注意的是,"表达式"中不能使用字符串连接运算符、变量及用户定义的函数或者内部函数。 (17) 在Visual Basic中,要强制用户对所用的变量进行显式声明,这可以在哪里设置? A."属性"对话框 B."程序代码"窗口 C."选项"对话框 D.对象浏览器 解析:要强制用户显式声明变量,可以单击"工具"菜单下的"选项"命令,打开"选项"对话框,在"编辑器"选项卡下,选中"要求变量声明"复选框即可。这样在每次新建文件时,Visual Basic将Option Explicit(选择显式)自动添加到全局变量或模块级变量的声明部分,或者也可以在声明部分直接输入这条语句。这样就必须在使用变量前声明,否则将会发生出错信息;属性窗口是用来设置对象属性的;程序代码窗口是用来编辑事件过程的。 (18) 下列语句中,获得列表框List1中项目个数的语句是 A.x=List1.ListCount B.x=ListCount C.x=List1.ListIndex D.x=ListIndex 解析:List控件的ListCount属性返回列表部分项目的个数。 (19) 要获得当前驱动器应使用驱动器列表框的属性是 A.Path B.Drive C.Dir D.Pattern 解析:驱动器控件常用的属性是Drive,返回当前驱动器号。 (20) 如果将文本框的MaxLength属性设置为0,则文本框中的字符不能超过 A.8K B.16K C.32K D.64K 解析:对于文本框的MaxLength属性的设置如下:MaxLength属性用来设置允许在文本框中输入的最大字符数,如果将其设置为0,则在文本框中输入的字符不能超过32K,所以选项C)是正确的。
(21) 当在滚动条内拖动滚动块时触发 A.KeyUp事件 B.KeyPress事件 C.Scroll事件 D.Change事件 解析:本题考查的是滚动条事件的应用。在Visual Basic中,与滚动条有关的事件是Scroll和Change事件。当在滚动条内拖动滚动块时触发Scroll事件;改变滚动框的位置后,将触发Change事件。Scroll事件用于跟踪滚动条中的动态变化,Change事件用于得到滚动条的最后的值。 (22) 设有声明语句 Dim b(-1 To 10, 2 To 9, 20) As Integer 则数组b中全部元素的个数 A.2310 B.2016 C.1500 D.1658 解析:在本题中,Dim b(-1 To 10, 2 To 9, 20)As Integer定义了一个三维数组,如果没有指定下界,缺省值是0,所以计算数组中的个数就容易了,表达式为:(10-(-1)+1)×(9-2+1)×(20-0+1)=2016,所以选项B)是正确答案。 (23) 设在窗体上有个文本框,然后编写如下的事件过程: Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Const Alt=4 Const Key_F2=&H71 altdown%=(Shift And Alt) > 0 f2down%=(KeyCode=Key_F2) If altdown% And f2down% Then Text1.Text="BBBBB" End If End Sub 上述程序运行后,如果按 【Shift+F2】 ,则在文本框中显示得是 A.Alt+F2 B.BBBBB C.随机出几个数 D.文本框平均内容无变化 解析:此题是有关KeyDown事件的题目,KeyDown是当一个键被按下时所产生的事件,而KeyUp是松开被按的键时产生的事件,如果要判断是否按下了某个转换键,可以用逻辑运算符And。例如:先定义了下面3个符号常量:Const Shift=1,Const Ctrl=2,Const Alt=4;然后用下面的语句判断是否按下Shift、Ctrl、Alt键; 如果Shift And Shift>0 ,则按下了Shift键; 如果Shift And Ctrl >0 ,则按下了Ctrl键; 如果Shift And Alt>0 ,则按下了Alt键; 这里的Shift时KeyDown的第二个参数;此事件过程中的If后的条件语句如果为真,则是按下了Alt+F2,而本题目中是按下了Shift+F2,所以不执行Then语句,即文本框的内容无变化。 (24) 设已经在"菜单编辑器"中设计了窗体的快捷菜单,其顶级菜单为Bs,取消其"可见"属性,运行时,在以下事件过程中,可以使快捷菜单响应鼠标右键菜单的是 A.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button=2 Then PopupMenu Bs, 2 End Sub B.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) PopupMenu Bs End Sub C.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) PopupMenu Bs,0 End Sub D.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If (Button=vbLeftButton) Or (Button=vbRightButton) Then PopupMenu Bs End Sub 解析:在Visual Basic中,允许出现快捷菜单,对用户来说,提供了很大的方便,一般来说,菜单都在窗口的顶部,有时,用户需要执行菜单中的某一命令,就得把鼠标移动到窗口顶部,然后打开菜单选择命令,这对用户来说,会觉得麻烦。而快捷菜单并不需要到窗口的顶部来打开,只要单击鼠标右键,就会弹出菜单。设计快捷菜单仍然可以用Visual Basic中提供的菜单编辑器,只要把某个菜单设置成隐藏就可以了,实际上,不管是在窗口顶部菜单条上显示的菜单还是隐藏的菜单,都可以用PopupMenu方法把它们作为快捷菜单在运行时显示出来。PopupMenu方法的使用形式如下: [对象]. PopupMenu 菜单名,标志,x,y 其中,x,y是提供菜单显示的位置;标志:指定快捷菜单的行为。 (25) 下列程序的功能是调用字体对话框来设置文本框字体,单击按钮弹出对话框后,按Cancel键退出对话框,则 Private Sub Command1_Click() CommonDialog1.CancelError=True CommonDialog1.Flags=cdlCFEffects Or cdlDFBoth CommonDialog1.Action=4 CommonDialog1.ShowFont Text1.Font.Name=CommonDialog1.FontName Text1.Font.Size=CommonDialog1.FontSize Text1.Font.Bold=CommonDialog1.FontBold Text1.Font.Italic=CommonDialog1.FontItalic Text1.Font.Underline=CommonDialog1.FontUnderline Text1.FontStrikethru=CommonDialog1.FontStrikethru Text1.ForeColor=CommonDialog1.Color End Sub A.Text1的字体不发生变化 B.Text1的字体发生变化 C.Text1的字体和颜色发生变化 D.程序出错! 解析:对话框的Cance1Error属性的作用是指示当选取"取消"按钮时是否出错,本题目中该属性为True,因此按Cnce1键后将导致程序出错,一般应该在程序中添加对错误的处理。
(26) 要将名为MyForm的窗体显示出来,正确的使用方法是 A.MyForm.Show B.Show.MyForm C.MyForm Load D.MyForm Show 解析:本题考核窗体处理时的使用方法或语句的格式。Visual Basic中方法和语句的书写格式不同。 方法的格式为:对象.方法 语句的格式为:语句 对象名 使用方法要先写对象名,要用"."运算符;使用语句要先写语句,语句后要空一格,后跟对象名。 (27) 下列程序段的执行结果为 a=5 For k=1 To 0 a=a + k Next k Print k; a A.-1 6 B.-1 16 C.1 5 D.11 21 解析:此题是考查For循环结构语句。 For循环有两种格式,其中一种格式是: For 循环变量=初值 To 终值 Step[步长] 语句 [Exit For] 语句 Next[循环变量] 此循环语句的执行过程为:"循环变量"首先取得"初值",检查是否超过"终值",如果超过,就一次也不循环而跳出循环,属于"先检查后执行"的类型。现在来看程序段,For k=1 To 0中,初值为1,终值为0,显然当"循环变量"首先取得"初值"1,检查后超过"终值"0,所以一次也不执行,即最后执行Print时,k=1,a=5。 (28) 下列程序段的执行结果为 a=3 b=1 For I=1 To 3 f=a + b a=b b=f Print f Next I A.4 3 6 B.4 5 9 C.6 3 4 D.7 2 8 解析:本题考查的是For循环结构语句,现在看程序段是如何运行的。 开始a=3,b=1。For循环中步长缺省值为1,循环变量I的初值为1,终值为3,所以此循环结构可以循环3次。 第一次循环后,结果为:f=4,a=1,b=4 第二次循环后,结果为:f=5,a=4,b=5 第三次循环后,结果为:f=9,a=5,b=9 所以每循环一次,便输出f当前值,循环3次即便输出3个f值分别为4,5,9。 (29) 下列程序段的执行结果为 I=9 x=5 Do I=I + 1 x=x + 2 Loop Until I >=7 Print "I="; I Print "x="; x A.I=4x=5 B.I=7x=15 C.I=6x=8 D.I=10x=7 解析:此题用的是Do循环结构,其格式为: Do [语句块] [Exit Do] Loop Until 循环条件 此循环由于"先执行后检查",所以至少执行一次。本题中,程序运行到循环条件I>=7的值为True,才停止。所以当程序结束运行后I=10,x=7。 (30) 以下程序段运行时从键盘上输入字符"-",则输出结果为 op$=InputBox("op=") If op$="+" Then a=a + 2 If op$="-" Then a=a - 2 Print a A.2 B.-2 C.0 D.+2 解析:此题是根据用户的输入计算变量a的值并显示。当输入字符"-"时,第一个If条件不成立,跳过,而第二个If语句条件满足,因此执行a=a-2,使a=-2。所以选项B)是正确答案。
(31) 以下程序段的输出结果为 Dim l, a(10) , p(3) k=5 For i=0 To 10 a(i) =i Next i For i=0 To 2 p(i) =a(i (i + 1) ) Next i For i=0 To 2 k=k + p(i) 2 Next i Print k A.20 B.21 C.56 D.32 解析:第一个循环对数组a()进行赋值,第二个循环对数组p()进行赋值,第三个循环对k进行累加,k的初值等于5,第一次循环k=k+p(0) *2=5,……,第三次循环k=k+p(2) *2=21并输出,所以选项B)正确。 (32) 下列程序的执行结果为 Private Sub Command1_Click() Dim x As Integer, y As Integer x=12: y=20 Call Value(x, y) Print x; y End Sub Private Sub Value(ByVal m As Integer, ByVal n As Integer) m=m * 2: n=n - 5 Print m; n End Sub A.20 12 20 15 B.12 20 12 25 C.24 15 12 20 D.24 12 12 15 解析:被调过程Value的两个参数m和n前面都有关键字"ByVal"修饰,即在主调过程用此过程时,实参与形参之间是以传值方式传递信息的,而当实参与形参以传值方式相结合时,形参的改变并没有影响到实参,单单就这一点来说,当程序代码执行主调过程中的Print x;y语句时,x和y的值应不变,还是12和20,这样就能够排除选项A)和选项B)了。当主调过程调用被调过程时,把实参x、y的值分别传给形参m和n,这就是说此时形参m值为12,n值为20,执行被调过程中的m = m * 2: n = n - 5语句后,m值为24,n值为15,所以Print m; n后, 程序输出的结果为24和15。最后程序输出的结果如选项C)所示。
(33) 在窗体上画一个命令按钮,然后编写下列程序 Private Sub Command3_Click() Tcl 2 Tcl 3 Tcl 4 End Sub Sub Tcl(a As Integer) Static x As Integer x=x + a Print x; End Sub 程序运行后,单击命令按钮,输出结果为 A.2 3 4 B.2 5 9 C.3 5 4 D.2 4 3 解析:在过程TCL中,将Integer型变量x定义为静态变量(Static),Static语句的格式与Dim语句完全一样,但Static语句只能出现在事件过程,Sub过程或Function过程中,在过程中的Static变量只有局部的作用域,即只能在本过程中可见,但可以和模块级变量传递,即使过程结束后,其值仍能保留。Tcl过程是将变量a的值加上x赋给x,然后输出x的值;第一次调用Tcl过程时,x未赋值,默认为0,所以输出结果为2,第二次调用Tcl过程时,因为x为静态变量,所以它的值为上次调用后的值,即为2,加上a后,x的值变为5,输出结果为5,同理,第三次调用后输出结果为9。 (34) 下面程序段,运行后的结果是Private Sub Command1_Click() Dim b%(1 To 4) , i%, t# For i=1 To 4 b(i) =i Next i t=Tof(b() ) Print "t="; t, End Sub Function Tof(a() As Integer) Dim t#, i% t=1 For i=2 To UBound(A. t=t * a(i) Next i Tof=t End Function A.t=18 B.t=24 C.t=30 D.t=32 解析:程序开始调用循环语句对数组b()赋值,b(i) = I,且数组b的上下界分别为1和4;接着将数组b()作为对象,调用Tof过程,在Tof过程中,定义了两个变量t和I,I作为For循环的循环变量,初始值为2,终值为数组b的上界;循环体为"t = t * a(i) ",即将b(i)的值乘以t,然后在赋给t,当循环结束后,程序返回的就是数组b中除第一个元素以外所有元素值的乘积,此题的结果为2×3×4=24,输出结果为t=24。 (35) 单击按钮时,以下程序运行后的输出结果是 Private Sub Command1_Click() Dim x As Integer, y As Integer, z As Integer x=1: y=2: z=3 Call God(x, x, z) Print x; x; z Call God(x, y, y) Print x; y; y End Sub Private Sub God(x As Integer, y As Integer, z As Integer) x=3 * z + 1 y=2 * z z=x + y End Sub A.6 6 12 7 11 11 B.8 5 10 5 11 11 C.9 6 12 9 10 15 D.8 10 10 5 9 10 解析:从整体上看,可得主调过程将两次调用过程God后,实参的值将随形参变化而变化,现在分析一下这两次调用实参和形参是怎么变化的:第一次调用被调过程God,主调过程把实参x,x和z的地址分别传给形参x,y和z,此时形参x,y和z值分别为1,1和3,执行语句x = 3 * z+1后,形参x值变为10,此时相对应的实参x也变为10,执行语句y = 2 * z后,形参y值变为6,则相对应的实参x值变为6。执行z = x + y后,形参z值应为12,当然这次调用后,程序代码输出的数值为6,6,12;第二次调用被调过程God,主调过程把实参x,x和y的地址分别传给形参x,y和z。应注意,此时实参x的值为6而不是1,所以此时形参x,y和z值分别为6,2和2,执行语句x = 3 * z+1后,形参x值为7,相对实参x值也相应的变为7。执行语句y = 2 * z后,形参y值变为4,相应的实参y值也变为4,执行z = x + y后,形参z值变为11,相应的实参y的值变为11,而形参y和z的地址相同,所以最后它们值都应为11,所以此次调用后,输出的数值为7,11和11。
二、填空题
(1) 在树结构中,树根结点没有 【1】 。
解析: 在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。
(2) Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向 【2】 的设计方法。
解析: 结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Structured analysis),面向数据结构的Jackson方法(JSD-Jackson system development method) 和面向数据结构的结构化数据系统开发方法(DSSD-Data structured system development method)。
(3) 面向对象的模型中,最基本的概念是对象和 【3】 。
解析: 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。
(4) 软件设计模块化的目的是 【4】 。
解析: 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。
(5) 数据模型按不同应用层次分成3种类型,它们是概念数据模型、 【5】 和物理数据模型。
解析:数据模型按不同层次分成概念数据模型、逻辑数据模型和物理数据模型三类。
(6) 在Visual Basic的立即窗口内输入以下语句 X=65 ?Chr$(X) 在窗口中显示的结果是 【6】 。
解析: Chr$()是求ASCII字符的函数,格式是Chr$(表达式),其中"表达式"应该是合法的ASCII码值,Chr$()函数把"表达式"的值转换为相应的ASCII字符。本题中X=65对应的ASCII码是字符A,所以显示的结果应该是A。
(7) 下列程序是判断一个整数(>=3) 是否为素数,请补充完整。 Dim n As Integer n=InputBox("请输入一个整数(>=3) ") k=Int(Sqr(n) ) i=2 swit=0 While i <=k And swit=0 If n Mod i=0 Then 【7】 Else 【8】 End If Wend If swit=0 Then Print n; "是一个素数。" Else Print n; "不是一个素数。" End If
解析:素数是只能被1和本身整除的正整数,在本题的程序中,swit是一个标志变量,如果"swit=0",则表示n不能被整除;如果能被一个整数整除,则swit变为1; While循环执行的条件有两个,一个是"I<=k",另一个是"swit=0",必须两个条件同时成立才执行循环,当I>k时,显然不必再检查n是否能被I整除;而如果"swit=1",则表示n已被整除,肯定不是素数,也不必检查了。 只有"I<=k"和"swit=0"两者同时成立时才需要检查"n是否为素数",循环只有一个判断操作,即判断n能否被I整除,如果不能,则I=I+1。以便为下一次判断作准备。
(8) 下面程序是用来打印九九乘法表的,请补充完整。 Dim i As Integer, j As Integer, Str1$ Str1="" For i=1 To 9 For j=1 To 9 If 【9】 Then Str1=Str1 + Str$(j) + "×" + Str$(i) + "=" + Str$(Val(i j) ) Else Str1=Str1 & Chr(13) 【10】 End If Next j Next i Print Str1
解析: (1) Exit语句总是出现在If语句或Select Case语句内部,而If语句或Select Case语句在循环内嵌套,用Exit语句中断循环。函数首先定义了两个Integer型变量i、j,并将空格赋给Str1;第一个For循环的变量I从1到9步长为1,第二个循环的变量i也是从1到9步长为1,循环体为选择结构,它是用来输出i*j的值,所以j的值应该小于此时i的值,那么If的判断语句为j<=i,当满足条件时执行Then后面的语句,即输出i*j的值,如果不满足执行Else后面的语句,并跳出内循环。
(9) 在窗体上有一个命令按钮,然后编写如下程序: Function Trans(ByVal num As Long) As Long Dim k As Long k=1 Do While num k=k * (num Mod 10) num=num \ 10 Loop Trans=k Print Trans End Function Private Sub Command1_Click() Dim m As Long Dim s As Long m=InputBox("请输入一个数") s=Trans(m) End Sub 程序运行时,单击命令按钮,在输入对话框中输入"789",输出结果为 【11】 ,在输入对话框中输入"987"输出 【12】 ,在输入对话框中输入"879",输出结果为 【13】 。
解析: 关键字ByVal用来实现传值,也就是说在定义通用过程时,如果形参前面有关键字Byval,则该参数用传值方式传递,否则用传址方式传递;在Sub过程中,先将输入的"456"赋给变量m,m作为参数,调用Trans过程;在Trans过程中以num作为Do While的循环条件;在循环体中,调用Mod函数,将num的个位数字与k相乘,然后赋给k,第一次循环时,num的值是789,所以k的值为9,执行num = num \ 10后,num的值为78,循环三次后,num变为0,退出循环,k值等于9×8×7=504,并将k的值作为返回值;当输入"987"或"879"时执行相同的操作,结果都为504。可以看出,此程序可用于求一个数值各位上数值的乘积。
(10) 下面程序的功能是产生10个小于100(不含100) 的随机正整数,并统计其中5的倍数所占比例,但程序不完整,请补充完整。 Sub PR() Randomize Dim a(10) For j=1 To 10 a(i) =Int( 【14】 ) If 【15】 Then k=k + 1 Print a(j) Next j Print Print k / 10 End Sub
解析: 小于100的随机正整数用(99 * Rnd)+ 1来表示;求倍数用取模来表示,即a(j) Mod 5 = 0,用k作计数器,累计计算能被5整除的数的个数。
|