vb习题集 - 图文

更新时间:2024-01-17 13:22:01 阅读量: 教育文库 文档下载

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

习 题 一

1 1选择题

1.Visual Basic是一种面向对象的可视化程序设计语言,它以结构化Basic语言为基础,

采取了( )的编程机制和运行机制。

(A) 事件驱动 (B)按过程顺序执行 (C) 从主程序开始执行 (D) 按模块顺序执行 2. 在VisualBasic中最基本的对象是( ),它是应用程序的基石,是其他控件最基

本的容器。

(A)文本框 (B)命令按钮 (C)窗体 (D)标签 3. 多窗体程序是由多个窗体组成。在缺省情况下,VB在应用程序执行时,总是把( )

指定为启动窗体。

(A) 不包含任何控件的窗体 (B)设计时的第一个窗体 (C) 包含控件最多的 (D)命名为Form1的窗体 4. 有程序代码如下: Textl.Text=\Basic\。则:Textl、Text和\Basic\

分别代表( )。

(A)对象,值,属性 (B)对象,方法,属性 (C)对象,属性,值 (D)属性,对象,值 5. Visual Basic是一种面向对象的程序设计语言,( )不是面向对象系统所包含的

三要素。

(A)变量 (B)事件 (C)属性 (D)方法

6. Visual Basic的一个应用程序至少包含一个( )文件,该文件存储窗体上使用

的所有控件对象和有关的 ( )、对象相应的( )过程和( )代码。 (A)模块、方法、事件、程序 (B)窗体、属性、事件、程序 (C)窗体、程序、属性、事件 (D)窗体、属性、事件、模块 7. 以下不属于Visual Basic的工作模式是( )模式。

(A)编译 (B)设计 (C)运行 (D)中断 8. 保存新建的工程时,默认文件夹是( )。

(A)MyDocuments (B)VB98 (C) \ (D)Windows

9. 要使Print方法在Form_Load事件中起作用,要对窗体的( )属性进行设置。

(A)BackColor (B)ForeColor (C)AutoRedraw (D) Caption 10. 使标签控件显示时不覆盖其背景内容,要对( )属性进行设置。

(A)BackColor (B)BorderStyle(C)ForeColor (D)BackStyle 11. 使命令按钮不可操作,要对( )属性设置。

(A)Enabled (B)Visible (C)BackColor (D)Caption 12. 文本框没有( )属性。

(A)Enabled (B)Visible (C)BackColor (D)Caption 13. 不论何控件,共同具有的是( )属性。

(A)Text (B)Name (C)ForeColor (D)Caption 14. 要使Form1窗体的标题栏显示“欢迎使用VB”,以下( )语句是正确的。

(A)Forml.Caption=“欢迎使用VB” (B)Forml.Caption='欢迎使用VB' (C)Forml.Caption=欢迎使用VB (D)Forml.Caption=\欢迎使用VB\

1

15. 要使某控件在运行时不可见,应对( )属性进行设置。

(A)Enabled (B)Visible (C)BackColor (D)Caption

16. 要使窗体在运行时不可改变窗体的大小和没有最大化和最小化按钮,只要对下列

( )属性设置就有效。

(A)MaxButton (B)BorderStyle(C)Width (D)MinButton 17. 当运行程序时,系统自动执行启动窗体的( )事件过程。

(A)Load (B)Click (C)UnLoad (D)GotFocus 18. 文本框的ScrollBars属性设置了非零值,却没有效果,原因是( )。

(A)文本框中没有内容

(B)文本框的MultiLine属性为False (C)文本框的MultiLine属性为True (D)文本框的Locked属性为True

19. 要判断在文本框中是否按了Enter键,应利用文本框的( )事件。

(A)Change (B)KeyDown (C)Click (D)KeyPress 20. 如果文本框的Enabled属性设为False,则( )。

(A)文本框的文本将变成灰色,并且此时用户不能将光标置于文本框上

(B)文本框的文本将变成灰色,用户仍然能将光标置于文本框上,但是不能改变文本框中的内容

(C)文本框的文本将变成灰色,用户仍然能改变文本框中的内容

(D)文本框的文本正常显示,用户能将光标置于文本框上,但是不能改变文本框中的内容

21. 当需要上下文帮助时,选择问题中的对象类型、属性名称、保留字等关键词,然后

按( )键,就可出现MSDN窗口及显示对应内容的帮助信息。 (A)Help (B)F10 (C)Esc (D)F1

22. 在Visual Basic 6.0集成开发环境中,运行Visual Basic程序的快捷键

是( )。

(A) F1 (B)F2 (C)F4 (D)F5

23. 在VisualBasic 6.0中,下列( )控件对象没有Caption属性。

(A)文本框 (B)命令按钮 (C)窗体 (D)标签 24. 下列可以打开工程资源管理器的快捷键是( )。

(A) Shift+F7 (B) Ctrl+G (C) Ctrl+R (D) Ctrl+N 25. 有程序代码如下: Textl.FontBold=True。则:Textl、FontBold和True

分别代表( )。

(A)对象,值,属性 (B)对象,方法,属性 (C)对象,属性,值 (D)属性,对象,值 26. 下列操作不能打开属性窗口的是( )

(A)按F4键

(B)在对象上右击,弹出快捷菜单,选择“属性窗口”命令 (C)单击“属性窗口”按钮(在工具栏上) (D)双击对象

27. 在Visual Basic 6.0的“文件”菜单中,( )命令能够把新的或已有

的工程添加到当前打开的工程组中。

2

(A)新建工程 (B)打开工程 (C)保存工程 (D)添加工程 28. 在Visual Basic 6.0 中,可以通过( )模拟屏幕的小图像来布置应

用程序。

(A))窗体设计器 (B)快捷菜单 (C)立即窗口 (D)窗体布局窗口 29. 按下键盘上的键,对文本框中已有的内容进行编辑时,发现不起作用,可

能是将( )属性设置了True。

(A)Enabled (B)Visible (C)locked (D)FontItalic 1.2填空题

1. 当进入VB集成环境,发现没有显示“工具箱”窗口,应选择( )菜单的( )

选项,使“工具箱”窗口显示。

2. 要使新建工程时,在模块的“通用声明”段自动加入Option Explicit语句,应对

( )菜单的( )的( )选项卡进行相应选项的选择。 3. 对象的属性是指( )。 4. 对象的方法是指( )。

5. 对于新建立的工程,如果想使窗体上的所有控件都具有相同的字体格式,可以利用

( )的( )属性统一进行设置。

6. 将文本框的ScrollBar属性设置为2(有垂直滚动条),但没有滚动条显示,是由于

( )属性的值设置为了False的原因。

7. 当对命令按钮的Picture属性装入.bmp图形文件后,选项按钮上并没有显示所需的

图形,原因是没有将( )属性设置为1(Graphical)。 8. 某工程包括Form1、Form2两个窗体,默认启动窗体为Form1。通过( )菜单的( )

的( )选项卡,可将启动窗体设置为Form2。在程序中若要显示Forml窗体,则执行( )语句。

9. 在文本框中,通过( )属性能获得当前插入点所在的位置。

10. 按下键盘上的按键,对文本框中已有的内容进行编辑时,发现不起作用,可能的原

因是将( )属性的值设置为了True。

11. 在窗体上已建立多个控件如Text1、Label1、Command1,若要使程序一运行焦点就定

位在Command1控件上,应将Command1控件的( )属性设置值为( )。

3

习题一 参考答案

1.1 选择题 1.A 2.C 3.B 4.C 5.A 6.B 7.A 8.B 9.C 10.D 11.A 12.D 13.B 14.D (说明:这是关于字符串常量的正确书写问题。A错误在于中文双引号;B错误在于单引号;C错误在于无引号。) 15.B 16.B 17.A

18.B 19.D (说明:在KeyPress事件中有一个参数KeyAscII,该参数的值就是用户输入字符的ASCII编码,通过判断该值是否等于13就可以知道用户是否按下了回车键。)

20.A 21.D 22.D 23.A 24.C 25.C 26.D 27.D 28.D 29.C

1.2 填空题

1. 视图 工具箱

2. 工具 选项 编辑器 3. 描述和反映对象特征的参数 4. 在面向对象的程序设计语言中,为程序设计人员提供的一种可以直接调用

的特殊过程和函数 5. Form Font 6. MuhiLine 7. Style

8. 工程 工程属性 通用 Form1.Show 9. SelStart 10. Locked

11. TabIndex 0

4

习 题 二

2.1选择题

1. 在一个语句内写多条语句时,每个语句之间用( )符号分隔。

(A), (B): (C) 、 (D) ;

2. 一句语句要在下一行继续写,用( )符号作为续行符。 (A)+ (B)— (C) _ (D)?? 3. 下面( )是合法的变量名。

(A)X_yz (B)123abc (C)integer (D)X—Y 4. 下面( )是不合法的整常数。

(A)100 (B)&O100 (C)&H100 (D)%100 5. 下面( )是合法的字符常数。

(A)ABC$ (B)\(C)’ABC’ (D)ABC 6. 下面( )是合法的单精度型变量。

(A)num! (B)sum% (C)xinte$ (D)mm# 7. 下面( )是不合法的单精度常数。

(A)100! (B)100.0 (C)1E十2 (D)100.0D+2 8. 表达式16/4—2^5*8/4MOD 5\\2的值为( )。

(A)14 (B)4 (C)20 (D)2 9. 数学关系3≤x<10表示成正确的VB表达式为( )。 (A)3<=x<10 (B)3<=x AND x<10 (C)x>=3 OR x<10 (D)3<=x AND <10

10. \\、 /、 Mod、 * 四个算术运算符中,优先级别最低的是( )。 (A) \\ (B) / (C)Mod (D)*

ab11. 与数学表达式3cd对应,VB的不正确表达式是( )。

(A)a*b/(3*c*d) (B)a/3*b/c/d (C)a*b/3/c/d (D)a*b/3*c*d 12. Rnd函数不可能为下列( )值。

(A)0 (B)1 (C)0.1234 (D)0.0005 13. Int(198.555*100+0.5)/100的值( )。

(A)198 (B)199.6 (C) 198.56 (D)200

14. 已知A$=\,则表达式Val(Left$(A$,4)十Mid$(A$,4,2))

的值为( )。

(A)123456 (B)123445 (C)8 (D)6

15. Print DateAdd(\,1,#1/30/2000#)语句显示的结果是( )。 (A)00-2-29 (B)00-2-28 (C)00-2-30 (D)00-1-31

16. 表达式DateDiff(\,#12/30/1999#,#1/13/2000#)的结果是( )。

5

(A)1 (B)11 (C)14 (D)99

17. 表达式Len(\程序设计ABC\)的值是( )。 (A)10 (B)14 (C)20 (D)17

18. 表达式LenB(\程序设计ABC\)的值是( )。 (A)10 (B)14 (C)20 (D)17 19. 下面正确的赋值语句是( )。

(A)x+y=30 (B)y=π*r*r (C)y=x+30 (D)3y=x

20. 为了给x, y, z三个变量赋初值1,下面正确的赋值语句是( )。 (A)x=l:y=l:z=l (B)x=l,y=l,z=l (C)x=y=z=1 (D)xyz=l

21. 赋值语句:a=123+MID(\执行后,a变量中的值是( )。 (A)“12334” (B)123 (C)12334 (D)157 22. 赋值语句:a=123 & MID(\执行后,a变量中的值是( )。 (A)“12334” (B)123 (C)12334 (D)157 23. 如下程序: e=30: f=20: Print e>f 该程序的执行结果是( )。

(A)1 (B)True (C)0 (D)False 24. 如果在立即窗口执行如下语句: a$=\

c$=b$ & ucase(mid(a,3,8)): print c 则输出结果是( )。

(A)DeleteFAVERATE (B)DELEThFAVERATE

(C)DeleteMYFAVERATE (D)MYFAVERATE 25. 下列选项中,合法的变量名是( )。

(A)5X_yz (B)d%a (C)Else (D)sum_3 26. 下列表达式中,不合法的是( )。

(A)C= \(B)C=1+2/3 (C)C= \(D)C=[3*7+6-5]/6 27. 下面( )是合法的字符常数。

(A)True$ (B)\(C)’True’ (D)True 28. 表达式64/2^3—4^2*8/4 MOD 7\\2的值为( )。

(A)4 (B)16 (C)6 (D)8 29. 数学关系5≤y<7表示成正确的VB表达式为( )。 (A)5<=y<7 (B)5<=y OR y<7 (C)y>=5 AND y<7 (D)5<=y AND <7

30. ^ 、 /、 Mod、 * 四个算术运算符中,优先级别最低的是( )。 (A) ^ (B) / (C)Mod (D)*

31. 为了给a,b两个变量赋初值2,下面正确的赋值语句是( )。 (A)a=2:b=2 (B)a=2,b=2

6

(C)a=b=2 (D)ab=2

2.2填空题

1. 在VB中,1234、123456&、1.2346E+5、1.2346D+5四个常数分别表示

( )、( )、( )、( )类型。

2. 整型变量x中存放了一个两位数,要将两位数交换位置,例如,13变成

31,实现的表达式是( )。 x?e3? ?ln(3x)的VB算术表达式为 3. 数学表达式sin15°x?y

( )。

a?b4. 数学表达式 的VB算术表达式为( )。

11 ?cdc?52

5. 表示x是5的倍数或是9的倍数的逻辑表达式为( )。 6. 已知a=3.5,b=5.0,c=2.5,d=True,则表达式:a>=0 AND a+c>b+3 OR NOT

d的值是( )。

7. Int(-3.5)、Int(3.5)、Fix(-3.5)、Fix(3.5)、Round(-3.5)、Round(3.5)

的值分别是( )、( )、( )、( )、( )、( )。

8. 表达式Ucase(Mid(\的值是( )。

9. 在直角坐标系中,(x,y)是坐标系中任意点的位置,用x与y表示在第一

或第三象限的表达式是( )。

10. 要以x x x x年x x月x x日形式显示当前机器内日期的Format函数表

达式为( )。

11. 计算离你毕业(假定毕业年月为2010年7月3日)还有多少个星期的函数

表达式是( )。

12. 表示s字符变量是字母字符(大小写字母不区分)的逻辑表达式为

( )。 2.3 编程题

1.利用InputBox输入三角形三条边的长度a, b, c,计算并显示三角形的面积。公式为: 面积=s(s?a)(s?b)(s?c),其中s=(a+b+c)/2

2.用InputBox输入一个正实数,用Print方法在一行上显示出它的平方和平方根、立方

和立方根,每个数保留三位小数,之间有间隔。

7

习题二 参考答案

2.1 选择题

1.B 2.C 3.A 4.D 5.B 6.A 7.D 8.B 9.B 10.C 11.D 12.B 13.C 14.B 15.A 该函数表示在当前日期按“m”月格式加一个月,本应该C,但这是不合法的日期。

16.C 17.A 18.C 19.C 20.A 21.D 22.A 23.B 24.A 25.D 26.D 27.B 28.C 29.C 30.C 31.A

2.2 填空题

1.整型、长整型、单精度型、双精度型 2.(x mod 10)*10+x\10

3.sin(15*3.14/180)+sqr(x+exp(3))/abs(x-y)-log(3* x)

4.(a+b)/(1/(c+5)—c*d/2) 5.x mod 5=0 or x mod 9=0 6.False

7. -4, 3, -3, 3, -4, 4 8.CDEF

9.x>0 And Y> 0 or x<0 And Y<0

10.Format(Date,”YYYY年mm月dd日”)

11.DateDiff(“d”, #1/1/2001#,Now)+1 12.DateDiff(“ww”,Now,#7/3/2004#) 13.UCase(s)>=”A” And UCase(s)<=”Z”

2.3 编程题

1.Private Sub Command1_Click() Dim a&, b&, c&, s#

a = InputBox(\请输入三角形a边的长度\ b = InputBox(\请输入三角形b边的长度\ c = InputBox(\请输入三角形c边的长度\ s = (a + b + c) / 2

Text1 = Sqr(s * (s - a) * (s - b) * (s - c)) End Sub

2.Private Sub Command1_Click()

Dim a#

a = InputBox(\请输入一个正实数\

Print a ^ 2, Sqr(a), a ^ 3, a ^ (1 / 3) End Sub

8

习 题 三

3.1 选择题

1. VB也提供了结构化程序设计的三种基本结构,三种基本结构是( )。 (A)递归结构、选择结构、循环结构 (B)选择结构、过程结构、顺序结构

(C)过程结构、输入、输出结构、转向结构 (D)选择结构、循环结构、顺序结构 2. 结构化程序由三种基本结构组成,下面属于三种基本结构之一的是( )。 (A)递归结构 (B)选择结构

(C)过程结构 (D)输入、输出结构 3. 下面程序段运行后,显示的结果是( )。

Dim x%

If x Then Print x Else Print x+1

(A)1 (B)0 (C)-1 (D)显示出错信息 4. 语句If x=1 Then y=1,下列说法正确的是( )。 (A)x=1和y=1均为赋值语句 (B)x=1和y=l均为关系表达式

(C)x=1为关系表达式,y=l为赋值语句 (D)x=1为赋值语句,y=l为关系表达式

??x?1,x??15. 用If语句表示分段函数f(x)??2,下列不正确的程序段是

??x?3,x?1( )。

(A)f=x*x+3 (B)If x>=1 Then f=sqr(x+1) If x>=1 Then f=sqr(x+1) If x<1 Then f=x*x+3 (C)If x>=1 Then f=sqr(x+1) (D)If x<1 Then f=x*x+3 _ Else f=x*x+3 Else f=sqr(x+1) 6. 计算分段函数值。

?0, x?0?1, 0?x?1? y??1?x?2?2, ??3, x?2 下面程序段中正确的是( )。

(A)If x<0 Then y=0 (B)If x>=2 Then y=3 If x=1 Then y=2 If x<2 Then y=2 If x>0 Then y=1 If x>=2 Then y=3 If x<0 Then y=0

9

(C)If x<0 Then (D)If x>=2 Then

y=0 y=3

ElseIf x>0 Then ElseIf x>=1 Then y=1 y=2

ElseIf x>1 Then ElseIf x>=0 Then y=2 y=1 Else Else y=3 y=0 End If End If 7. 下面程序段,显示的结果是( )。 Dim x

x=Int(Rnd)十5 Select Case x Case 5

Print”优秀” Case 4

Print“良好” Case 3

Print“通过” Case Else

Print“不通过” End Select

(A)优秀 (B)良好 (C)通过 (D)不通过 8. 下面程序段求两个数中的大数,( )不正确。

(A)Max=IIf(x>y,x,y) (B)If x>y Then Max=x Else Max=y (C)Max=x (D)If y>=x Then Max=y If y>=x Then Max=y Max=x

9. 在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() x=InputBox(\ Select Case x

Case 1,3

Print \分支 1\

Case Is >4

Print \分支 2\Case Else

Print \分支 \End Select

10

End Sub

程序运行后,如果在输入对话框中输入2,则窗体上显示的是

(A)分支1 (B)分支2 (C)Else分支 (D)程序出错 10. 以下Case语句中错误的是

(A)Case 0 To 10 (B)Case Is>10 (C)Case Is>10 And Is<50 (D)Case 3,5,Is>10

11. 在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() x = -5

If Sgn(x) Then y = Sgn(x ^ 2) Else

y = Sgn(x) End If Print y End Sub

程序运行后,单击命令按钮,窗体上显示的是

(A)-5 (B)25 (C)1 (D)-1

12. 在窗体上画一个名称为Text1的文本框,要求文本框只能接收大写字母的

输入。以下能实现该操作的事件过程是

(A)Private Sub Text1_KeyPress(KeyAscii As Integer)  If KeyAscii < 65 Or KeyAscii > 90 Then  MsgBox \请输入大写字母\ KeyAscii = 0  End If  End Sub

(B)Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)  If KeyCode < 65 Or KeyCode > 90 Then  MsgBox \请输入大写字母\ KeyCode = 0  End If  End Sub (C)Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

 If Asc(Text1.Text) < 65 Or Asc(Text1.Text) > 90 Then  MsgBox \请输入大写字母\ End If  End Sub

(D)Private Sub Text1_Change()

11

 If Asc(Text1.Text) > 64 And Asc(Text1.Text) < 91 Then  MsgBox \请输入大写字母\ End If  End Sub

13. 设a=6,则执行x=IIF(a>5,-1,0)后,x的值为

(A)5 (B)6 (C)0 (D)-1 14. 下列语句正确的是

(A)If A ≠ B Then Print \不等于 B\(B)If A <> B Then Printf \不等于 B\(C)If A <> B Then Print \不等于 B\(D)If A ≠ B Then Printf \不等于 B\15. 下面程序段执行结果为 x = Int(Rnd() + 4) Select Case x Case 5

Print \ Case 4

Print \ Case 3

Print \ Case Else

Print \

End Select

(A)excellent (B)good (C)pass (D)fail 16. 设a = \,b = \,c = \,d = \,执行语句x = IIf((a < b) Or (c > d), \

\后,x的值为

(A)a (B)b (C)A (D)B 17. 下列程序执行后,变量a的值为

Dim a, b, c, d As Single a = 100: b = 20: c = 1000 If b > a Then

d = a: a = b: b = d End If

If c > a Then

d = b: b = c: c = d End If

(A)0 (B)1000 (C)20 (D)100 18. 执行下面的程序段后,变量c的值为

a = 14 b = 30

Select Case b \\ 10 Case 0

12

c = a * 10 + b Case 1 To 9

c = a * 100 + b Case 10 To 99 c = a * 1000 + b End Select Print c

(A)363 (B)2548 (C)1430 (D)9875

3.2 填空题

1.下面程序运行后输出的结果是( )。 x=Int(Rnd)+3

If x^2>8 Then y=x^2+1 If x^2=9 Then y=x^2-2 If x^2<8 Then y=x^3 Print y

2.下面程序的功能是( )。

Dim n%,m%

Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii=13 Then

If IsNumeric(Text1.Text) Then Select Case Text1.Text Mod 2 Case 0

n=n+Text1.Text Case 1

m=m+Text1.Text End Select End If

Text1.Text=\ Text1.SetFocus End If End Sub

3.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框输入表达式,边输入,边统计,以输入回车符作为表达式输入结束,然后显示结果。 Dim count1%

Private Sub Text1_KeyPress(KeyAscii As Integer) If( )= \ count1=count1+1

ElseIf( )= \

13

( ) End If

If KeyAscii=13 Then If( )Then Print \左右括号配对\ Else If( )Then

Print\左括号多于右括号\;count1;\个\ Else

Print\右括号多于左括号\;-count1;\个\ End If End If End Sub

4. 输入文本框中若干字符,统计有多少个元音字母、有多少个其他字母,直

到按Enter键结束,并显示结果,大小写不区分。其中CountY中放元音字母个数,CountC中放其他字符数。 Dim CountY%,CountC%

Private Sub Textl_KeyPress(KeyAscii As Integer) Dim C$

C=( )

If \

Select Case( ) Case( ) CountY=CountY+1 Case( ) CountC=CountC+1 End Select End If

If( )Then

Print \元音字母有\;CountY;\个\ Print\其他字母有\;CountC;\个\ End If End Sub 3.3 编程题

1. 输入三角形的三条边a,b,c的值,根据其数值,判断能否构成三角形。

若能,还要显示三角形的性质:等边三角形、等腰三角形、直角三角形、任意三角形。

2. 输入一年份,判断它是否为闰年,并显示有关信息。判断闰年的条件是:

年份能被4整除但不能被100整除,或者能被400整除。

14

习题三 参考答案

3.1 选择题 1.D 2.B

3.A x没有赋值,默认为0。而在VB中,0作为逻辑常量False,非0作为True。

4.C 5.C 6.D 7.A 8.D 9.C 10.C 11.C 12.A 13.D 14.C 15.B 16.C 17.D 18.C

3.2 填空题 1.7

2.分别统计输入若干数的奇数和、偶数和,存放在m、n中 3.Chr(KeyAscii) 4.Chr(KeyAscii)

5.countl=countl-1 若遇右括号,括号数减l。 6.countl=0 括号配对。

7.countl>0 左括号多于右括号,多于的个数是countl的值。 8.UCase(Chr(KeyAscii)) 大小写不区分。 9.C

10.”A”,”E”,”I”,”O”,”U” 11.Else 其他字符。 12.KeyAscii=13

3.3 编程题

1. Private Sub Command1_Click()

Dim a#, b#, c#

Dim flag As Boolean a = Val(Text1) b = Val(Text2) c = Val(Text3)

If a+b>c and a+c>b and b+c>a then print “构成三角形,是:”; If a = b and b= c Then Print \等边三角形\

ElseIf a = b Or a = c Or c = b Then Print \等腰三角形\

ElseIf a^2 + b^2 = c^2 Or a^2 + c^2 = b^2 Or c^2 + b^2 = a^2 Then

Print \直角三角形\Else

15

Print \任意三角形\End If Else

print “不构成三角形” End If End Sub

2.Private Sub Command2_Click()

Dim a% a = Text1

If (a Mod 4 = 0 And a Mod 100 <> 0) Or a Mod 400 = 0 Then Print a; \年是闰年\Else

Print a; \年不是闰年\End If End Sub

16

习 题 四

4.1 选择题

1. 以下( )是正确的For?Next结构。

(A)For x=1 To Step 10 (B)For x=3 To -3 Step -3

? ?

Next x Next x

(C)For x=10 To 1 (D)For x=3 To 10 Step 3 re:?? ? Next x Next y 2. 下列循环能正常结束循环的是( )。 (A)i=5 (B)i=1 Do Do

i=i+1 i=i+2

Loop Until i<0 Loop Until i=10 (C)i=10 (D)i=6 Do Do

i=i-1 i=i-2

Loop Until i<0 Loop Until i=1 3. 下面程序段的运行结果为( )。 For i=3 To 1 Step -1 Print Spc(5-i); For j=1 To 2*i-1 Print \; Next j Print Next i

(A) * (B)***** (C)***** (D)***** *** *** *** *** ***** * * *

4. 当在文本框输入“ABCD”四个字符时,窗体上显示的是( )。 Private Sub Textl_Change() Print Textl.Text; End Sub

(A)ABCD (B)A (C)AABABCABCD (D)A B AB

C ABC

D ABCD 5. 哪个程序段不能分别正确显示l!、2!、3!、4!的值( )。

17

(A)For i=1 To 4 (B)For i=1 To 4 n=1 For j=l To i For j=1 To i n=1 n=n*j n=n*j Next j Next j Print n Print n Next i Next i

(C)n=1 (D)n=1: j=1

For j=1 To 4 Do While j<=4 n=n*j n=n*j Print n Print n Next j j=j+1 Loop 6. 以下( )是错误的循环结构。

(A)For x=1 To Step l0 (B)For x=3 To -3 Step -3

For y=1 to 5 For y=x to 3 ? ?

Next y Next y

Next x Next x

(C)For x=10 To 1 (D)For x=3 To 10 Step 3

For y=1 to x For y=1 to -4 step x ? ?

Next y Next y

Next x Next x 7. 下列循环不能正常结束循环的是( )。 (A)i=5 (B)i=1 Do Do

i=i-1 i=i+2

Loop While i=5 Loop While i=10 (C)i=10 (D)i=6 Do Do

i=i\\2 i=i-2

Loop Until i=0 Loop Until i>1 8. 下面程序段的运行结果为( )。 For i=1 To 10 Step 4 i=i+1 Next i Print i

(A)11 (B)12 (C)13 (D)14

18

9. 下面程序段的循环次数为( )。 For i=1 To 10 Step 4 i=i+1 Next i Print i

(A)1 (B)2 (C)3 (D)4 10. 下面程序段的循环次数为( )。 For i=1 To 10 Step 4 i=i+1

If i>10 Then i=i-4 Next i Print i

(A)1 (B)2 (C)3 (D)4

11. VB程序运行中出现死循环现象时,应按键盘上的( )组合键中断程序。 (A)Ctrl+Break (B) Alt+Break(C)Shift+Break (D)Tab+Break 12. 当在文本框输入“ABCD”四个字符时,窗体上显示的是( )。 Private Sub Text1_Change() For i= 1 to Len(Text1.Text) Print Mid(Text1.Text,i,1); Next i Print End Sub

(A)ABCD (B)A (C)AABABCABCD (D)A B AB

C ABC

D ABCD 13. 当单击命令按钮command1时,窗体上显示的是( )。

private sub command1_click() a=0

for i=1 to 2 for j=1 to 4

if j mod 2<>0 then a=a+1 end if a=a+1 next j next i print a end sub

19

(A)11 (B)12 (C)13 (D)14

14. 用循环结构解决问题时,如果循环的次数已知,通常采用();当循环的

次数未知,需要判断条件是否成立来决定循环执行和退出时,通常采用()。 (A)For?Next循环、Do?Loop循环 (B)Do?Loop循环、For?Next循环 (C)For?Next循环、For?Next循环 (D)Do?Loop循环、Do?Loop循环

15. 循环结构中,无论循环条件是否成立都会至少循环一次的循环是( )。 (A)For?Next循环 (B)Do While?Loop循环 (C)Do?Loop Until循环 (D)Do Until?Loop循环

4.2 填空题

1.要使下列For语句循环执行20次,循环变量的初值应当是: For k=( )To -5 Step-2 2.下面程序段显示( )个“*”。 For i=1 To 5 For j=2 To i Print \; Next j Next i

3.下列第40句共执行了( )次,第41句共执行了( ) 30 For j=1 To 12 Step 3 40 For k=6 To 2 Step-2 41 Print j,k 42 Next k 43 Next j

4.以下程序运行后,si、sj、sk、i、j、 k的结果分别是( )( )、( )、( )、( )、( ) Private Sub Command1_Click() si=0:sj=0 For i=1 To 2 For j=1 To i sk=0

For k=j To 3 sk=sk+1 Next k sj=sj+1 Next j si=si+1 Next i

20

次。 、。

Print si, sj, sk, i, j, k End Sub

5.下面程序运行后输出的结果是( )。 Private Sub Command1_Click() For i=0 To 3

Print Tab(5*i+1);\;\; Next i End Sub

6.下面程序运行后输出的结果是( )。 Private Sub Command1_Click() a$=\:B$=\ For i=1 To 4

If i Mod 2=0 Then

x$=String(Len(a$)+i,B$) Else

x$=String(Len(a$)+i,a$) End If

Print x$; Next i End Sub

7.输入任意长度的字符串,要求将字符顺序倒置,例如,将输入的“ABCDEFG”变换咸GFEDCBA”。

Private Sub Command1_Click() Dim a$,i%,cc$,d$

a=InputBox$(“输入字符串”) n=( )

For i=1 To ( ) c=Mid(a,i,1)

Mid(a,i,1)=( ) ( )=c Next i Print a End Sub

8.找出被3、5、7除,余数为1的最小的5个正整数。

Private Sub Command1_Click( ) Dim CountN%,n% CountN=0 n=1 Do

21

n=n+1

if( ) Then Print n

CountN=CountN+1 End If

Loop( ) End Sub

9.某次大奖赛,有七个评委打分,如下程序对一名参赛者,输入七个评委的

打分分数,去掉一个最高分、一个最低分后,求出平均分为该参赛者的得分。

Private Sub Command1_Click()

Dim mark!,aver!,i%,max1!,min1! aver=0

For i=1 To 7

mark=InputBox(\输入第\位评委的打分\ If i=1 Then

max1=mark:( ) Else

If mark< min1 Then ( ) Else lf mark>max1 Then ( ) End If End If

( ) Next i

aver=( ) Print aver End Sub 4.3 编程题

1.有一个长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩5阶,只有当如果每步跨7阶时恰好走完,问这个阶梯有多少阶? [提示]

利用其肯定是7的倍数这个条件,然后根据同时满足除n余m(n=2,3,4,5,6;m=1,

2,3,4,5)的逻辑关系即可。

习题四 参考答案

4.1 选择题

22

1.B 2.C 3.B 4.C 5.B 6.A 7.B 8.A 9.B 10.B 11.A 12.D 13.D 14.A 15.C

4.2 填空题

1.33 根据循环次数计算公式得。

2.10 该题相当于统计两重循环执行了多少次。 3.4 相当于统计外循环体执行多少次。 12 相当于统计两重循环体执行多少次。 4.2 3 2 3 3 4 5.2 20 3 21 4 22 5 23 6.**$$$****$$$$$

7.Len(a) 解该题的思路是将字符串从两头往中间对应交换位置int(n/2) 或 n\\2 Mid(a,n-i+1,1) Mid(a,n-i+1,1)

8.n Mod 3=1 And n Mod 5=1 And n Mod 7=1 Until CountN=5或While CountN<5 9.min1=mark 对最低分初始化。 min1=mark max1=mark

aver=aver+mark

(aver-max1-min1)/5 4.3 编程题

1、 Private Sub Command1_Click()

For i = 7 To 1000 Step 7 k = 0

For m = 1 To 5 n = m + 1

If i Mod n <> m Then Exit For Else

k = k + 1 End If Next m

If k = 5 Then Print i

Exit For End If

Next i

23

End Sub

24

习 题 五

5.1 选择题

1. 如下数组声明语句,( )正确。

(A)Dim a[3,4] As Integer (B)Dim a(3,4)As Integer (C)Dim a(n,n)As Integer (D)Dim a(3 4)As Integer 2. 以下说法不正确的是( )。

(A)使用ReDim语句可以改变数组的维数 (B)使用ReDim语句可以改变数组的类型

(C)使用ReDim语句可以改变数组的每一维的大小

(D)使用ReDim语句可以对数组中的所有元素进行初始化 3. 假如用复制、粘贴的方法建立了一个命令按钮数组Command1,一下对该数

组的说法错误的是( )。

(A)命令按钮的所有Caption属性都是Command1 (B)在代码中访问命令按钮只需使用名称Command1 (C)命令按钮的大小都相同

(D)命令按钮共享相同的事件过程

4. 要分配存放如下方阵的数据,可使用数组声明语句( )来实现(不能

浪费空间)。

?1.1 2.2 3.3??4.4 5.5 6.6?????7.7 8.8 9.9??

(A)Dim a(9) As Single (B)Dim a(3,3) As Single

(C)Dim a(-1 To 1,-5 To -3)As Single (D)Dim a(-3 To -1,5 TO 7)As Integer

5. 如下数组声明语句,数组a包含元素的个数为( )。 Dim a(3,-2 to 2,5)

(A)120 (B)75 (C)60 (D)13 6. 以下程序输出的结果是( )。 Dim a

a=Array(1,2,3,4,5,6,7) For i=Lbound(a)To Ubound(a) a(i)=a(i)*a(i) Next i

25

Print a(i)

(A)49 (B)0 (C)不确定 (D)程序出错 7. 以下程序输出的结果是( )。 Option Base 1

Private Sub Commandl_Click() Dim a%(3,3) For i=1 To 3 For j=1 To 3

If i>1 And j>1 Then

a(i,j)=a(a(i-1,j-1),a(i,j-1))+1 E1se

a(i,j)=i*j End If

Print a(i,j);\; Next j Print Next i End Sub

(A)1 2 3 (B)1 2 3 (C)1 2 3 (D)1 1 1 2 3 1 1 2 3 2 4 6 2 2 2 3 2 3 1 2 3 3 6 9 3 3 3 8. 以下程序输出的结果是( )。 Option Base 1

Private Sub Command1_Click() Dim a, B(3, 3)

a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) For i = 1 To 3 For j = 1 To 3

B(i, j) = a(i * j)

If (j >= i) Then Print Tab(j * 3); Format(B(i, j), \ Next j Print Next i End Sub

(A)1 2 3 (B)1 (C)1 4 7 (D)1 2 3 4 5 6 4 5 2 4 6 4 6 7 8 9 7 8 9 3 6 9 9 9. 下列程序段的执行结果是( )。 Dim M(10)

26

For K = 1 To 10 M(K) = 11 - K Next K X = 6

Print M(2 + M(X))

(A)2 (B)3 (C)4 (D)5 10. 下列程序段的执行结果是( )。

Private Sub Command1_Click()

Dim arr(5) As Integer, arr1(5) As Integer n = 3

For i = 1 To 5 arr(i) = i

arr1(n) = 2 * n + i Next

Print arr1(n); arr(n) End Sub

(A)3 11 (B)3 15 (C)11 3 (D)15 3 11. 在窗体上添加一个命令按钮Command1,然后编写如下事件过程,该过程的

执行结果是( )。 Option Base 1

Private Sub Command1_Click() Dim a

a = Array(1, 2, 3, 4) j = 1

For i = 4 To 1 Step -1 s = s + a(i) * j j = j * 10 Next Print s End Sub

(A)4321 (B)1234 (C)34 (D)12 12. 在窗体上有一个命令按钮Command1,然后编写如下事件过程,程序运行后,

单击按钮输出结果是( )。 Private Sub Command1_Click() Dim a(5) As String For i = 1 To 5

a(i) = Chr(Asc(\ Next

For Each b In a

27

Print b; Next End Sub

(A)ABCDE (B)abcde (C)1 2 3 4 5 (D)出错信息 13. 在程序的开始有Option Base 0,则下面定义的数组中正好可以存放1个

4×3矩阵(即只有12个元素)的是( )。 (A)Dim a(-2 To 0,2) As Integer (B)Dim a(3,2)As Integer (C)Dim a(-1 To -4,-1 To -3)As Integer(D)Dim a(4,3)As Integer 14. 在窗体上有一个命令按钮Command1,然后编写如下事件过程,程序运行后,

单击按钮输出结果是( )。 Option Base 1

Private Sub Command1_Click() Dim a(5, 5) As Integer For i = 1 To 5 For j = 1 To 5

a(i, j) = (i + j) * 5 \\ 10

Next j Next i s = 0

For i = 1 To 5 s = s + a(i, i) Next i Print s End Sub

(A)15 (B)13 (C)11 (D)9

15. 在窗体上画一个命令按钮,名为Command1,然后编写如下事件过程,程序

运行后,单击按钮输入2、3,其输出结果是( )。 Private Sub Command1_Click() Dim n() As Integer Dim a, b As Integer

a = InputBox(\ b = InputBox(\ ReDim n(a To b)

For k = LBound(n, 1) To UBound(n, 1) n(k) = k

Print \ Next k End Sub

(A)n(2)=1 (B)n(2)=2 (C)n(2)=2 (D)n(2)=3

28

n(3)=2 n(3)=1 n(3)=3 n(3)=2 16. 下列程序运行后输出结果是( )。 Dim m(2) As Integer For i = 1 To 2 m(i) = 0 Next i k = 2

For i = 1 To k For j = 1 To k m(j) = m(i) + 1 Print m(k) Next j Next i

(A)1 (B)1 (C)0 (D)0 2 2 2 1 2 3 2 2 3 4 3 3 5.2 填空题

1.随机产生6位学生的分数(分数范围1-100),存放在数组a中,以每2分一个“*”显示,如图5.1所示。 Private Sub Command1_Click( ) Dim a(1 To 6) For i=1 To 6

a(i)=( ) Print( ) Next i End Sub

图5.1 运行结果

2.在一维数组中利用移位的方法显示如图5.2所示的结果。 Private Sub Form_Click() Dim a(1 To 7) For i=1 To 7

a(i)=i:Print a(i); Next i Print

For i=1 To 7 t=( )

For j=6 To 1 Step -1 图5.2 移位显示数组 ( )

29

Next j

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

3.下面的程序是将输入的一个数插入到按递减的有序数列中,插入后使该序列仍有序。

Private Sub Form_Click( ) Dim a,i%,n%,m%

a=Array(19,17,15,13,11,9,7,5,3,1) n=Ubound(a)

ReDim( )

m=Val(InputBox(“输入欲插入的数”)) For i=Ubound(a)-1 To 0 Step -1 If m>=a(i) Then

( ) If i=0 Then a(i)=m Else

( ) Exit For End If Next i

For i=0 To Ubound(a) Print a(i) Next i End Sub 4.冒泡法排序

在配套教材中已介绍选择法、冒泡法、合并法排序,上例使用插入法排序。 冒泡法排序与选择法排序相似,选择法排序在每一轮排序时找最大(递减次序)数的下标,出了内循环(一轮排序结束),再交换最大数的位置;而冒泡法排序在每一轮排序时将相邻的数做比较,当次序不对就交换位置,出了内循环,最大数已冒出。 冒泡法递增顺序的程序如下: Private Sub Form_Click( ) Dim a,n%,j%,i%,t

a=Array(19,5,15,7,11,9,23,6,3,1)

30

n=Ubound(a) For i=0 To n-1 For j=0 To n-i-1

If a(j)>a(j+1) Then

( ):( ):a(j+1)=t End If Next j Next i

For i=0 To Ubound(a) Print a(i) Next i End Sub

为了提高效率,若在某一轮排序时,未发生位置交换,说明欲排序的序列已有序,排序就可结束。只要在程序中增加一个逻辑变量来进行判断。程序如下:

Private Sub Form_Click( )

Dim a,n%,m%,i%,Tag As Boolean a=Array(1,5,6,7,4,13,23,26,31,51) n=Ubound(a) For i=0 To n-1 Tag=False

For j=0 To n-1-i If a(j)>a(j+1)Then ( )

( ):( ):a(j+1)=t End If Next j

If( ) Next i

For i=0 To Ubound(a) Print a(i) Next i End Sub

5.下面程序,随机产生n个-10~10无序的随机数,存放到数组中,并显示结果;将数组中相同的那些数删得只剩一个,并输出经过删除后的数组元素,如图5.3所示。

31

图5.3 产生随机数运行结果

Option Base 1

Private Sub Form_Click( ) Dim i%,j%,n%,m%,a%( ),r! n=InputBox(“输入数组大小”) ReDim a(1 To n)

Print“产生的数组:”; For i=1 To n r=Rnd

lf r>0.5 Then m=1 Else m=-1 a(i)=( ) Print a(i); Next i m=1

Do While m<=n

i=( ) Do While i<=n

If a(i)=a(m) Then

For j=( ) a(j)=a(j+1) Next j

( ) Else

i=i+1 End If Loop m=m+1 Loop

ReDim( ) Print

Print“删除后的数组:”; For i=1 To UBound(a) Print a(i); Next i End Sub

32

5.3 编程题

1.用随机数产生5行6列的矩阵,其值为1-100之间的分数,表示5位学生期末6门课程的成绩。再利用ReDim Preserve重新定义5行7列的矩阵,增加的最右列存放每位学生的最高分数;再定义6个元素的一维数组,存放每门课程的平均分数。计算并按图5.4形式显示。

图5.4 学生成绩矩阵运行界面 例如,求每位学生的最高分程序段如下: For i=0 To 4 maxl=a(i,0) For j=1 To 5

If a(i,j)>maxl Then maxl=a(i,j) Next j

a(i,6)=maxl Next i

求每门课程的平均分程序段如下: 1 For j=0 To 5 2 aver=0

3 For i=0 To 4

4 aver=aver+a(i,j) 5 Next i

6 b(j)=aver/5 7 Next j [思考]

若把第2句的aver=0移动到外循环语句即1句的前面,是否影响程序的运行?是否影响程序的正确性?这和前面讲过累加时要在循环体外对求和清零矛盾否?

2.随机产生25个[1,9]的整数放入5*5的二维数组中并输出,统计出靠边元素之和。

33

计算机技术基础习题集

习题五 参考答案

5.1 选择题

1.B A不应出现方括号;C静态数组定义时下标不能出现变量;D下标之间少逗号。

2.B ReDim语句可以反复使用,用以改变数组的维数和元素的个数,但不能改变数组的类型。 3.B

4.C A一维数组,而且浪费了一个空间;B数组有4行4列的方阵,浪费了存储空间;D声明的是3行3列的整型数组,不能存放题目中要求的实数。 5.A 每一维的大小:(上界-下界)+1,多维数组的大小等于每一维的乘积。所以,该题是三维数组的大小为:4×5×6=120。

6.D 因为当出了循环,循环控制变量i的值比数组上界Ubound(a)大1,超出数组上界的范围,因此显示“下标越界”的出错信息。

7.A 该题主要难点是除数组的第1行、第1列的6个元素与下标有关外,其他数组元素的下标又是数组元素。

8.D 该题要点:通过Array函数对数组赋初值;将一维数组赋值给二维数组;打印上三角方阵。

9.C 最后程序要输出的是M(2+M(x)),而x=6,M(x)的值为5,所以M(2+M(x))的值就是M(7)的值,即4。

10.C 该题要点:因为i的值从未改变过,所以执行Print语句后,即输出N(3),M(3)的值。 11.B

12.A 掌握Each语句的用法是关键

13.B 定义数组时的区间设置要从小到大 14.A

15.C 该题考察动态数组赋初值及Lbound()、Ubound()函数的用法。 16.C 此程序采用的是嵌套的For??Next语句结构,为数组m赋值,按照步骤一步步推得结果。

5.2 填空题

1.Int(Rnd*100+1) 产生1-100的随机分数 string(a(i)\\2,”*”);”A(“;i;”)=”;a(i) 2.a(7) 最后元素移出

a(j+1)=a(j) 每个元素往右移,最左位置留出 a(1)=t

3.Preserve a(n+1) 插入一个数,先使数组加一个元素,而且要保留原数据

a(i+1)=a(i) 找插入的位置

35

计算机技术基础习题集

a(i+1)=m 新数据找到插入位置,插入到数组中 4.t=a(j)

a(j)=a(j+1) Tag=True t=a(j)

a(j)=a(j+1)

Not Tag Then Exit For 5.m*int(Rnd*11)

m+1 从下一个元素开始比较是否有相同元素值 i To n-1 n=n-1

Preserve a(1 To n) 5.3 编程题 1.Dim a%()

Dim b%(1 To 6)

Private Sub Command1_Click() Dim max%, aver%

ReDim a(1 To 5, 1 To 6) As Integer For i = 1 To 5 For j = 1 To 6

a(i, j) = Int(Rnd * 100 + 1) Next j, i

ReDim Preserve a(1 To 5, 1 To 7) '打印第一行行标题 For i = 1 To 6

Print Tab(5 + i * 5); i; Next i

Print Tab(5 + i * 5); \最高分\ '打印具体行内容 For i = 1 To 5 max = a(i, 1)

Print \第 \位\ For j = 1 To 6

If a(i, j) > max Then max = a(i, j) Print Tab(5 + j * 5); a(i, j); Next j

a(i, 7) = max

Print Tab(5 + j * 5); a(i, 7) Next i

Print \平均分\

36

计算机技术基础习题集

For j = 1 To 6 '求平均分 aver = 0

For i = 1 To 5

aver = aver + a(i, j) Next i

b(j) = aver / 5

Print Tab(5 + j * 5); b(j); Next j End Sub

2.Private Sub Command1_Click() Dim a(5, 5) As Integer, sum For i = 1 To 5 For j = 1 To 5

a(i, j) = Int(Rnd * 9 + 1) Print a(i, j);

If i = 1 Or i = 5 Or j = 1 Or j = 5 Then sum = sum + a(i, j) End If Next j Print Next i Print sum End Sub

37

计算机技术基础习题集

习 题 六

6.1选择题

1. VB中使用的过程不包括以下( )。

(A)子程序过程 (B)调用过程 (C)函数过程 (D)属性过程 2. 中途退出子过程的执行,应该使用的语句是( )。

(A)Exit Property (B)Exit Function (C)End (D)Exit Sub 3. VB中过程被调用,在该过程代码执行结束时,都会有以下( )关键词。 (A)End (B)Exit (C) Break (D)Continue

4. 在过程定义中用( )表示形参为传值形式。

(A)Var (B)ByDef (C)ByVal (D)Value 5. 在定义过程中用( )表示形参为传址形式。

(A)Var (B)ByDef (C)ByVal (D)Value 6. 以下哪个为定义静态变量的关键字( )。

(A)Dim (B)Public (C)Static (D)Const

7. 在编写过程时,如果形参为数组名,则参数的传递形式应该是( )。 (A)传值 (B)传址 (C)二者均可 (D)以上均不对 8. 某过程Fun中形参是一个数组,编写过程Fun的代码时,如果想知道该数

组的下界,应该使用( )函数。

(A)UCase (B)Bound (C)LBound (D)UBound

9. 若已编写了一个Sort子过程,在该工程中有多个窗体,为了方便地调用

Sort子过程,应该将过程放在( )中。

(A)窗体模块 (B)标准模块 (C)类模块 (D)工程

10. 在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量

的值,则应使用( )关键字在过程中定义局部变量。

(A)Dim (B)Private (C)Public (D)Static 11. 设有如下说明:

Public Sub Fun(n%) ?

n=3*n+4 ? End Sub

Private Sub Command1_Click() Dim n%,m% n=3

38

计算机技术基础习题集

m=4

'调用Fun语句 ? End Sub

则在Command1_Click事件中有效的调用语句是( )。

(A)Fun n+m (B)Fun m (C)Fun 5 (D)Fun m+5 12. 下面子过程语句说明合法的是( )。

(A)Sub ff(ByVal n%()) (B)Sub ff(n%)As Integer (C)Function ff%(ff%) (D)Function ff(ByVal n%)

13. 要想从子过程调用后返回两个结果,下面子过程语句说明合法的是

( )。

(A)Sub f1(ByVal n%,ByVal m%) (B)Sub fl(n%,ByVal m%) (C)Sub f1(n%,m%)

(D)Sub fl(ByVal n%,m%)

14. 下面过程运行后,点击Command1一次显示的结果是( )。

Public Sub Fun(n%, ByVal m%) n = n Mod 10 m = m \\ 10 End Sub

Private Sub Command1_Click() Dim x%, y%

x = 12: y = 34 Call Fun(x, y) Print x, y End Sub

(A)2 34 (B)12 34 (C)2 3 (D)12 3 15. 如下程序,运行的结果是( )。

Private Sub Command1_Click() Print jsVal(3, 7) End Sub

Public Function jsVal!(x!, n%) If n = 0 Then jsVal = 1 Else

If n Mod 2 = 1 Then

jsVal = x * jsVal(x, n \\ 2) Else

jsVal = jsVal(x, n \\ 2) \\ x

39

计算机技术基础习题集

End If End If End Function

(A)18 (B)7 (C)14 (D)27

16. 如下程序,单击Command1后的运行结果是( )。

Dim a%, b%, c%

Public Sub p1(x%, y%) Dim c%

x = 2 * x: y = y + 2: c = x + y End Sub

Public Sub p2(x%, ByVal y%) Dim c%

x = 2 * x: y = y + 2: c = x + y End Sub

Private Sub Command1_Click() a = 2: b = 4: c = 6 Call p1(a, b)

Print \ Call p2(a, b)

Print \End Sub

(A)a=2 b=4 c=6 (B)a=4 b=6 c=10 a=4 b=6 c=10 a=8 b=8 c=16 (C)a=4 b=6 c=6 (D)a=4 b=6 c=14 a=8 b=6 c=6 a=8 b=8 c=6 17. 如下程序,运行的结果是( )。

Public Sub Proc(a%()) Static i% Do

a(i) = a(i) + a(i + 1) i = i + 1 Loop While i < 2 End Sub

Private Sub Command1_Click() Dim m%, i%, x%(10) For i = 0 To 4 x(i) = i + 1 Next i

For i = 1 To 2

40

计算机技术基础习题集

c = ( )

If c >= \ j = Val(c)

num(j) =( )+ 1 End If Next i End Sub

6.下面程序是把给定的十六进制整数字符串转换为十进制数。 例如:3F8=> (3*16+15)*16+8=1000 Option Explicit

Private Sub Form_Click ( )

Dim St As String,Dem As Long St=“3F8” ( ) Print St;“=>”;Dem End Sub

Private Function Convert(S As String)As Long Dim n%,i%,SubC As String*1,p& n=Len(S) p=0

For i=1 To n

SubC=( )

Select Case UCase(SubC) Case“0”To“9” p=p*16+Val(SubC) Case“A” To“Z” p=p*16+( ) End Select Next i ( ) End Function 6.3 编程题

1.编写一个函数过程isPrime(ByVal m%) As Boolean,该函数实现的功能是对任意整数判断其是否为素数,如果是素数,函数值为True;否则,函数值为False。

2.编写一个子过程SortReverse(xx%()),该子过程完成的功能是将任意整型数组就地逆置(所谓就地逆置是指在数组空间里实现翻转)。

46

计算机技术基础习题集

3.编写一个函数过程jsVal() As Long,该函数实现的功能是计算所有四位数中各个位置上的数字是0或2或4或6或8的数的和。

4.编写一个子过程Sort(xx%()),该子过程完成的功能是将任意数组进行递增排序。

5.编写一个函数CountSubtring%(ss$,sub$)统计字符串ss中出现存放在sub中的单词次数。

6.编写一个函数CountWord%(ss$)用于统计任意一英文语句中有多少个单词。

47

计算机技术基础习题集

习题六 参考答案

6.1 选择题 1.B 2.D 3.A 4. C 5.B 6.C

7.B 数组做为形参整体传输时,只能通过传址的形式完成,相当于传递数组的起始位置。

8.C UBound(数组名[,维])计算某数组中某维的上界,LBound(数组名[,维])计算某数组中的某维的下界。 9.B

10.D Static具有保值的特点;在过程体内不能用Public、Private声明 变量。

11.B Fun子过程中的形参n是地址传递,可以从实参中获得初值,也可以把结果返回给主调程序,此时要求实参是变量,才能获得效果。而A、C、D调用时实参是表达式或常量,在VB中语法没有错(其他有的语言不允许),但得不到子过程中操作的结果。

12. D A形参是数组,不允许为值传递;B子过程名无值也无类型,n不能声明为整型;C数名与形参名同名。 13.C 14.A

15.D P1是递归调用函数。

16.C P1子过程的形参都是地址传递,P2子过程x是地址传递,y是值传递。

17.B 形参是数组,应该是地址传递,实参可得到子过程中操作的结果。 18.D Static定义的变量是静态变量,每次运行包含该变量的过程后,该变量的值保留,直到工程结束。 19.C 20.C 21.C

22.C 表达式、函数、常量只能传值 23.C 24.B

25.D 关键的是x被赋值后,由于是整型变量的原因,所以x的值为3(四舍五入) 26.D

48

计算机技术基础习题集

27.A 28.B

6.2 填空题 1. 144

是用递归函数实现将十进制数以r进制显示 2. 6

用辗转相减法求m、n的最大公约数(求最大公约数还可以用辗转相除法)。 3. IsP=True 初值假定为质数。

m Mod i=0

p1=True And p2=True (或者写P1 And P2) 相邻的两个是质数。 =p2 为下一个相邻的质数做准备。

4. InStr(s1, s2) 查找s1中第一次出现s2位置

Mid(s1, i + ls2) 截取s2后面的字符串。 InStr(s1, s2) 再次查找s1中出现s2位置 Text1.Text或者写Text1

5. List1.AddItem 向List1中添加项目

num%(),s$ 定义过程参数,与Command1_Click中的调用对应

Mid(s,i,1) 截取s中的第i个字符 num(j) 实现num(j)增1 6. Dem=Convert(St)

Mid(S,i,1)

Asc(SubC)-55或Asc(SubC)-Asc(“A”)+10或Asc(SubC)-65+10 Convert=p 6.3 编程题

1.

Private Function IsPrime(ByVal m%) As Boolean Dim i As Integer IsPrime = True For i = 2 To m-1

If m Mod i = 0 Then IsPrime = False: Exit For Next i End Function

2.

Private Sub SortReverse(xx%())

Dim i As Integer,j As Integer,temp As Integer

i=LBound(xx) j=Ubound(xx) Do While i

49

计算机技术基础习题集

temp=xx(i); xx(i)=xx(j) xx(j)=temp; i=i+1; j=j-1; Loop End Sub 3.

Private Function jsVal() As Long

Dim data%, ge%, shi%, bai%, qian% For data = 1000 To 9999 ge = data Mod 10

shi = data \\ 10 Mod 10 bai = data \\ 100 Mod 10 qian = data \\ 1000

If ge Mod 2 = 0 And shi Mod 2 = 0 And bai Mod 2 = 0 And qian Mod 2 = 0 Then

jsVal = jsVal + data End If Next data End Function 4.

Private Sub Sort(xx%())

Dim i As Integer, j As Integer, t As Integer

For i = LBound(xx) To UBound(xx) - 1 For j = i + 1 To UBound(xx) If xx(i) > xx(j) Then t = xx(i) xx(i) = xx(j) xx(j) = t End If Next j Next i End Sub

5.

Private Function CountSubstring%(ss As String, sub As String) Dim i%, cnt%

i = InStr(1, ss, sub)

50

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

Top