理论第2次练习

更新时间:2023-10-11 05:41:01 阅读量: 综合文库 文档下载

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

选择题

1 用下面语句定义的数组元素个数是( ) 。

Option Base 1

Dim Arr4(6,5) As Integer

A)42 B)30 C)37 D)36 解答 该题首先通过Option Base 1语句使数组的下标从1开始,所以数组定义语句Dim Arr4(6,5) As Integer与语句Dim Arr4(1 to 6,1 to 5) As Integer等价,不难算出该数组元素个数为30。

答案 B

2 可以用来清除数组内容或对数组重新定义的语句是()

A Unload B Cls C Erase D Free

解答 数组一旦被定义,就在内存中分配了相应的存储空间,其大小是不能改变的但有时可能需要清除数组的内容或对其重新定义,这可以用 Erase 语句来实现,其格式为 Erase 数组名[, 数组名]…, 该语句用来重新初始化静态数组的元素或者释放动态数组的存储空间,其中,数组名不带括号和下标。 Unload 语句是从内存中卸载窗体或控件,当所占内存另有它用或需要重新设置窗体控件的属性值为初始值时,就有必要卸载窗体或控件,而 Cls Clear 都是 Visual Basic 中的方法。

本题正确答案为 C

3 下面能正确表示 Visual Basic 中数组 a 的元素的是()

A a[5] B a5 C a D a(5)

解答 在Visual Basic 中使用数组元素时,必须把下标放在一对紧跟在数组名之后的括号不能写其他的形式,如要表示数组 s 中下标为 5 的元素必须写成 s(5) 。

答案为 D

4 下列数组定义中错误的是:其中 n 是一个变量

A Dim a(7, 3 To 9) As String B Dim b(n) As Intege

C Dim c(1, 7, 9) As Integer D ReDim(n)

解答 在使用 Dim 定义一个数组时其上下标不能为变量,而在 ReDim 中就可以使用变量来改变数组的维数

答案为 B

5 使用语句 Dim A() As Integer 声明数组 A 之后,以下说法正确的是:

A A 数组中的所有元素值为 0 B A 数组中的所有元素值不确定 C A 数组中的所有元素值为 Empty

D 执行 Erase A 后 A 数组中的所有元素值为 0

解答 所谓数组就是能够保存具有数据类型的多个数值的存储空间,当声明一个数组后,在没有给它赋值前,数组中的所有元素值为0, 因此可知选项 A 是正确的,B ,C选项都是错误的,在选项 D 中出现了 Erase 语句,使用 Erase 语句将释放动态数组所占的内存空间,而题中语句 Dim A As Integer 正好是声明动态数组 A 的,所以选项 D 的说法不正

确。

正确答案为 A

6 计算下列定义的语句中数组所占有的空间为()

Option Base 1

Dim sngLp(3, 2 To 5) As Single

A 80 字节 B 48 字节 C 60 字节 D 96 字节

解答 首先使用了 Option Base 1 将数组的下标定位为 1,所以数组 sngLp 的定义实际是 Dim sngLp(1 To 3, 2 To 5) As Single,又因为 Single 单精度类型的所占空间为 4个字节,因此所占空间=(3-1+1)*(5-2+1)*4=48 字节。

正确答案为 B

7 有下列程序:

Private Sub Command1_Click()

Dim MyWeek, MyDay

MyWeek=Array(\ MyDay= MyWeek(2) MyDay= MyWeek(4) MsgBox MyDay End Sub

程序运行后,弹出的消息窗口显示( ) 。 A)Sat B)Tue C)Wed D)Thu

解答 由于数组下界从0开始,所以MyWeek(4)中存放的是数组中的第5个字符, 故消息窗口中显示的是Sat。

答案 A

8 程序代码如下,当单击窗体上的Command1控件时, 窗体上显示的结果是( )。 Option Base 1

Private Sub Command1_Click() Dim I As Integer For I=1 To 3 For j=1 To 3 X(I,j)=(I-j)*3+j Next j Next I

For I=1 To 3 Print x(I,4-I) Next I End Sub

A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9

解答 本题首先通过一个双重For循环给一个3行3列的数组X的每个元素赋值,赋值规律是每个元素的值是它的行下标减1乘3加上列下标;然后通过一个For循环输出3个元素:X(1,3)、 X(2,2)和X(3,1),它们的值分别为:X(1,3)=(1-1)× 3+3=3、 X(2,2)=(2-1)× 3+2=5、X(3,1)=(3-1)×3+1=7。

答案 C

填空题

1 用语句Dim a(-2 to 3) As Integer 所定义的数组元素的个数是____________ 。 解析:下界为-2,上界为3。

数组中有a(-2),a(-1),a(0),a(1),a(2),a(3),共6个元素。

2 在程序中, 若关于数组的说明语句只有一条Dim A (100), 则数组A包括了____________个元素,数组的下界为___________。

解答 在Visual Basic中,如果不指明数组下标的下界,则默认数组下标的下界为0,因此,用Dim A(100)说明数组A后,它共有101个数组元素。

答案 101 0

3 以下程序用随机数模拟掷骰子,统计掷60次骰子出现各点的次数,请在横线处上正确的内容。

Option Base 1

Private Sub Command1_Click() Dim d(6) For i=1 To 60 n = ____________ d(n) =____________ Next i

For i = 1 To 6 Print d(i) Next i End Sub

解答 根据题意,第一空处应该填入由随机函数产生的模拟掷骰子的点数,该数值应控制在1~6之间,故可用表达式Int(1+6*Rnd)来实现;接下来对产生的点数进行计数,本题使用数组d来进行计数,并用产生的骰子点数作为数组下标,所以第二空处应该填入d(n)+1,以此统计各点数出现的次数。

答案 Int(1+6*Rnd) d(n)+1

4 下列程序运行时单击Command1命令按钮,输出的结果是____________。 Private Sub Command1_Click() Dim a(10)

For k = 1 To 10 a(k) = 11 - k Next k

Print a(3 + a(6)) End Sub

解析:此题根据―a(k) = 11 – k‖公式要先算出a(1)~a(10)的值,可得到的结果是:a(6)=5,a(8)=3;循环结束后在窗体上会输出的是a(8)的值为3。

5 下列程序运行时单击窗体,输出的结果是____________。 Private Sub Form_Click()

Dim a(4) a(4) = 4

For i = 1 To 3

a(i) = a(i + 1) - 1 Next

Print a(1); a(2); a(3) End Sub

解析:数组声明的语句能对数组进行初始化,使得数值型数组的元素值初始化为0,字符型数组的元素值初始化为空。

编程题

1 设s = 1×2×3×…×n,求s不大于400000时最大的n,(代码编写在命令按钮的Click事件过程中,结果利用一个标签显示,提交窗体文件,保存名为f1)。

解答:本题是利用循环进行累乘运算。设计数器为n,累乘器s = s * n,由于不知道循环的次数,故使用Do Loop循环,其循环条件是s<=400000。又由于求的是最大的n值,输出语句应在循环体外,且n-1的值才符合要求(因为出循环时S已超出400000,n也已经是最大的符合条件的n加了1之后的n,故要减去1)。 编写命令按钮的Click事件代码: Private Sub Command1_Click() Dim n As Integer, s As Long n = 1 s = 1

Do While s <= 400000 n = n + 1 s = s * n

Print n, s ’ 通过本行可以看到循环过程 Loop

Label1.Caption = \End Sub

2 编制程序,求出所有小于或等于100的自然数对。自然数对是指两个自然数的和与差都是平方数,如8与17的和8 + 17 = 25与其差17 -8=9都是平方数,则8和17称自然数对。(代码编写在命令按钮的Click事件过程中,结果输出在列表框中,提交窗体文件,保存名为f2)

解答:采用―穷举法‖来检查100以内的所有自然数对。利用双重循环,外循环控制变量m从1~99;内循环控制变量n从m~100,用表达式Sqr(s)=Int(Sqr(s)) And Sqr(d)=Int(Sqr(d))来判断s和d是否是平方数。

编写命令按钮的Click事件代码: Private Sub Command1_Click() Dim n As Long, m As Long Dim s As Single, d As Single List1.Clear

For m = 1 To 99 For n = m To 100 s = n + m

d = n - m

If Sqr(s) = Int(Sqr(s)) And Sqr(d) = Int(Sqr(d)) Then List1.AddItem Str(n) & Str(m) End If Next Next End Sub

3 某数组有20个元素,元素的值由rnd函数生成(元素值介于【10-99】),要求将前10个元素与后10个元素对换。即第1个元素与第20个元素互换,第2个元素与第19个元素互换,…,第10个元素与第11个元素互换。输出数组原来各元素的值和对换后各元素的值。(代码编写在命令按钮的Click事件过程中,结果输出在文本框中,提交窗体文件,保存名为f3)。

解答:根据题意,定义一个具有20个元素的数组a(1 To 20),首先对其进行赋值,可利用For循环来对这20个元素进行赋值。然后按此顺序输出,即为互换前各元素的值。进行互换操作时,按要求将前10个元素与后10个元素进行互换,方法是将a(I)与a(20 -I+1)互换,共交换10次。最后再利用For循环输出互换后各元素的值。 Private Sub Command1_Click() Dim a(1 To 20) As Integer Randomize For i = 1 To 20

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

Text1.Text = Text1.Text & Str(a(i)) Next i

For i = 1 To 10 t = a(i)

a(i) = a(20 - i + 1) a(20 - i + 1) = t Next i

For i = 1 To 20

Text2.Text = Text2.Text & Str(a(i)) Next i End Sub

4 求一个 3 ×3 的整型矩阵的正对角线的元素之和。(代码编写在命令按钮的Click事件过程中,结果输出在窗体上,提交窗体文件,保存名为f4)。 解答:利用两重For循环生成3 ×3的二维数组;正对角线元素特征为横纵坐标相同,用循环将这些元素相加及得和。 Private Sub Form_Click() Dim a(3, 3),sum As Integer For i = 1 To 3 For j = 1 To 3

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

Next Print Next sum = 0 For i = 1 To 3

sum = sum + a(i, i) Next i

Print \对角线和为\End Sub

5 编程实现如下功能建立一个 8 ×8 的矩阵该矩阵的两条对角线上的元素都为1,其余元素都为0 ,并输出在窗体上,使用Do—loop循环实现。(代码编写在命令按钮的Click事件过程中,结果输出在窗体上,提交窗体文件,保存名为f5)。

解答:题目要求建立二维矩阵,应使用二重循环。因为是8×8的数组,a,b为数组下标。外循环执行条件为a <= 8;内循环执行条件为b <= 8;下标符合a = b 或者 a = 9 – b的条件的元素为对角线元素,赋值为1,其它元素为非对角线元素,赋值为0。 Option Base 1

Private Sub Form_Click() Dim s(8, 8) As Integer a = 1

Do While a <= 8 b = 1

Do While b <= 8

If a = b Or a = 9 - b Then s(a, b) = 1 Else

s(a, b) = 0 End If

Print str(s(a, b)); b = b + 1 Loop Print a = a + 1 Loop End Sub

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

Top