最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

vb课后练习答案习题解答 (5)

IT圈 admin 30浏览 0评论

2024年3月18日发(作者:丘清俊)

第5章 数组与记录

5.1 填空题

1.若要定义一个包含10个字符串元素,且下界为1的一维数组s,则数组说明语句为

( )。

答案:Dim s(1 To 10) As String

2.若要定义一个元素为整型数据的二维数组a,且第一维的下标从0到5,第二维下

标从-3到6,则数组说明语句为( )。

答案:Dim a(0 To 5,-3 To 6) As Integer

3.如果数组元素的下标值为实数,则VB系统会按( )进行处理。

答案:四舍五入原则

4.数组元素个数可以改变的数组称为( );数组元素可以存放不同类型数据的数组

称为( )。

答案:可调数组、可变类型数组

5.数组刷新语句用于( )。若被刷新的数组是数值数组,则把所有元素置( );

若被刷新的数组为字符串数组,则把所有元素置( )。

答案:清除指定数组内容、0、空字符串

10.控件数组是由一组类型和( )相同的控件组成,共享( )。

答案:名字、同一个事件过程

11.控件数组中的每一个控件都有唯一的下标,下标值由( )属性指定。

答案:Index

12.建立控件数组有两种方法:( )和( )。

答案:在设计阶段通过相同Name属性值来建立、在程序代码中使用Load方法

5.2 选择题

1.下列一维数组说明语句错误的是( )。

a) Dim b(100) AS Double

b) Dim b(-5 To 0) AS Byte

c) Dim b(-10 To –20) AS Integer

d) Dim b(5 To 5) AS String

答案:c

2.若有数组说明语句为:Dim a(-3 To 8), 则数组a包含元素的个数是( )。

a) 5 b) 8 c) 11 d) 12

答案:d

3.设有数组说明语句:Dim c(1 To 10),则下面表示数组c的元素选项中( )是

错误的。

a) c(i-1) b) c(5+0.5) c) c(0) d) c(10)

答案:c

4.下列数组说明语句中正确的是( )。

a) Dim a(-1 To 5,8)AS String

b) Dim a(n,n)AS Integer

c) Dim a(0 To 8,5 To –1)AS Single

d) Dim a(10,-10)AS Double

答案:a

5.设有数组说明语句:Dim b(-1To2,-2To2),则数组b中元素的个数是( )。

a) 12 b) 15 c) 16 d) 20

答案:d

6.设有数组说明语句:Dim c(-1To1,1To5),则下列表示数组c的元素选项中

( )是正确的。

a) c(i+j) b) c(i)(j) c) c(i+1,j-1) d) c(1,0)

答案:c

7.若有数组说明语句:Dim a()AS Integer,则a被定义为( )。

a)定长数组 b)可调数组 c)静态数组 d)可变类型数组

答案:b

8.若有数组说明语句:Dim t(1 To 10)AS Variant,则t被定义为(

a)数值数组 b)可调数组 c)字符串数组 d)可变类型数组

答案:d

9.下面选项中,错误的是( )。

a) Dim s As variant :s = Array("one ", " two ", " Three ")

b) Dim b :b=Array(1,2,3)

c) Dim b As Integer :b=Array(1,2,3)

d) Dim b As variant :b=Array(1,2,3)

答案:c

10.若有以下说明语句

Type employee

num As Integer

salary As Single

End Type

Dim programmer As employee

则下面表示记录变量programmer的 成员Salary正确的是( )。

a) programmer→salary b) .salary

c) mmer d)

答案:d

11.已知有说明语句

Type dat

year As Integer

month As Integer

day As Integer

End Type

Type emp

no As Integer

name As String﹡10

sex As String*1

birthday As dat

salary As single

End Type

Dim programmer As emp

。 )

并假设变量programmer所表示职工的出生日期是“1978年10月1日”,则下列正确的赋值

语句是( )。

a) year=1978:month=10:day=1

b) =1978:=10: =1

c) =1978:=10 :=1

d)=1978:=10:

=1

答案:d

12.假设有第11题的说明语句,则下列With语句正确的是( )。

a) with progammer

no=1000:name= "张勇" : sex= "男"

with birthday

year=1978 :month=10 :day=1

End with

salary=2800

End with

b) with programmer

.no=1000:.name= "张勇" :.sex="男"

with .birthday

.year=1978 :.month=10 :.day=1

End with

.salary=2800

End with

c) with programmer

.no=1000 :.name="张勇" :.sex="男"

.=1978 :.=10 :.=1

.salary=2800

End with

d) with programmer,birthday

.no=1000:.name="张勇" :.sex="男"

.year=1978 :month.=10 :day.=1

.salary=2800

End with

答案:c

5.3 解答题

1.使用关键字Dim,ReDim和Static定义的数组分别称为什么数组?它们各有什么特

点?

答:使用关键字Dim说明的数组称为定长数组。说明定长数组时,应同时确定维数和下

标范围。VB编译程序在编译时为定长数组分配相应的内存区域,并且在应用程序运行期间,

定长数组都占有这块内存区域。

使用关键字ReDim说明的数组称为可调数组或动态数组。若在程序运行前,不能确定数

组的大小或在程序运行时需要改变数组的大小,则该数组应定义为可调数组。在应用程序运

行期间,可调数组占用的内存区域可能会改变。

使用Static说明的数组称为静态数组。在整个应用程序运行期间,系统分配固定内存

区域。定义该数组的过程执行结束时,数组的值仍保留,该过程再次被调用时,数组的值为

上次过程调用结束时的值。而定长数组和可调数组则不然,定义它们的过程执行结束时,它

们的值不保留。

5.4 阅读程序,并写出执行结果

1.

Private Sub Command1_Click()

Dim f(10) As Integer

f(0) = 1: f(1) = 1

For i = 2 To 10

f(i) = f(i - 2) + f(i - 1)

Next i

For i = 0 To 10

If i Mod 4 = 0 Then Print

Print f(i),

Next i

End Sub

答案:

1 1 2 3

5 8 13 21

34 55 89

2.

Private Sub Command1_Click()

Dim s(1 To 6) As Integer

For i = 1 To 6

s(i) = i

Next i

For i = 1 To 3

For j = 4 To 6

t = s(i) :s(i) = s(j) :s(j) = t

Next j

Next i

For i = 1 To 6

Print s(i);

Next i

End Sub

答案:

6 5 4 3 2 1

3.

Private Sub Command1_Click()

Dim a(1 To 9) As Integer

Dim b(1 To 3, 1 To 3) As Integer

Dim i%, j%

For i = 1 To 9

a(i) = i

Next i

For i = 1 To 3

For j = 1 To 3

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

If j <= i Then Print b(i, j),

Next j

Print

Next i

End Sub

答案:

1

2 4

3 6 9

4.

Private Sub Command1_Click()

Dim a(1 To 5, 1 To 5) As Integer, i%, j%

For i = 1 To 5

For j = 1 To 5

If i <= j Then a(i, j) = 1 Else a(i, j) = i - j + 1

Next j

Next i

For i = 1 To 5

For j = 1 To 5

Print a(i, j);

Next j

Print

Next i

End Sub

答案:

5.5编程题

2.编一程序,使用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出

该数组,然后求这组数中的最大值及最大值在数组中的位置。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.2所示。

表3.5.2 属性设置

控件名称

Form1

属性名

Caption

属性值

求两两不相同随机

数最大值及其位置

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Cls

Dim a(1 To 10), i%, j%, max%, p%

Randomize

For i = 1 To 10

l: a(i) = Int((90 * Rnd + 10))

For j = 1 To i - 1

If a(i) = a(j) Then GoTo l

Next j

Next i

Print: Print

Print Tab(15); "产生的随机数为:"

Print

For i = 1 To 10

Print "a("; i; ")="; a(i),

If i Mod 4 = 0 Then Print

Next i

max = a(1): p = 1

For i = 2 To 10

If a(i) > max Then max = a(i): p = i

Next i

Print: Print

Print Tab(15); "最大值为:"; max

Print Tab(10), "最大值所在数组元素的下标为:"; p

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。单击标题为“开始”的命令按钮,系统执行相应的

Click事件过程。执行结果如图3.5.2所示。单击标题为“结束”的命令按钮,结束程序的

执行。

图3.5.2 执行结果

4.给定两组已按升序排列好的整型数据,编写一个程序把它们合并为一组仍按升序排

列的数据。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.4所示。

表3.5.4 属性设置

控件名称

Form1

属性名

Caption

属性值

把两个升序数组合并

为一个升序数组

Command1

Command2

Caption

Caption

合并

结束

(2)程序代码

Dim a As Variant, b As Variant, c%(0 To 11)

Private Sub Form_Activate()

Dim i%

a = Array(1, 2, 7, 8)

Print: Print: Print

Print Tab(5); "第一个升序数组:";

For i = 0 To 3

Print a(i);

Next i

Print: Print

b = Array(3, 4, 8, 8, 9, 10, 12, 12)

Print Tab(5); "第二个升序数组:";

For i = 0 To 7

Print b(i);

Next i

End Sub

Private Sub Command1_Click()

Dim i%, j%, k%

i = 0: j = 0: k = 0

While i < 4 And j < 8

If a(i) > b(j) Then

c(k) = b(j): k = k + 1: j = j + 1 '比较a和b中的元素,把较大的元素移到

Else 'c中,直到其中一个数组搬空为止

c(k) = a(i): k = k + 1: i = i + 1

End If

Wend

While i < 4

c(k) = a(i): i = i + 1: k = k + 1 '把a中剩余的元素搬到c中

Wend

While j < 8

c(k) = b(j): j = j + 1: k = k + 1 '把b中剩余的元素搬到c中

Wend

Print: Print

Print Tab(5); "合并后的升序数组:"

Print Tab(8);

For i = 0 To 11

Print c(i);

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,系统执行

Form_Activate

事件过程,屏幕出现用户界面,并显示两个升序数

组。单击标题为“合并”的命令按钮,系统执行相应的Click事件过程。执行结果如图3.5.4

所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.5.4 执行结果

5.从键盘上输入一个正整数,判别它是否为回文数。所谓回文数是指正读和反读都一

样的数。例如,123321是回文数。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.5所示。

表3.5.5 属性设置

控件名称

Form1

属性名

Caption

属性值

判别一个整数是否

为回文数

Command1

Command2

Caption

Caption

开始

结束

(2)程序代码

Private Sub Command1_Click()

Cls

Dim num As Long, n As Long, i%, k%, f%, b%(10)

num = InputBox("请输入一个整数:")

k = 0: n = num

Do

b(k) = n Mod 10 '把num的各位数字存入数组b中

k = k + 1

n = n 10

Loop While n <> 0

f = 1

For i = 0 To (k - 1) / 2

If b(i) <> b(k - 1 - i) Then f = 0 'num的第i位与第k-1-i位数字不相同时f置0

Next i '说明num不是回文数

Print: Print: Print: Print

If f Then

Print Tab(18); num; "是回文数!"

Else

Print Tab(16); num; "不是回文数!"

End If

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。单击标题为“开始”的命令按钮,系统执行相应的

Click事件过程。在调用InputBox 函数出现对话框时,输入一个整数,例如,1234321。执

行结果如图3.5.5所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.5.5 执行结果

6. 编一程序,把一个m行n列矩阵中的元素存放到一个二维数组中,并求出该数组的平

均值、最大值和最小值。

解答:

(1) 界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-5-6所示。

表3-5-6 第6题的属性设置

控件名称 属性名 属性值

Form1 Caption 求矩阵的平均值、最小值和

最大值

Command1 Caption 开始

Command2 Caption 结束

(2) 程序代码

Private Sub Command1_Click()

Dim i%, j%, m%, n%, sum!, ave!, max!, min!

Dim a() As Single

m = InputBox("请输入矩阵的行数:")

n = InputBox("请输入矩阵的列数:")

ReDim a(1 To m, 1 To n)

Print

Print Tab(2); "输入的矩阵为:"

For i = 1 To m

Print Tab(15);

For j = 1 To n

a(i, j) = InputBox("输入第" & Str(i) & "行" & "第" & Str(j) & "列元素:")

Print a(i, j);

Next j

Print

Next i

sum = 0

For i = 1 To m

For j = 1 To n

sum = sum + a(i, j) '求和

Next j

Next i

ave = sum / (m * n) '求平均值

max = a(1, 1)

For i = 1 To m

For j = 1 To n

If a(i, j) > max Then max = a(i, j) '求最大值

Next j

Next i

min = a(1, 1)

For i = 1 To m

For j = 1 To n

If a(i, j) < min Then min = a(i, j) '求最小值

Next j

Next i

Print

Print Tab(2); "平均值为:"; ave

Print Tab(2); "最大值为:"; max

Print Tab(2); "最小值为:"; min

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,需多次调用InputBox 函数。在调用InputBox 函数出现对话框时,输入

矩阵的行数、矩阵的列数和数组元素的值。例如,输入矩阵的行数3、矩阵的列数3和数组

元素的值1、2、3、4、5、6、7、8、9。执行结果如图3.5.6所示。

7. 某城市三个百货公司某个季度销售电视机的情况和价格由如下表格表示,求各个百

货公司的电视机营业额。

牌子

公司

第一百货商店 300 250

240

210

150

200

180

康 佳

TCL

长 虹

第二百货商店 200

第三百货商店 280

牌 子

康 佳

TCL

长 虹

解答:

(1)界面设计和属性设置

价 格

3500

3300

3800

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.7所示。

表3.5.7 属性设置

控件名称 属性名 属性值

Form1

Command1

Command2

Caption

Caption

Caption

计算电视机销售额

开始

结束

(2)程序代码

Option Explicit

Private Sub Command1_Click()

Cls

Dim i%, j%, sum!

Dim a%(1 To 3, 1 To 3), p!(3)

Print Tab(23); "各百货公司的销售量"

Print Tab(20); "康佳"; Tab(30); "TCL"; Tab(40); "长虹"

For i = 1 To 3

Print Tab(5); "第" & Str(i) & " 百货公司";

For j = 1 To 3

a(i, j) = InputBox("输入第" & Str(i) & "百货公司" & "第" & Str(j) & "种牌子销售量:")

Print Tab(j * 10 + 10); a(i, j);

Next j

Print

Next i

Print Tab(25); "各种牌子价格"

Print Tab(20); "康佳"; Tab(30); "TCL"; Tab(40); "长虹"

For i = 1 To 3

p(i) = InputBox("输入第" & Str(i) & "种牌号价格:")

Print Tab(i * 10 + 10); p(i);

Next i

Print: Print

For i = 1 To 3

sum = 0

For j = 1 To 3

sum = sum + a(i, j) * p(j)

Next j

Print Tab(10); "第" & Str(i) & "百货公司的销售额为:"; sum; "元"

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。单击标题为“开始”的命令按钮,系统执行相应的

Click事件过程。在执行的过程中,需多次调用InputBox 函数。在调用InputBox 函数出

现对话框时,按表格中的数据输入每个百货公司销售电视机的数量和各种牌子的价格。执行

结果如图3.5.7所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.5.7 执行结果

2024年3月18日发(作者:丘清俊)

第5章 数组与记录

5.1 填空题

1.若要定义一个包含10个字符串元素,且下界为1的一维数组s,则数组说明语句为

( )。

答案:Dim s(1 To 10) As String

2.若要定义一个元素为整型数据的二维数组a,且第一维的下标从0到5,第二维下

标从-3到6,则数组说明语句为( )。

答案:Dim a(0 To 5,-3 To 6) As Integer

3.如果数组元素的下标值为实数,则VB系统会按( )进行处理。

答案:四舍五入原则

4.数组元素个数可以改变的数组称为( );数组元素可以存放不同类型数据的数组

称为( )。

答案:可调数组、可变类型数组

5.数组刷新语句用于( )。若被刷新的数组是数值数组,则把所有元素置( );

若被刷新的数组为字符串数组,则把所有元素置( )。

答案:清除指定数组内容、0、空字符串

10.控件数组是由一组类型和( )相同的控件组成,共享( )。

答案:名字、同一个事件过程

11.控件数组中的每一个控件都有唯一的下标,下标值由( )属性指定。

答案:Index

12.建立控件数组有两种方法:( )和( )。

答案:在设计阶段通过相同Name属性值来建立、在程序代码中使用Load方法

5.2 选择题

1.下列一维数组说明语句错误的是( )。

a) Dim b(100) AS Double

b) Dim b(-5 To 0) AS Byte

c) Dim b(-10 To –20) AS Integer

d) Dim b(5 To 5) AS String

答案:c

2.若有数组说明语句为:Dim a(-3 To 8), 则数组a包含元素的个数是( )。

a) 5 b) 8 c) 11 d) 12

答案:d

3.设有数组说明语句:Dim c(1 To 10),则下面表示数组c的元素选项中( )是

错误的。

a) c(i-1) b) c(5+0.5) c) c(0) d) c(10)

答案:c

4.下列数组说明语句中正确的是( )。

a) Dim a(-1 To 5,8)AS String

b) Dim a(n,n)AS Integer

c) Dim a(0 To 8,5 To –1)AS Single

d) Dim a(10,-10)AS Double

答案:a

5.设有数组说明语句:Dim b(-1To2,-2To2),则数组b中元素的个数是( )。

a) 12 b) 15 c) 16 d) 20

答案:d

6.设有数组说明语句:Dim c(-1To1,1To5),则下列表示数组c的元素选项中

( )是正确的。

a) c(i+j) b) c(i)(j) c) c(i+1,j-1) d) c(1,0)

答案:c

7.若有数组说明语句:Dim a()AS Integer,则a被定义为( )。

a)定长数组 b)可调数组 c)静态数组 d)可变类型数组

答案:b

8.若有数组说明语句:Dim t(1 To 10)AS Variant,则t被定义为(

a)数值数组 b)可调数组 c)字符串数组 d)可变类型数组

答案:d

9.下面选项中,错误的是( )。

a) Dim s As variant :s = Array("one ", " two ", " Three ")

b) Dim b :b=Array(1,2,3)

c) Dim b As Integer :b=Array(1,2,3)

d) Dim b As variant :b=Array(1,2,3)

答案:c

10.若有以下说明语句

Type employee

num As Integer

salary As Single

End Type

Dim programmer As employee

则下面表示记录变量programmer的 成员Salary正确的是( )。

a) programmer→salary b) .salary

c) mmer d)

答案:d

11.已知有说明语句

Type dat

year As Integer

month As Integer

day As Integer

End Type

Type emp

no As Integer

name As String﹡10

sex As String*1

birthday As dat

salary As single

End Type

Dim programmer As emp

。 )

并假设变量programmer所表示职工的出生日期是“1978年10月1日”,则下列正确的赋值

语句是( )。

a) year=1978:month=10:day=1

b) =1978:=10: =1

c) =1978:=10 :=1

d)=1978:=10:

=1

答案:d

12.假设有第11题的说明语句,则下列With语句正确的是( )。

a) with progammer

no=1000:name= "张勇" : sex= "男"

with birthday

year=1978 :month=10 :day=1

End with

salary=2800

End with

b) with programmer

.no=1000:.name= "张勇" :.sex="男"

with .birthday

.year=1978 :.month=10 :.day=1

End with

.salary=2800

End with

c) with programmer

.no=1000 :.name="张勇" :.sex="男"

.=1978 :.=10 :.=1

.salary=2800

End with

d) with programmer,birthday

.no=1000:.name="张勇" :.sex="男"

.year=1978 :month.=10 :day.=1

.salary=2800

End with

答案:c

5.3 解答题

1.使用关键字Dim,ReDim和Static定义的数组分别称为什么数组?它们各有什么特

点?

答:使用关键字Dim说明的数组称为定长数组。说明定长数组时,应同时确定维数和下

标范围。VB编译程序在编译时为定长数组分配相应的内存区域,并且在应用程序运行期间,

定长数组都占有这块内存区域。

使用关键字ReDim说明的数组称为可调数组或动态数组。若在程序运行前,不能确定数

组的大小或在程序运行时需要改变数组的大小,则该数组应定义为可调数组。在应用程序运

行期间,可调数组占用的内存区域可能会改变。

使用Static说明的数组称为静态数组。在整个应用程序运行期间,系统分配固定内存

区域。定义该数组的过程执行结束时,数组的值仍保留,该过程再次被调用时,数组的值为

上次过程调用结束时的值。而定长数组和可调数组则不然,定义它们的过程执行结束时,它

们的值不保留。

5.4 阅读程序,并写出执行结果

1.

Private Sub Command1_Click()

Dim f(10) As Integer

f(0) = 1: f(1) = 1

For i = 2 To 10

f(i) = f(i - 2) + f(i - 1)

Next i

For i = 0 To 10

If i Mod 4 = 0 Then Print

Print f(i),

Next i

End Sub

答案:

1 1 2 3

5 8 13 21

34 55 89

2.

Private Sub Command1_Click()

Dim s(1 To 6) As Integer

For i = 1 To 6

s(i) = i

Next i

For i = 1 To 3

For j = 4 To 6

t = s(i) :s(i) = s(j) :s(j) = t

Next j

Next i

For i = 1 To 6

Print s(i);

Next i

End Sub

答案:

6 5 4 3 2 1

3.

Private Sub Command1_Click()

Dim a(1 To 9) As Integer

Dim b(1 To 3, 1 To 3) As Integer

Dim i%, j%

For i = 1 To 9

a(i) = i

Next i

For i = 1 To 3

For j = 1 To 3

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

If j <= i Then Print b(i, j),

Next j

Print

Next i

End Sub

答案:

1

2 4

3 6 9

4.

Private Sub Command1_Click()

Dim a(1 To 5, 1 To 5) As Integer, i%, j%

For i = 1 To 5

For j = 1 To 5

If i <= j Then a(i, j) = 1 Else a(i, j) = i - j + 1

Next j

Next i

For i = 1 To 5

For j = 1 To 5

Print a(i, j);

Next j

Print

Next i

End Sub

答案:

5.5编程题

2.编一程序,使用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出

该数组,然后求这组数中的最大值及最大值在数组中的位置。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.2所示。

表3.5.2 属性设置

控件名称

Form1

属性名

Caption

属性值

求两两不相同随机

数最大值及其位置

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Cls

Dim a(1 To 10), i%, j%, max%, p%

Randomize

For i = 1 To 10

l: a(i) = Int((90 * Rnd + 10))

For j = 1 To i - 1

If a(i) = a(j) Then GoTo l

Next j

Next i

Print: Print

Print Tab(15); "产生的随机数为:"

Print

For i = 1 To 10

Print "a("; i; ")="; a(i),

If i Mod 4 = 0 Then Print

Next i

max = a(1): p = 1

For i = 2 To 10

If a(i) > max Then max = a(i): p = i

Next i

Print: Print

Print Tab(15); "最大值为:"; max

Print Tab(10), "最大值所在数组元素的下标为:"; p

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。单击标题为“开始”的命令按钮,系统执行相应的

Click事件过程。执行结果如图3.5.2所示。单击标题为“结束”的命令按钮,结束程序的

执行。

图3.5.2 执行结果

4.给定两组已按升序排列好的整型数据,编写一个程序把它们合并为一组仍按升序排

列的数据。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.4所示。

表3.5.4 属性设置

控件名称

Form1

属性名

Caption

属性值

把两个升序数组合并

为一个升序数组

Command1

Command2

Caption

Caption

合并

结束

(2)程序代码

Dim a As Variant, b As Variant, c%(0 To 11)

Private Sub Form_Activate()

Dim i%

a = Array(1, 2, 7, 8)

Print: Print: Print

Print Tab(5); "第一个升序数组:";

For i = 0 To 3

Print a(i);

Next i

Print: Print

b = Array(3, 4, 8, 8, 9, 10, 12, 12)

Print Tab(5); "第二个升序数组:";

For i = 0 To 7

Print b(i);

Next i

End Sub

Private Sub Command1_Click()

Dim i%, j%, k%

i = 0: j = 0: k = 0

While i < 4 And j < 8

If a(i) > b(j) Then

c(k) = b(j): k = k + 1: j = j + 1 '比较a和b中的元素,把较大的元素移到

Else 'c中,直到其中一个数组搬空为止

c(k) = a(i): k = k + 1: i = i + 1

End If

Wend

While i < 4

c(k) = a(i): i = i + 1: k = k + 1 '把a中剩余的元素搬到c中

Wend

While j < 8

c(k) = b(j): j = j + 1: k = k + 1 '把b中剩余的元素搬到c中

Wend

Print: Print

Print Tab(5); "合并后的升序数组:"

Print Tab(8);

For i = 0 To 11

Print c(i);

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,系统执行

Form_Activate

事件过程,屏幕出现用户界面,并显示两个升序数

组。单击标题为“合并”的命令按钮,系统执行相应的Click事件过程。执行结果如图3.5.4

所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.5.4 执行结果

5.从键盘上输入一个正整数,判别它是否为回文数。所谓回文数是指正读和反读都一

样的数。例如,123321是回文数。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.5所示。

表3.5.5 属性设置

控件名称

Form1

属性名

Caption

属性值

判别一个整数是否

为回文数

Command1

Command2

Caption

Caption

开始

结束

(2)程序代码

Private Sub Command1_Click()

Cls

Dim num As Long, n As Long, i%, k%, f%, b%(10)

num = InputBox("请输入一个整数:")

k = 0: n = num

Do

b(k) = n Mod 10 '把num的各位数字存入数组b中

k = k + 1

n = n 10

Loop While n <> 0

f = 1

For i = 0 To (k - 1) / 2

If b(i) <> b(k - 1 - i) Then f = 0 'num的第i位与第k-1-i位数字不相同时f置0

Next i '说明num不是回文数

Print: Print: Print: Print

If f Then

Print Tab(18); num; "是回文数!"

Else

Print Tab(16); num; "不是回文数!"

End If

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。单击标题为“开始”的命令按钮,系统执行相应的

Click事件过程。在调用InputBox 函数出现对话框时,输入一个整数,例如,1234321。执

行结果如图3.5.5所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.5.5 执行结果

6. 编一程序,把一个m行n列矩阵中的元素存放到一个二维数组中,并求出该数组的平

均值、最大值和最小值。

解答:

(1) 界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-5-6所示。

表3-5-6 第6题的属性设置

控件名称 属性名 属性值

Form1 Caption 求矩阵的平均值、最小值和

最大值

Command1 Caption 开始

Command2 Caption 结束

(2) 程序代码

Private Sub Command1_Click()

Dim i%, j%, m%, n%, sum!, ave!, max!, min!

Dim a() As Single

m = InputBox("请输入矩阵的行数:")

n = InputBox("请输入矩阵的列数:")

ReDim a(1 To m, 1 To n)

Print

Print Tab(2); "输入的矩阵为:"

For i = 1 To m

Print Tab(15);

For j = 1 To n

a(i, j) = InputBox("输入第" & Str(i) & "行" & "第" & Str(j) & "列元素:")

Print a(i, j);

Next j

Print

Next i

sum = 0

For i = 1 To m

For j = 1 To n

sum = sum + a(i, j) '求和

Next j

Next i

ave = sum / (m * n) '求平均值

max = a(1, 1)

For i = 1 To m

For j = 1 To n

If a(i, j) > max Then max = a(i, j) '求最大值

Next j

Next i

min = a(1, 1)

For i = 1 To m

For j = 1 To n

If a(i, j) < min Then min = a(i, j) '求最小值

Next j

Next i

Print

Print Tab(2); "平均值为:"; ave

Print Tab(2); "最大值为:"; max

Print Tab(2); "最小值为:"; min

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,需多次调用InputBox 函数。在调用InputBox 函数出现对话框时,输入

矩阵的行数、矩阵的列数和数组元素的值。例如,输入矩阵的行数3、矩阵的列数3和数组

元素的值1、2、3、4、5、6、7、8、9。执行结果如图3.5.6所示。

7. 某城市三个百货公司某个季度销售电视机的情况和价格由如下表格表示,求各个百

货公司的电视机营业额。

牌子

公司

第一百货商店 300 250

240

210

150

200

180

康 佳

TCL

长 虹

第二百货商店 200

第三百货商店 280

牌 子

康 佳

TCL

长 虹

解答:

(1)界面设计和属性设置

价 格

3500

3300

3800

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3.5.7所示。

表3.5.7 属性设置

控件名称 属性名 属性值

Form1

Command1

Command2

Caption

Caption

Caption

计算电视机销售额

开始

结束

(2)程序代码

Option Explicit

Private Sub Command1_Click()

Cls

Dim i%, j%, sum!

Dim a%(1 To 3, 1 To 3), p!(3)

Print Tab(23); "各百货公司的销售量"

Print Tab(20); "康佳"; Tab(30); "TCL"; Tab(40); "长虹"

For i = 1 To 3

Print Tab(5); "第" & Str(i) & " 百货公司";

For j = 1 To 3

a(i, j) = InputBox("输入第" & Str(i) & "百货公司" & "第" & Str(j) & "种牌子销售量:")

Print Tab(j * 10 + 10); a(i, j);

Next j

Print

Next i

Print Tab(25); "各种牌子价格"

Print Tab(20); "康佳"; Tab(30); "TCL"; Tab(40); "长虹"

For i = 1 To 3

p(i) = InputBox("输入第" & Str(i) & "种牌号价格:")

Print Tab(i * 10 + 10); p(i);

Next i

Print: Print

For i = 1 To 3

sum = 0

For j = 1 To 3

sum = sum + a(i, j) * p(j)

Next j

Print Tab(10); "第" & Str(i) & "百货公司的销售额为:"; sum; "元"

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。单击标题为“开始”的命令按钮,系统执行相应的

Click事件过程。在执行的过程中,需多次调用InputBox 函数。在调用InputBox 函数出

现对话框时,按表格中的数据输入每个百货公司销售电视机的数量和各种牌子的价格。执行

结果如图3.5.7所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.5.7 执行结果

发布评论

评论列表 (0)

  1. 暂无评论