数组习题.docx
《数组习题.docx》由会员分享,可在线阅读,更多相关《数组习题.docx(14页珍藏版)》请在冰点文库上搜索。
数组习题
第五章数组习题
一、选择题
1.如下数组声明语句,(b)正确。
(A)Dima[3,4]asinteger(B)Dima(3,4)asinteger
(C)Dima(n,n)asinteger(D)Dima(34)asinteger
2.要分配存放如下方阵
,可使用声明语句(c)来实现(不能浪费空间)。
.
(A)Dima(9)assingle(B)Dima(3,3)assingle
(C)Dima(-1to1,-5to-3)assingle(D)Dima(-3to-1,5to7)asinteger
3.数组声明语句Dima(3,-2to2,5)asinteger中,数组a包含的元素个数为(120)。
4.用语句Dima(-3to5)asinteger所定义的数组的元素个数是(9)。
5.用语句Dima(3to5,-2to2)所定义的数组的元素个数是(15)。
6.下面的B中有(9)个数组元素。
DimB:
B=Array(1,2,3,4,5,6,7,8,9)
二、填空题
1.控件数组的名字由(name)属性指定,而数组中的每个元素由(index)属性指定。
2.由Array函数建立的数组的名字必须是(变体类型)类型。
3.数组定义DimD(20),数组D有(21个)个数组元素。
三、分析程序的运行结果
1.在窗体上画一个命令按钮command1,然后编写如下事件过程:
optionbase1
privatesubcommand1_click()
dima
a=array(1,2,3,4)
j=1
fori=4to1step-1
s=s+a(i)*j
j=j*101
nexti
prints
endsub
程序运行后,单击command1,输出结果为:
1234
2.在窗体上画一个命令按钮command1,然后编写如下事件过程:
optionbase1
privatesubcommand1_click()
dima,b(3,3)
a=array(1,2,3,4,5,6,7,8,9)
fori=1to3
forj=1to3
b(i,j)=a(i*j)
ifj>=Ithenprinttab(j*3);b(I,j);
nextj
print
nexti
endsub
程序运行后,单击command1,输出结果为:
123
46
9
3.在窗体上画一个命令按钮command1,然后编写如下事件过程:
optionbase1
privatesubcommand1_click()
dima%(3,3)
fori=1to3
forj=1to3
ifj>1andi>1then
a(i,j)=a(a(i-1,j-1),a(i,j-1))+1
else
a(i,j)=i*j
endif
printa(i,j);”“;
nextj
print
nexti
endsub
程序运行后,单击command1,输出结果为:
123
231
323
4.在窗体上画一个命令按钮command1,然后编写如下事件过程:
optionbase1
privatesubcommand1_click()
dima%(10),p(3)asinteger
k=5
fori=1to10
a(i)=i
nexti
fori=1to3
p(i)=a(i*i)
nexti
fori=1to3
k=k+p(i)*2
nexti
printk
endsub
程序运行后,单击command1,输出结果为:
33
5.在窗体上画一个命令按钮command1,然后编写如下事件过程:
optionbase1
privatesubcommand1_click()
dima%(4,4)
fori=1to4
forj=1to4
a(i,j)=(i-1)*3+j
nextj
nexti
fori=1to4
forj=1to4
printa(j,i);
nextj
print
nexti
endsub
程序运行后,单击command1,输出结果为:
14710
25811
36912
471013
6.在窗体上画一个命令按钮command1,然后编写如下事件过程:
optionbase1
privatesubcommand1_click()
dima%(5,5)
fori=1to3
forj=1to4
ifj>1andi>1then
a(i,j)=i*j
endif
nextj
nexti
forn=1to2
form=1to3
printa(m,n);
nextm
print
nextn
endsub
程序运行后,单击command1,输出结果为:
000
046
7.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dima%(5)
fori=0to4
a(i)=i+1
t=i+1
ift=3then
printa(i);
a(t-1)=a(i-2)
else
a(t)=a(i)
endif
ifi=3thena(i+1)=a(t-4)
a(4)=1
printa(i);
nexti
endsub
程序运行后,单击command1,输出结果为:
123141
8.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dima%(3,3)
dimb
b=array(1,2,3,4,5,6,7,8,9)
j=1
fori=0to8
j=imod3
k=i\3
a(j,k)=b(i)
nexti
k=1
forj=0to2
printtab(3*(j+1));a(k,j);
nextj
endsub
程序运行后,单击command1,输出结果为:
258
9.在窗体上画一个命令按钮command1,一个文本框text1,然后编写如下事件过程:
privatesubcommand1_click()
dimb
b=array(34,5,13,35,9,6,42)
fori=1toubound(b,1)
ifb(i)>b(i-1)then
x=b(i)
forj=i-1to0step-1
ifb(j)>xthenexitfor
b(j+1)=b(j)
nextj
b(j+1)=x
endif
nexti
text1=””
fori=0toubound(b,1)
text1=text1+str(b(i))+”,”
nexti
endsub
运行程序后,文本框text1中的内容是:
42,35,34,13,9,6,5
10.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dima(3,3)
fori=0to3
forj=0to3
a(i,j)=(i+1)*10+j
nextj,i
fori=0to3
forj=0to3
ifix=a(i,j):
a(i,j)=a(j,i):
a(j,i)=x
endif
nextj,i
fori=0toubound(a,1)
forj=0toubound(a,2)
printa(i,j);
nextj
print
nexti
endsub
运行程序后,文本框text1中的内容是:
10203040
11213141
12223242
13233343
11.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dimarr1%(10),arr2(10)
n=3
fori=1to5
arr1(i)=i
arr2(n)=2*n+i
nexti
printarr2(n);arr1(n)
endsub
程序运行后,单击command1,输出结果为:
113
12.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dimm%(10)
fork=1to10
m(k)=12-k
nextk
x=6
printm(2+m(x))
endsub
程序运行后,单击command1,输出结果为:
4
13.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dimb
b=array(56,22,16,67,26,14,9,87)
k=3
dowhilekb(k)=b(k+1)
k=k+1
loop
printb(5)
endsub
程序运行后,单击command1,输出结果为:
9
14.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dimb,a(2,4)
b=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
fori=0to2
forj=0to4
a(i,j)=b(i*(ubound(a,2)+1)+i)
nextj
nexti
printb(i*(ubound(a,2)+1)-3)
endsub
程序运行后,单击command1,输出结果为:
13
15.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dima(5to16)
dimb
b=array(1,2,3,4,5,6,7,8,9)
fori=1to8
a(5+i)=b(i)
nexti
printa(7)
endsub
程序运行后,单击command1,输出结果为:
3
16.在窗体上画一个命令按钮command1,然后编写如下事件过程:
privatesubcommand1_click()
dimb,a(3,3)
b=array(1,2,3,4,5,6,7,8,9)
j=1
fori=0to8
k=i\3:
j=Imod3
a(k,j)=b(i)
printa(k,j);
ifj=2thenprint
nexti
endsub
程序运行后,单击command1,输出结果为:
123
456
789
17.在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:
PrivateSubCommand1_Click()
DimiAsInteger,jAsInteger
Dima(10,10)AsInteger
Fori=1To3
Forj=1To3
a(i,j)=(i-1)*3+j
Printa(i,j);
Nextj
Print
Nexti
EndSub
程序运行后,单击命令按钮,窗体上显示的是
123
456
789
18.在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
Dimarray1(10,10)AsInteger
Dimi,jAsInteger
Fori=1To3
Forj=2To4
array1(i,j)=i+j
Nextj
NextI
Text1.Text=array1(2,3)+array1(3,4)
EndSub
程序运行后,单击command1,文本框中显示的结果为:
12
四、简答题
1.要分配存放12个元素的整形数组,下列数组声明(若无下界,按默认规定)哪些符合要求?
(1)n=12
(2)Dima%()
Dima(1ton)asintegern=11
ReDima(n)
(3)Dima%[2,3](4)Dima(1,1,2)asinteger
(5)Dima%(10)(6)Dima!
()
ReDima(1to12)ReDima(3,2)asinteger
(7)Dima%(2,3)(8)Dima(1to31to4)asinteger
2.已知下面的数组声明,写出它的数组名、数组类型、维数、各维的上下界、数组的大小,并按行的顺序列出各元素。
Dima(-1to2,3)assingle
3.静态数组和动态数组的区别是什么?
在声明静态数组、重定义动态数组时的下标都可以用变量来表示吗?
4.已声明了静态数组a(3,4),能否在下面再用重定义动态数组a(4,4)来重定义A数组的大小?
5.使用ReDim语句可以改变数组类型吗?
6.在ReDim语句中加了Preserve关键字,对重定义数组有何限制?
7.利用随机数生成两个四行四列的矩阵(数据不一定相同,前者范围在30~70,后者为101~135)。
要求:
(1)将两个矩阵相加结果放入C矩阵中。
(2)将a矩阵转置。
(3)求C矩阵中元素的最大值和下标。
(4)以下三角形式显示A矩阵、上三角形式显示B矩阵。
(5)将A矩阵第一行与第三行对应元素交换位置,即第一行元素放到第三行,第三行元素放到第一行。
(6)将A矩阵两条对角线元素之和。
(7)将A矩阵按列的次序把各元素放入一位数组D中,显示结果。
8.声明一个有20个元素的一维字符类型数组,要求:
(1)由随机数形成小写字母构成的数组,每个元素的字符个数由随机数产生,范围1~11。
(2)要求将生成的数组分四行显示。
(3)显示生成的字符数组中字符最多的元素。
9.自定义一个职工类型,包含职工号、姓名和工资。
声明一个职工类型的动态数组。
输入n个职工的数据,要求按工资递减的顺序排序,并显示排序的结果,每个职工一行显示三项信息。