编程20题参考答案(109页开始)

更新时间:2024-03-16 23:39:01 阅读量: 综合文库 文档下载

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

第二部分 VB练习题与答案

第1章 概 述

1.叙述建立一个完整的应用程序的过程。

2.当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块,问该工程涉及多少个文件要保存?若要保存该工程中的所有文件,正确的操作应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息?

3.保存工程文件时,若不改变目录名,则系统默认的目录是什么?

第2章 数据类型与表达式

一、选择题

1. 一个语句行内写多条语句时,每个语句之间用( )符号分隔。 A. , B. : C. 、 D. ;

2. 一句语句要在下一行继续写,用( )符号作为续行符。 A. + B. – C. _ D. ? 3. 下面( )是合法的变量名。 A. X_yz B. 123ab C. integer D. X-Y 4. 下面( )是不合法的整数。 A. 100 B. &Ol00 C. &H100 D. %100 5. 下面( )是合法的字符常量。 A. ABC$ B. \C. 'ABC' D. ABC 6. 下面( )是合法的单精度型变量。 A. num! B. sum% C. xinte$ D. mm# 7. 下面( )是不合法的单精度常数。

96

Visual Basic语言程序设计习题与上机指导

A. 100! B. 100.0

C. 1E+2 D. 100.0D+2 8. 表达式16/4-2^5*8/4 MOD 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. *

11. 与数学表达式ab/3cd对应的不正确Visual Basic 6.0表达式是( )。

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. 表达式Len(\程序设计ABC\的值是( )。

A. 10 B. 14 C. 20 D. 17 16. 下面正确的赋值语句是( )。

A. x+y=30 B. v=?*r*r C. y=x+30 D. 3y=x

17. 为了给x,y,z三个变量赋初值1,下面正确的赋值语句是( )。

A. x=1:y=1:z=l B. x=1,y=1,z=1 C. x=y=z=1 D. xyz=1

18. 赋值语句:a=123+Mid(\执行后,a变量中的值是( )。

A. \ B. 123 C. 12334 D. 157

19. 赋值语句:a=123 & Mid(\执行后,a变量中的值是( )。

A. \ B. 123 C. 12334 D. 157

第二部分 练习题与答案

二、填空题

97

1. 在VB中,1234、123456&、1.246E+5、1.2346D+5四个常数分别表示_____________、___________、____________、______________类型。

2. 整型变量x中存放了一个两位数,要将两位数交换位置,例如,13变成31,实现的表达式是____________________________________________。

3. 数学表达式sin45??ln(2x)?3的VB算术表达式为________________。

4. 表示x是5的倍数或是9的倍数的逻辑表达式为______________________。

5. 已知a=3.5,b=5.0,c=2.5,d=True,则表达式:a>=0 AND a+c>b+3 OR NOT d的值是_________________。

6. Int(-3.5)、Int(3.5)、Fix(-3.5)、Fix(3.5)、Round(-3.5)、Round(3.5)的值分别是________、____________、____________、____________、____________、____________。

7. 表达式Ucase(Mid(\的值是______________。

8. 在直角坐标系中,x、y是坐标系中任意点的位置,用x与y表示在第一或第三象限的表达式是__________________。

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

三、问答题

1. Visual Basic提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么?

2. 哪种数据类型需要的内存容量最少,且可存储诸如3.2345这样的值?

3. 将数字字符串转换成数值,用什么函数?判断是否是数字字符串,用什么函数?取字符串中的某几个字符,用什么函数?大小写字母间的转换,用什么函数?

4. Mid(\什么是ASCII编码\,3,6)的结果?

第3章 VB语言基础

一、选择题

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

2. 下面程序段运行后,显示的结果是( )。 Dim x

If x Then Print x Else Print x+1

A. 1 B. 0

98

Visual Basic语言程序设计习题与上机指导

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

C. x=1为关系表达式,y=1为赋值语句 D. x=1为赋值语句,y=1为关系表达式 4. 下面程序段,显示的结果是( )。 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. 不通过 5. 以下( )是正确的For…Next结构。 A. For x=1 to Step 10 B. For x=3 To-3 Step -3

…… ...... Next x Next x

C. For x= l To 10 D. For x=3 To 10 Step 3

re: …... ..... Next x Next y If i=10 Then Go To re

6. 下列循环语句中,能正常结束循环的是( )。 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

j=i+l i=i-2

Loop Until i>0 Loop Until i=1

7. 哪个程序段不能分别正确显示1!、2!、3!、4!的值?( )

第二部分 练习题与答案

A. For i=1 To 4 B. For i=1 To 4

n=1 For j=1 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

For j=l To 4 j=1

n=n*j Do while j<=4 Print n n=n*j Next j Print n j=j+l Loop

99

二、编程题

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

2. 编一程序:根据上网时间计算上网费用。计算的方法如下:为了鼓励多上网,每月收费最多不超过100元。

费用=

30元基数 <10 h 每小时2元 10~60 h 每小时1.5元 >60 h

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

4. 一个球从100 m高度自由下落,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少m?最后一次反弹高度多少?

5. 有一根长度为321m的钢材料,要将它截取成两种规格的短料,规格a、b的长度分别为17 m和27 m,问分隔成a、b各多少段后,剩余的残料r最少?

6. 小猴在一天摘了若干个桃子,当天吃掉一半多一个;第二天接着吃了剩下的桃子中的一半多一个,以后每天都吃剩下桃子中的一半零一个,到第7天早上要吃时只剩下一个了,问小猴那天共摘下了多少个桃子?

7. 某次大奖赛,有7个评委打分,满分为100分。对一名参赛者,输入7个评委的打分分数,去掉一个最高分、一个最低分后,求出平均分为该参赛者的得分。编写程序输入评委的打分,输出参赛者的得分。

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

100

Visual Basic语言程序设计习题与上机指导

9. 由键盘输入一个正整数,找出大于或等于该数的第一个质数。

10. “完备数”是指一个数恰好等于它的因子之和,如6的因子为1、2、3,而6=1+2+3,因而6就是完备数。编程找出1~1000之间的全部“完备数”。

11. 勾股定理中三个数的关系是:a^2 + b^2 =c^2。编写程序,输出100以内满足上述关系的整数组合,例如3,4,5就是一个整数组合。

12. 编写程序,打印如下的乘积表: * 3 6 9 12 15 16 17 18

13. 一个两位正整数,如果将它的个位数字与十位数字对调,则产生另一个正整数,我们把后者叫做前者的对调数。现给定一个两位正整数,请找到另一个两位正整数,使得这两个两位正整数之和等于它们各自的对调数之和,若找不到,则输出“查找失败”。例如:32+12=21+23。(要求:在程序运行时从键盘输入给定的两位正整数)

14. 有一数列:1、1、2、3、5、8、13、21?,求出这个数列的前20项之和。 15. 把一个16进制数转换成一个10进制数。

16. 编写程序,单击窗体时在窗体上打印出如下所示的图形。

* *** ***** ******* ********* ******* ***** ***

*

17. 编写程序,输出下列三角形: (要求用循环做,非循环不给分) G FG EFG DEFG CDEFG BCDEFG ABCDEFG

18. 编程输入一批数据,若输入数据为纯数字时,求累加和,非纯数字不累加。输入\结束输入,输出累加和。(用InputBox()输入数据)

19. 求公式:e=1+1/1!+1/2!+1/3!+??+1/n! 直到n=20时的e值。

20. 已知sin(x)=x/1-x^3/3!+x^5/5!-x^7/7!+?,设计一个程序,输入x,通过累加所有绝

第二部分 练习题与答案

对值大于等于0.000001的项来计算sin(x)的值。

101

第4章 数组与记录

1. 某数组有20个元素,元素的值由键盘输入,要求将前10个元素与后10个元素对调。即第一个元素与第20个元素互换,第2个元素与第19个元素互换??第10个元素与第11个元素互换。输出数组原来各元素的值和对换后各元素的值。

2. 编写程序,建立并输出一个10×10的矩阵,该矩阵两条对角线为1,其余元素均为0。 3. 有一个6×6的矩阵,各元素的值由键盘输入,求全部元素的平均值,并输出高于平均值的元素以及它们的行、列号。

4. 找出二维数组n×m中的“鞍点”。所谓鞍点是指它在本行中值最大,在本列中值最小。输出鞍点的行、列号,有可能在一个数组中找不到鞍点,如无鞍点则输出“无”。

5.输出5阶幻方阵。幻方阵也称魔方阵,是指由自然数1~n2(n为奇数)构成的方阵,其各行、各列以及对角线元素之和均相等。

6.设某班共10名学生,为了评定某门课程的奖学金,按规定超过全班平均成绩10%者发给一等奖,超过全班成绩5%者发给二等奖。试编制程序,输出应获奖学金的学生名单(包括姓名、学号、成绩、奖学金等级)。

7.选择法排序。选择法排序的基本思路如下:

设有10个数存放在数组A中,分别表示为A(1)、A(2)、A(3)、A(4)、A(5)、A(6)、A(7)、A(8)、A(9)、A(10)。

先将A(1)与A(2)比较:指针k指向1,若A(2)

第2轮:先将指针k指向2,将A(k)与A(3)、?、A(10)比较,并依次作出同样的处理,指针k指向第1轮余下的9个数中的最小者,然后将A(k)与A(2)互换。第一轮余下的9个数中的最小者放入A(2)中。继续进行第3轮、第4轮??直到第9轮后,余下的A(10)自然数是10个数中的最大者。至此,10个数已按从小到大顺序存放在A(1) ~A(10)中。

第5章 过 程

1. 编制求两数中的较大数的Function过程,求多个数中的最大数。 2. 编制判断奇偶数Function过程。输入一个整数,判断其奇偶性。

3. 编制判断是否同时被17与37整除的Function过程。输出1000~2000之间所有能同时被17与37整除的数。

4. 移动数组元素。将数组中某个位置的元素移动到指定位置。

5. Hanoi 塔问题:传说印度教的主神梵天创造世界时,在印度北部佛教圣地贝拿勒斯圣庙里,安放了一块黄铜板,板上插着三根针,在其中一根针上自下而上放着由大到小的64个金盘。这就是所谓的梵塔(Hanoi)。梵天要僧侣们坚定不移地按下面规则把64个盘子移到另

102

Visual Basic语言程序设计习题与上机指导

一根针上:

(1) 一次只能移一个盘子。 (2) 盘子只许在三根针上存放。 (3) 永远不许大盘压小盘。

梵天称,当把他创造世界时所安放的64个盘子全部移到另一根针上时,就是世界毁灭之日。请编制程序解决该问题。

6. 编写程序,求S=A!+B!+C!,阶乘的计算分别用Sub过程和Function过程两种方法来实现。

7. 设a为一整数,如果能使a2?x?a成立,则称a为“守形数”。例如52?25,252?625,则5和25都是守形数。试编写一个Function过程Automorphic,其形参为一整数,判断其是否为守形数,然后用该过程查找1~1000内的所有守形数。

8. 斐波那契(Fibonacci)数列的第一项是1,第二项是1,以后各项都是前两项的和,试用递归算法编写一个程序,求斐波那契数列前N项的值。

第6章 文件操作

1. 使用Output选项打开一个已存在的文件会发生什么情况? 2. 使用Append选项写文件会发生什么情况?

3. 创建一个以Stu.Dat为文件名的学生成绩数据文件,将其中获奖学金的学生数据存入一个新文件(Stu1.dat) 中。评奖学金的条件是:每门课程成绩均在85分以上或三门课程总分在270分以上。

第7章 窗体设计

1. VB窗体设计器的主要功能是( )。 A. 显示文字 B. 建立用户界面 C. 编写源程序代码 D. 画图 2. 以下叙述中正确的是( )。 A. 对象的Name属性值可以为空

B. 可以在程序运行期间改变对象的Name属性值

C. 窗体的Name属性值是显示在窗体标题栏中的字符串 D. 窗体的Name属性用来标识和引用窗体

3. 改变显示在窗体标题栏中的标题使用的属性是( )。 A. (名称) B. FontName C. Caption D. Text 4. 设有如下窗体事件 Option Base 0

Private Sub Form_Click()

第二部分 练习题与答案

103

Dim a

Dim i As Integer

a=Array(1,2,3,4,5,6,7,8,9) For i=0 To 3 Print a(5-i); Next End Sub

程序运行后,单击窗体,则在窗体内显示的结果是( )。

A. 5 4 3 2 B. 6 5 4 3 C. 4 3 2 1 D. 7 6 5 4

5. 对窗体编写如下事件过程。程序运行后,在窗体上单击鼠标右键,则输出结果为( )。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Print \ End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Print \ End Sub

A. BBAA B. AABB C. AA D. BB 6. 以下叙述中错误的是( )。

A. 窗体的Show方法的作用是将指定的窗体装入内存并显示该窗体 B. 窗体的Hide方法和Unload方法的作用完全相同

C. 若工程文件中有多个窗体,可以根据需要指定一个窗体为启动窗体 D. 使Print方法在窗体上失效的窗体事件是Load

7. 下列语句中,能够暂时隐藏窗体Form1,但不释放它所占用的内存空间的是( )。 A. Unload Form1 B. Form1.Unload C. Hide Form1 D. Form1.Hide 8. 下列语句中,能够加载并显示窗体Form1的是( )。 A. load Form1 B. Form1.load C. show Form1 D. Form1.show 9. 下面的程序运行后,若从键盘输入-1,则输出结果为( )。 Private Sub Form_Click() xcase = 1

t = InputBox(\请输入一个数:\ Select Case t Case Is > 0 y = xcase + 1 Case Is = 0

104

Visual Basic语言程序设计习题与上机指导

y = xcase + 2 Case Else

y = xcase + 3 End Select Print xcase; y End Sub

A. 1 4 B. 1 3 C. 1 2 D. 1 1 10. 以下叙述中错误的是( )。

A. 在KeyUp和KeyDown事件过程中,从键盘上输入A或a被视为相同的KeyCode码 B. 在KeyUp和KeyDown事件过程中,将键盘上的“1”和右侧小键盘上的“1”视为

不同的KeyCode码

C. KeyPress事件不能识别某个键的按下与释放 D. KeyPress事件可以识别某个键的按下与释放

第8章 标准控件的使用

一、选择题

1. 文本框的属性不包括( )。 A. Caption B. Text C. Name D. Top

2. 在属性窗口中设置命令按钮的Caption属性为\,则( )是该命令按钮的快捷访问键。

A. Alt+E B. Ctrl+E C. Shift+E D. Ctrl+Shift+E

3. 设置命令按钮的( )属性值为False,可以使命令按钮处于不可用状态。 A. Value B. Enabled C. Default D. Cancel 4. 下列设置中,可以使计时器Timer1停止计时的是( )。 A. Timer1.Locked=True B. Timer1.Locked=False C. Timer1.Enabled=True D. Timer1.Enabled=False 5. 设置标签的的显示内容的属性是( )。 A. Name B. Text C. Caption D. Top

6. 为了将复选框(名称为Check1)设置为选中状态,应该使用( )语句。 A. Check1.Value=1 B. Check1.Value=0 C. Check1.Value=True D. Check1.Value=False 7. 单选按钮处于选中状态时,它的Value属性值是( )。

120

Visual Basic语言程序设计习题与上机指导

j = (n + 1) / 2

a(i, j) = 1

For x = 2 To n * n

If (x -1) Mod n = 0 Then i = i + 1 Else

i = Iif(i = 1, n, i - 1) j = Iif(j = n, 1, j + 1) End If a(i, j) = x Next

For i = 1 To n For j = 1 To n

Print Format(a(i, j), \ Next Print Next End Sub 6.

Private Sub Command1_Click() Dim i As Integer, k As Integer

Dim xm(10) As string, xh(10) As string, cj(10) As single Dim s As single, sx1 As single, sx2 As single For i = 1 To 10

xm(i) = InputBox(\输入第\个学生的姓名:\ xh(i) = InputBox(\输入第\个学生的学号:\ cj(i) = InputBox(\输入第\个学生的成绩:\ s = s + cj(i) Next i

s = s / 10 '求全班平均成绩 sx1 = s * 1.1 '求一等奖标准 sx2 = s * 1.05 '求二等奖标准 For i = 1 To 10

If cj(i) > sx1 Then

Print cj(i) & \ k = k + 1

ElseIf cj(i) > sx2 Then

Print cj(i) & \ s = s + 1

第二部分 练习题与答案

End If Next i

Print \平均分:\等奖\名,2等奖\名\End Sub 7.

Private Sub Command1_Click()

Dim a(10) As Integer,i As Integer,j As Integer, k As Integer, t As Integer Randomize For i = 1 To 10

a(i) = Int(Rnd * 199) -99 Next i

For i = 1 To 9 k = i

For j = i + 1 To 10 '选择法排序

If Val(a(k)) > Val(a(j)) Then k = j End If Next

If k < > i Then

t = a(i): a(i) = a(k): a(k) = t End If Next

For i = 1 To 10 Print a(i) Next i End Sub

121

第5章答案

1.

Dim a(3) As Single

Private Function Max(x As Single, y As Single) If x > y Then Max = x Else

Max = y End If End Function

122

Visual Basic语言程序设计习题与上机指导

Private Sub Command1_Click()

Dim p As String, n As Integer For n = 0 To 3

a(n) = Val(InputBox(\输入第\个数\ Next

Print a(0) & \End Sub

Private Sub Command2_Click() Dim x As Single x = a(0)

For n = 1 To 3

x = Max(x, a(n)) Next

Label2.Caption = \最大的数是:\End Sub

2.

Private Function jopd(x As Long) As Boolean If x Mod 2 = 0 Then jopd = True Else

jopd = False End If End Function

Private Sub Command1_Click() Dim n As Long, p As string

n = InputBox(\输入要判断的数\ p = Iif(jopd(n), \偶数\奇数\ Print n & \是一个\End Sub 3.

Private Function D(x As Integer) As Boolean If (x Mod 17 = 0) And (x Mod 37 = 0) Then D = True Else

D = False End If End Function

第二部分 练习题与答案

Private Sub Command1_Click() Dim n As Integer For n = 1000 To 2000 If D(n) Then Print n Next End Sub 4.

Dim a(10)

Private Sub yd(x(), n, m) Dim i As Integer x(0) = x(n) If n <= m Then '向后移动

For i = n To m -1 x(i) = x(i + 1) Next Else

'向前移动

For i = n To m + 1 Step-1 x(i) = x(i-1) Next End If

x(m) = x(0) End Sub

Private Function str1(x()) Dim p As string, i As Integer p = Str(x(1))

For i = 2 To UBound(x) p = p & \ Next str1 = p End Function

Private Sub Command1_Click() Dim n As Integer, m As Integer For n = 1 To 10

a(n) = Int(Rnd * 90) + 10 Print a(n); \ \

123

124

Visual Basic语言程序设计习题与上机指导

Next

n = Val(InputBox(\移动第几个元素\ If n >= UboundA. Then Exit Sub Do

m = InputBox(\把第\个元素移动到哪里?\ Loop Until m <= Ubound(a) And m > Lbound(a) yd a(), n, m Print

Print \移动后的数组:\ For n = 1 To 10

Print a(n); \ \ Next End Sub

5. 程序界面如图所示。

Dim pan(10) As Shape Dim l(3) As Integer Dim p(3) As Integer Dim k As Integer

Dim h(3, 10) As Integer Dim num As Integer

Private Sub han(m As Integer, u As Integer, v As Integer, w As Integer) If m = 1 Then

Call yidong(u, w) Else

第二部分 练习题与答案

Call han(m -1, u, w, v) Call yidong(u, w) Call han(m-1, v, u, w) End If End Sub

Private Sub yidong(x As Integer, y As Integer) a = p(x) b = p(y) + 1

h(y, b) = h(x, a) pan(h(y, b) ).Top = 700 Call yianshi(0.2)

pan(h(y, b) ).Left = l(y) - pan(h(y, b) ).Width / 2 Call yianshi(0.4)

pan(h(y, b) ).Top = 3700 - p(y) * 100 Call yianshi(0.2) p(x) = a - 1 p(y) = b k = k + 1

Label2.Caption = \移动了\次\ Form1.Refresh End Sub

Private Sub yianshi(PauseTime) Dim start start = Timer

Do While Timer < start + PauseTime Loop End Sub

Private Sub Command1_Click() For i = 1 To num h(1, i) = i Next

p(1) = num k = 0

Call han(num, 1, 2, 3) s = l(1): l(1) = l(3): l(3) = s For i = 1 To 3

125

126

Visual Basic语言程序设计习题与上机指导

p(i) = 0

Next End Sub

Private Sub Form_Activate() num = Val(Text1.Text) For i = 1 To num

pan(i).Left = pan(i).Tag pan(i).Visible = True Next

For i = num + 1 To 10 pan(i).Visible = False Next

For i = 1 To 3

l(i) = Line1(i -1).X1 Next End Sub

Private Sub Form_Load() For i = 1 To 10

Set pan(i) = Shape1(i-1) pan(i).Tag = pan(i).Left Next End Sub

Private Sub Text1_Change() n = Text1.Text

If n > 2 And n < 10 Then Form_Activate End Sub

6.

Dim a, b, c As Integer 'Function 过程:

Function factF(ByVal n As Integer) t = 1

For i = 1 To n t = t * i Next i

factF = t

第二部分 练习题与答案

End Function 'Sub 过程:

Sub factS(ByVal n As Integer, fac) fac = 1

For i = 1 To n fac = fac * i Next i End Sub

Private Sub Command1_Click() Print

Print \调用Function 过程的输出结果:\ Print

s = factF(a) + factF(b) + factF(c) Print s End Sub

Private Sub Command2_Click() Print

Print \调用Sub过程的输出结果:\ Print

Dim A1, B1, C1 As Double factS a, A1 factS b, B1 factS c, C1

s = A1 + B1 + C1 Print s End Sub

Private Sub Form_Load()

Command1.Caption = \调用Function 过程\ Command2.Caption = \调用Sub 过程\ a = 5 b = 7 c = 9 End Sub 7.

127

128

Visual Basic语言程序设计习题与上机指导

Function phic(ByVal Num As Long) As Boolean

If Num * Num Mod 10 = Num Or Num * Num Mod 100 = Num Or _ Num * Num Mod 1000 = Num Then phic = True Else

phic = False End If End Function

Private Sub Command1_Click()

Dim RetNum As Boolean , n As Integer For n = 1 To 1000

RetNum = phic(n)

If RetNum = True Then

Print n; \的平方为\是一个守形数\ End If Next n End Sub

8.

Private Static Function fib(ByVal k As Integer) If k <= 2 Then fib = 1

Exit Function Else

fib = fib(k - 1) + fib(k - 2) End If End Function

Private Sub Command1_Click()

Dim k As Integer , i As Integer, d As Integer Print

k = InputBox(\欲输出斐波纳契数列的前几项\ Print \数列的前\项是:\ For i = 1 To k d = fib(i) Print d,

If i Mod 4 = 0 Then Print End If Next i

第二部分 练习题与答案

End Sub

129

第6章答案

1. 使用Output选项打开一个已存在的文件,将会创建一个新的顺序文件。磁盘上的原有同名文件将被覆盖,其中数据将会丢失。

2. 使用Append选项写文件则是向文件的尾部追加式写入数据,原有的同名文件中的数据仍然保留,若磁盘上没有该文件,则创建一个新文件。

3. 程序界面如图所示:

Private Type studentrec

'姓名、学号、性别定义为字符串 xm As String xh As String xb As String

'数学、英语、电子变量定义为单精度 sx As Single yy As Single dz As Single End Type

Dim stu() As studentrec

Private Sub Command1_Click(Index As Integer) Dim p1 As Booleam, p2 As Booleam Select Case Index Case 0

n = UBound(stu) For i = 1 To n

130

Visual Basic语言程序设计习题与上机指导

p1 = stu(i).sx >= 85 And stu(i).yy > =85 And stu(i).dz >= 85

p2 = stu(i).sx + stu(i).yy + stu(i).dz >= 270 If p1 Or p2 Then '写入数据文件

Write #1, stu(i).xh, stu(i).xm, stu(i).xb, stu(i).sx, stu(i).yy, stu(i).dz End If Next

'关闭数据文件 Close #1 Case 1

Unload Me End Select End Sub

Private Sub Form_Load()

Dim n As Integer, in As Integer '打开顺序文件stu.dat

Open \ n = 1 i = 1

Do Until EOF(1)

ReDim Preserve stu(1 To n) '读入数据文件

Input #1, stu(i).xh, stu(i).xm, stu(i).xb, stu(i).sx, stu(i).yy, stu(i).dz

List1.AddItem stu(i).xh & \\\Str(stu(i).yy) & Str(stu(i).dz) n = n + 1 i = i + 1 Loop

'关闭数据文件 Close #1

Open \End Sub

第7章答案

1 B 2 D 3 C 4 B 5 C 6 B 7 D 8 D 9 A 10 C 第8章答案

第二部分 练习题与答案

一、选择题

1 A 11 A 2 A 12 B 3 B 13 D 4 D 14 D 5 C 15 C 6 A 16 C 7 B 17 A 8 C 18 C 9 A 19 A 10 D 20 C 131

二、填空题

1. A. PasswordChar 2. A. 10 10 3. A. List1_DblClick() 4. A. Change

B. Text B. 58 58 B. ListIndex B. Value

C. List1.Text

第9章答案

1. Visual Basic中的菜单有两种,分别是弹出式菜单、下拉式菜单。菜单以分组的形式组织多个命令或操作,为用户灵活操作应用程序提供了便捷的手段。

2. 可以在系统的“工具”菜单中选择“菜单编辑器”,或在“工具栏”上单击“菜单编辑器”按钮都可以打开菜单编辑器,或在设计窗口中在右键快捷菜单中选择“菜单编辑器”。

3. 先使用菜单编辑器编辑好至少包含一个菜单项的菜单(与设计一般菜单类似),在程序中使用PopupMenu方法来显示弹出菜单。

4. ToolBar控件包含用来创建工具栏的 Button 对象的集合。一般情况下,工具栏中的按钮与应用菜单中的菜单项相对应,可以用它们来访问应用程序最常用的功能和命令。Toolbar 控件也可以包含其他控件,例如ComboBox控件或TextBox控件。常见的用途如下:

① 用一致的工具栏为不同应用程序提供统一的界面。 ② 为常用功能,例如文件操作,提供简便的访问方法。 ③ 为应用程序提供图形化的直观界面。 ImageList 控件包含 ListImage 对象的集合,该集合中的每个对象都可以通过其索引或关键字被引用。ImageList控件不能独立使用,只是作为一个便于向其他控件提供图像的资料 中心。

ImageList 控件包含了一个图像的集合,这些图像可以被其他Windows 公共控件使用,特别是 ListView、TreeView、TabStrip和ToolBar控件。例如,在ToolBar控件的按钮上显示的所有图像都可以用 ImageList 控件存储。

ImageList可能的用途如下:

存储表示打开文件夹、关闭文件夹和文档的图像。这些图像可以动态地分配给 TreeView 控件的 Node 对象,以便在节点展开或折叠时表示它的不同状态,或者表示节点是文档还是文件夹。

存储表示一般计算机操作,例如保存、打开以及打印文件的图像。这样就可以将这些图像分配给应用程序中Toolbar控件上的Button对象。

存储表示拖放操作的图像,例如MousePointer图标和DragIcons。将ImageList控件与

132

Visual Basic语言程序设计习题与上机指导

Toolbar控件相关联。

工具栏通常用图标代表应用程序的功能。例如,软盘的图标一般被理解为“保存文件”功能。要使工具栏能够显示这样的图像,必须首先将 ImageList 控件与 Toolbar 控件相关联。这项工作在设计时和运行时均可完成。

在设计时将ImageList控件和ToolBar控件相关联 在ImageList控件中装入用于ToolBar的图像。

用鼠标右键单击ToolBar 控件,并单击“属性”打开“属性页”对话框。 在“通用”选项卡中,单击“图像列表”框,选择需要的ImageList控件。 在运行时将ImageList控件与ToolBar控件相关联,只需将ImageList属性设置为ImageList控件的名称,如下面的示例所示:

Private Sub Form_Load()

'Toolbar 控件名为“tlbTools”, 'ImageList 控件名为“imlTools” tlbTools.ImageList = imlTools End Sub 5.

要手工创建工具栏,请按照以下步骤执行: (1) 在MDI窗体上放置一个图片框。

图片框的宽度会自动伸展,直到填满MDI窗体工作空间。工作空间就是窗体边框以内的区域,不包括标题条、菜单栏或所有的工具栏、状态栏,或者可能在窗体上的滚动条。

注意:只能把那些直接支持Align属性的控件放置在MDI窗体上(图片框是支持这一属性的惟一的标准控件)。

(2) 在图片框中,放置任何想在工具栏上显示的控件。

典型地,用CommandButton或Image 控件来创建工具栏按钮。

要在图片框中添加控件,单击工具栏中的控件按钮,然后在图片框中画出它。

注意当MDI窗体中包含了图片框时,该 MDI 窗体的内部区域不包括图片框在内。例如:MDI 窗体的ScaleHeigh 属性返回 MDI 窗体的内部高度,这个高度已不包括图片框的高度。

(3) 设置设计时属性。

使用工具栏的一个好处是可以显示一个形象的命令图示。Image 控件是作为工具栏按钮的一个很好的选择,因为可以用它来显示一个位图。在设计时设置其 Picture 属性来显示一个位图。这样,当该按钮被单击时,即能提供一个命令执行的可见信息。也可以通过设置按钮的ToolTipText属性来使用工具提示,这样,当用户把鼠标指针保持在一个按钮上时,就可以显示出该工具栏按钮的名称。

(4) 编写代码。

因为工具栏频繁地用于提供对其他命令的快捷访问,因而在大部分时间内都是从每一个按钮的Click事件中调用其他过程,比如对应的菜单命令。

第10章答案

第二部分 练习题与答案

133

1. 对话框根据工作时是否允许在不同窗体之间切换焦点可分为:模式和非模式对话框。 根据对话框的生成方式可分为:由CommonDialog控件生成的通用对话框,直接使用窗体作为对话框,使用InputBox和MsgBox函数生成对话框。

2. 要自定义现存的对话框,请按照以下步骤执行: (1) 从“工程”菜单中选取“添加窗体”,在工程中添加一现存的窗体。 (2) 从“文件”菜单中选取“filename 另存为”,并输入新的文件名(这可以防止改变已存在的窗体版本)。

(3) 根据需要自定义窗体的外观。 (4) 在代码窗口中自定义事件过程。

要创建新的对话框,请按照以下步骤执行: 从“工程”菜单中选取“添加窗体”。或者在工具栏上单击“窗体”按钮,创建新的窗体。如有必要,自定义窗体外观。在“代码”窗口中自定义事件过程。

3. 从“工程”菜单中选定“部件”,将控件添加到工具箱中。在标记对话框的“控件”中找到“Microsoft Common 的Dialog Control 6.0”,并选定控件,然后单击“确定”按钮。

4. 不能改变大小。在程序中使用如下方法显示不同的对话框。

方 法 ShowOpen ShowSave ShowColor ShowFont ShowPrinter ShowHelp 显示“打开”对话框 显示“另存为”对话框 显示“颜色”对话框 显示“字体”对话框 显示“打印”或“打印选项”对话框 调用 Windows 帮助引擎 所显示的对话框 5. 设置CommonDialog控件的DialogTitle属性。

6. 可以设置 Filter 属性,这样对话框就只显示某种文件类型,如文本文件。 7. 在运行时,当用户选择一个文件,“关闭”对话框时,FileName 属性既为选定的文 件名。

第11章答案

1. 可使用对象的 ScaleLeft、ScaleTop、ScaleWidth 和 ScaleHeight 这些属性,来创建自定义刻度。

一个更有效的改变坐标系统的途径,不是设置个别属性,而是使用 Scale 方法。可使用下述的语法,指定自定义刻度:

[object.]Scale (x1, y1) – (x2, y2)

x1和y1的值,决定了ScaleLeft和ScaleTop属性的设置值。两个x坐标之间的差值和两个y坐标之间的差值,分别决定了ScaleWidth和ScaleHeight属性的设置值。

2. ScaleLeft、ScaleTop、ScaleWidth、ScaleHeight 和 ScaleMode 3. 在对象上画圆、椭圆或弧。

134

Visual Basic语言程序设计习题与上机指导

语法:

object.Circle [Step] (x, y), radius, [color, start, end, aspect] Circle 方法的语法有如下的对象限定符和部分:

部 分 object Step (x, y) radius 描 述 可选的。对象表达式,其值为“应用于”列表中的对象。如果object省略,具有焦点的窗体作为object 可选的。关键字,指定圆、椭圆或弧的中心,它们相对于当前object的CurrentX 和 CurrentY 属性提供的坐标 必需的。 Single (单精度浮点数),圆、椭圆或弧的中心坐标。object 的 ScaleMode 属性决定了使用的度量单位 必需的。Single (单精度浮点数),圆、椭圆或弧的半径。 object 的 ScaleMode 属性决定了使用的度量单位 可选的。Long (长整型数),圆的轮廓的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色 可选的。Single (单精度浮点数),当弧、或部分圆或椭圆画完以后,start 和 end 指定(以弧度为单位)弧的起点和终点位置。其范围从 -2 pi 到 2 pi 。起点的缺省值是0; 终点的缺省值是2 * pi 可选的。Single (单精度浮点数),圆的纵横尺寸比。缺省值为 1.0,它在屏幕上产生一个标准圆(非椭圆) color start, end aspect 说明:

① 想要填充圆,使用圆或椭圆所属对象的FillColor和FillStyle属性。只有封闭的图形才能填充。封闭图形包括圆、椭圆或扇形。

② 画部分圆或椭圆时,如果start为负,Circle画一半径到start,并将角度处理为正的;如果end为负,Circle画一半径到end,并将角度处理为正的。Circle 方法总是逆时针(正)方向绘图。

③ 画圆、椭圆或弧时线段的粗细取决于DrawWidth属性值。在背景上画圆的方法取决于 DrawMode和DrawStyle属性值。

④ 画角度为0的扇形时,要画出一条半径(向右画一水平线段),这时给start规定一很小的负值,不要给0。

⑤ 可以省略语法中间的某个参数,但不能省略分隔参数的逗号。被指定的最后一个参数后面的逗号是可以省略的。

Circle 执行时,CurrentX和CurrentY属性被参数设置为中心点。

4. 通过在多个图片之间进行轮转,可以创建动画。需要应用程序进行选择当前图像所用位图的操作,可以使用控件数组对动画中各个图片进行控制的。

另一种实现动画的方法是改变图形对象或控件的位置。 5. 程序代码

Private Sub PSetDemo()

第二部分 练习题与答案

' 创建随机RGB颜色 R = 255 * Rnd G = 255 * Rnd B = 255 * Rnd

' XPos 决定彩色点在窗体中的随机水平位置 XPos = Rnd * ScaleWidth

' YPos 决定彩色点在窗体中的随机垂直位置 YPos = Rnd * ScaleHeight

' 以随机色在 XPos, YPos 画一个彩色点 PSet (XPos, YPos), RGB(R, G, B. End Sub

135

第12章答案

1. 几乎所有类型数据库。

2. 可以通过DAO、ADO或数据环境方式来访问数据库。操作数据可以通过Command对象对连接的数据库进行操作或对RecordSet对象进行操作后再更新。

3. 可以通过记录集的一些方法对数据进行操作,如使用AddNew添加记录,用Delete删除记录等。

4. 所连接的数据源可在“连接字符串”中指定,但是对于不同的提供者和数据源而言,连接字符串中指定的参数会有所不同。

ADO打开连接的主要方法是使用Connection.Open方法。另外也可在同一个操作中调用快捷方法Recordset.Open打开连接并在该连接上发出命令。以下是Visual Basic中用于两种方法的语法:

Connection.Open ConnectionString, UserID, Password, OpenOptions

Recordset.Open Source, ActiveConnection, CursorType, LockType, Options 比较这两种方法将有益于加深对 ADO 方法操作数的总体了解。 ADO提供了多种指定操作数的简便方式。例如:Recordset.Open可带有ActiveConnection 操作数,即文字字符串,它是代表字符串的变量或代表一个打开连接的Connection对象。

对象中的多数方法具有属性,当操作数缺省时属性可以提供参数。使用Connection.Open,可以省略显式ConnectionString操作数并通过将ConnectionString的属性设置为“DSN=pubs;uid=sa;pwd=pwd;database=pubs”隐式地提供信息。

与此相反,连接字符串中的关键字操作数uid和pwd可为Connection对象设置UserID和Password参数。

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

Top