循环结构及数组练习.docx
《循环结构及数组练习.docx》由会员分享,可在线阅读,更多相关《循环结构及数组练习.docx(26页珍藏版)》请在冰豆网上搜索。
循环结构及数组练习
循环结构及数组练习
一、单选题
1.执行以下程序段后,i的值为(B)
Fori=1To10Step2
y=y+i
Nexti
A)10B)11C)12D)25
2.假定有如下语句:
PrivateSubCommand1_Click()
Counter=0
Fori=1To4
Forj=6To1Step-2
Counter=Counter+1
Nextj
Nexti
Label1.Caption=Str(Counter)
EndSub
程序运行后,结果为(B)
A)11B)12C)16D)20
3.假定有如下语句:
PrivateSubCommand1_Click()
Fori=1To4
Ifi=1Thenx=i
Ifi<=4Thenx=x+1
Printx;
EndSub
程序运行后,结果为(B)
A)1234B)2345C)2344D)3456
4.哪个程序段不能分别正确显示1!
、2!
、3!
、4!
的值(B)
A)Fori=1To4
n=1
Forj=1Toi
n=n*j
Nextj
Printn
Nexti
B)Fori=1To4
Forj=1Toi
n=1
n=n*j
Nextj
Printn
Nexti
C)n=1
Forj=1To4
n=n*j
Printn
Nextj
D)n=1:
j=1
DoWhilej<=4
n=n*j
Printn
j=j+1
Loop
5.编写如下的事件过程:
PrivateSubCommand1_Click()
Fori=1To4
Forj=0Toi
PrintChr$(65+i);
Nextj
Print
Nexti
EndSub
程序运行后,在窗体上显示的内容是(A)
A)BBB)AC)BD)AA
CCCBBCCBBB
DDDDCCCDDDCCCC
EEEEEDDDDEEEEDDDDD
6.编写如下的事件过程:
PrivateSubCommand1_Click()
Dimx,nAsInteger
x=1
n=0
DoWhilex<20
x=x*3
n=n+1
Loop
Text1.Text=Str(x)
Text2.Text=Str(n)
EndSub
运行程序后,在2个文本框中显示的值分别是(B)
A)20和1B)27和3C)195和3D)600和4
7.编写如下的事件过程:
PrivateSubCommand1_Click()
Dimi,nAsInteger
Fori=0To50
i=i+3
n=n+1
Ifi>10ThenExitFor
Next
Text1.Text=Str(n)
EndSub
运行后,文本框中显示的值是(B)
A)2B)3C)4D)5
8.编写如下的事件过程:
PrivateSubCommand1_Click()
c=1234
c1=Trim(Str(c))
Fori=1To4
Print________
Next
EndSub
运行程序后,窗体上显示如下
1
12
123
1234
则应该在________处填写的表达式是(B)
A)Right(c1,n)B)Left(c1,i)C)Mid(c1,n,1)D)Mid(c1,n,n)
9.编写如下的事件过程:
PrivateSubCommand1_Click()
n=Val(Text1.text)
Fori=2Ton
Forj=2ToSqr(i)
IfiModj=0ThenExitFor
Nextj
Ifj>Sqr(i)ThenPrinti
Nexti
EndSub
该事件过程的功能是:
(C)
A)输出n以内的奇数
B)输出n以内的偶数
C)输出n以内的素数
D)输出n以内能被j整数的数
10.编写如下的事件过程:
Fori=1To3
Forj=5to1Step-1
Printi*j
Nextj,i
则语句Printi*j的执行次数是(A)
A)15B)16C)17D)18
11.以下程序段输出结果为(B)
x=1
y=4
DoUntily>4
x=x*y
y=y+1
Loop
Printx
A)1B)4C)8D)20
12.执行下面的程序段后,x的值为(A)
x=5
Fori=1To20Step2
x=x+i\5
Nexti
A)21B)22C)23D)24
13.编写如下的事件过程:
PrivateSubCommand1_Click()
Fori=1To4
x=4
Forj=1To3
x=3
Fork=1To2
x=x+6
Nextk
Nextj
Nexti
Printx
EndSub
程序运行后,输出结果是(B)
A)7B)15C)157D)538
14.有如下的程序段:
Fori=1To3
Forj=1Toi
a=a+1
Nextj
Nexti
执行上面程序后,a的值为(C)
A)3B)9C)6D)21
15.有如下的程序段:
n=0
Fori=1To3
Forj=1Toi
Fork=jTo3
n=n+1
Nextk
Nextj
Nexti
执行上面程序段后,n的值为:
(B)
A)3B)14C)9D)21
16.阅读程序
PrivateSubForm_Click()
x=50
Fori=1To4
y=InputBox(“请输入1个整数”)
y=Val(y)
IfyMod5=0Then
a=a+y
x=y
Else
a=a+x
EndIf
Nexti
Printa
EndSub
程序运行后,单击窗体,在输入对话框中依次输入15、24、35、46,输出结果为(A)
A)100B)50C)120D)70
1.如有以下程序代码:
OptionBase1
PrivateSubCommand1_Click()
d=0
c=10
x=Array(10,12,21,32,24)
Fori=1To5
Ifx(i)>cThen
d=d+x(i)
c=x(i)
Else
d=d-c
EndIf
Nexti
Printd
EndSub
程序运行后,在窗体上输出的内容为(C)
A)89B)99C)23D)77
2.下面语句定义的数组元素个数中(C)
Dimarr(3To5,-2To2)
A)20B)12C)15D)24
3.下面语句定义的数组元素个数中(D)
Dima(-3To4,3To6)
A)18B)28C)21D)32
4.如有以下程序代码:
PrivateSubCommand1_Click()
Dimarr1(10),arr2(10)
Fori=1To10
arr1(i)=3*i
arr2(i)=arr1(i)*3
Nexti
Text1.Text=Str(arr2(i/2-0.1))
EndSub
程序运行后,在文本框显示的是(B)
A)36B)45C)54D)63
5.如有以下程序代码:
OptionBase1
PrivateSubCommand1_Click()
Dima
a=Array(1,2,3,4)
j=1
Fori=1To4
s=s+a(i)*j
j=j*10
Nexti
Prints
EndSub
运行程序后,在窗体上输出的内容为(D)
A)1234B)12C)34D)4321
6.如有以下程序代码:
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
运行程序后,在窗体上输出的内容为(A)
A)12B)13C)14D)15
7.假设通过复制、粘贴建立了一个命令按扭数组Command1,则以下说法错误的是(D)
A)数组中每个命令按扭的名称(Name属性)均为Command1
B)数组中每个命令按扭的大小都一样
C)数组中每个命令按扭可以使用同一个时间过程
D)用名称Command1可以访问数组中每个命令按扭
8.如有以下程序代码:
PrivateSubCommand1_Click()
Dimarr1(10),arr2(10)AsInteger
n=3
Fori=1To5
arr1(i)=i
arr2(n)=2*n+i
Nexti
Printarr2(n);arr1(n)
EndSub
运行程序后,在窗体上输出的内容为(A)
A)113B)311C)133D)313
9.如有以下程序代码:
PrivateSubCommand1_Click()
Dimarr(3,3)AsInteger
Fori=1To3
Forj=1To3
Ifj=iOrj=3-i+1Then
arr(i,j)=1
Else
arr(i,j)=0
EndIf
Nextj
Nexti
Printarr(1,1)+arr(2,2)+arr(3,3)
EndSub
运行程序后,在窗体上输出的内容为(D)
A)0B)1C)2D)3
10.如有以下程序代码:
OptionBase1
Dima()AsInteger
PrivateSubForm_Click()
DimiAsInteger,jAsInteger
ReDima(3,2)
Fori=1To3
Forj=1To2
a(i,j)=i*j
Nextj
Nexti
ReDimPreservea(3,4)
Fori=3To4
a(3,i)=i+5
Nexti
Printa(3,2);a(3,4)
EndSub
运行程序后,在窗体上输出的内容为(B)
A)00B)69C)712D)813
11.在窗体上话3个单选按扭,组成1个名为chkOption的控件数组。
用于标识控件数组各元素的参数是(B)
A)TagB)IndexC)ListIndexD)Name
12.如有以下程序代码:
OptionBase0
PrivateSubCommand1_Click()
StaticcityAsVariant
city=Array("北京","上海","天津","重庆")
Printcity
(1)
EndSub
运行程序后,在窗体上输出的内容为(D)
A)空白B)错误提示C)北京D)上海
13.如有以下程序代码:
OptionBase1
PrivateSubForm_click()
DimiAsInteger
Dima(8)AsString
Fori=1To8
a(i)=LCase(Chr(Asc("A")+(i-1)))
Nexti
ForEachbIna
PrintUCase(b);
Nextb
EndSub
运行程序后,在窗体上输出的内容为(C)
A)12345678B)abcdefgh
C)ABCDEFGHD)出错信息
14.如有以下程序代码:
OptionBase1
PrivateSubCommand1_Click(indexAsInteger)
Dimarr1(12)AsInteger,arr2(3)AsInteger
DimsumAsInteger
sum=2
Fori=1To12
arr1(i)=i
Nexti
Fori=1To3
arr2(i)=arr1(i*i)
Nexti
Fori=1To3
sum=sum+arr2(i)
Nexti
Printsum
EndSub
运行程序后,在窗体上输出的内容为(A)
A)16B)24C)32D)36
15.如有以下程序代码:
OptionBase1
PrivateSubCommand1_Click()
Dimarr
DimstartAsInteger,finishAsInteger
DimsumAsInteger
arr=Array(12,4,8,16)
start=LBound(arr)
finish=UBound(arr)
sum=0
Fori=startTofinish
sum=sum+arr(i)
Nexti
c=sum/finish
Text1.Text=c
EndSub
运行程序后,在窗体上输出的内容为(B)
A)40B)10C)12D)16
二、简答题
1.下面程序的功能是:
计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20)
PrivateSubForm_Click()
Dimf,i,signAsInteger
____sign=1________
f=1
___fori=2to19______
f=f+sign/(i*(i+1))
___sign=-1*sign_____
Nexti
Print“f=”;f
EndSub
2.下面的程序是在一个字符串变量中查找“at”,并用消息框给出查找结果的报告:
没有找到或找到的个数,程序如下:
PublicSubFindat()
DimStr1AsString
DimlengthAsInteger
DimsumAsInteger
DimiAsInteger
Str1=InputBox(“请输入一个字符串”)
length=___len(Str1)_____
i=1
sum=0
DoWhilei<=___length_____
If__mid(Str1,i,2)____=“at”Then
sum=sum+1
EndIf
i=i+1
Loop
If___sum=0____Then
MsgBox“没有找到!
”
Else
MsgBox“找到了”&Str(sum)&“个”
EndIf
EndSub
3.下面程序的功能是找出1~1000之间所有的同构数。
所谓同构数是指一个数出现在它的平方数右端,如25在25平方625的右端,则25为同构数。
PrivateSubForm_Click()
DimiAsInteger
Dimx1AsString,x2AsString
Fori=1To1000
x1=_str(i)__
x2=__str(i^2)__
If__x1=right(x2,1)orx1=right(x2,2)orx1=right(x2,3)_Then
Printi;“是同构数”
EndIf
Nexti
EndSub
1.如有以下程序代码,填写空格处:
OptionBase1
PrivateSubCommand1_Click()
Dimarr
arr=Array(358,32,46,73,23,59,26,91,583,12)
Fori=1To9
Forj=i+1To10
Ifarr(i)>=arr(j)Then
a=arr(j)
arr(j)=arr(i)
arr(i)=a
EndIf
Nextj
Nexti
Fori=1To10
Printarr(i);
Nexti
EndSub
程序运行后,将把数组arr中的10个数按照升序排列。
2.如有以下程序代码,填写空格处:
OptionBase1
PrivateSubCommand1_Click()
Dimarr(10)AsInteger
DimmaxAsInteger
Randomize
Fori=1To10
arr(i)=Int(Rnd*1000)
Nexti
max=arr
(1)
Fori=2To10
Ifarr(i)>maxThen
max=arr(i)
EndIf
Printarr(i)
Nexti
Print"max:
";max
EndSub
程序运行后,产生10个0~1000之间的随机整数,放入数组arr中,然后输出其中最大值。
3.如有以下程序代码:
OptionBase1
PrivateSubCommand1_Click()
DimiAsInteger
Dima(5)AsInteger
Dimb(5)AsInteger
Dimc(5)AsInteger
n=4
Fori=1Ton
a(i)=i
m=n+i-1
b(i)=m
Nexti
c(5)=0
Fork=1Ton
c(k)=a(k)*b(k)
c(5)=c(5)+c(k)
Nextk
Printa(3);b(4);c(5)
EndSub
运行程序后,在窗体上输出的内容为3760
4.如有以下程序代码,填写空格处:
OptionBase1
PrivateSubCommand1_Click()
Dimarr1(3,3)AsInteger
Dimarr2(3)AsInteger
Randomize
Fori=1To3
Forj=1To3
arr1(i,j)=Int(Rnd*100)
Nextj
Nexti
Fori=1To3
Forj=1To3
arr2(i)=arr2(i)+arr1(i,j)
Nextj
Nexti
Fori=1To3
Forj=1To3
Printarr1(i,j);
Nextj
Print
Nexti
sm=arr2
(1)
ns=1
Fori=2To3
Ifarr2(i)>smThen
sm=arr2(i)
ns=i
EndIf
Nexti
Print
Print"数值最大的一行是:
第";ns;"行,";"该行的和是:
";sm
EndSub
以上程序功能:
用随机数生成一个3×3的矩阵,然后求出该矩阵3行中元素之和最大的那一行,并输出该行的行号及该行的和。
三、编程题
1.编写程序,把下面的数据输入1个二维数组中:
25367813
12268893
75182232
56443658
然后执行以下操作
(1)输出矩阵2个对角线上的数
(2)分别输出各行和各列的和
(3)交换第1行和第3行的位置
(4)交换第2列和第4列的位置
(5)输出处理后的数组
程序代码:
OptionBase1
PrivateSubForm_click()
Dimmat(4,4)AsInteger
Dimn,mAsInteger
n=4
m=4
'输入矩阵
Fori=1Ton
Forj=1Tom
mat(i,j)=InputBox("请输入数组第"&i&"行第"&j&"列元素值")
Val(mat(i,j))
Nextj
Nexti
'输入初始化矩阵
Print
Print"初始矩阵为:
"
Print
Fori=1Ton
Forj=1Tom
PrintTab(6*j);mat(i,j);
Nextj
Print
Nexti
'输出矩阵对角线上的数
Print
Print"矩阵对角线上的数为:
"
Print
Fori=1Ton
Forj=1Tom
Ifi=jThen
PrintTab(6*j);mat(i,