二级VISUAL+BASIC82 1.docx
- 文档编号:14485874
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:26
- 大小:25.30KB
二级VISUAL+BASIC82 1.docx
《二级VISUAL+BASIC82 1.docx》由会员分享,可在线阅读,更多相关《二级VISUAL+BASIC82 1.docx(26页珍藏版)》请在冰点文库上搜索。
二级VISUAL+BASIC821
二级VISUALBASIC-82
(总分:
100.00,做题时间:
90分钟)
一、选择题(总题数:
40,分数:
100.00)
1.设a、b都是自然数,为求a除以b的余数,某人编写了以下函数:
Functionfun(aAsInteger,bAsInteger)
Whilea>b
a=a-b
Wend
fun=a
EndFunction
在调试时发现函数是错误的。
为使函数能产生正确的返回值,应做的修改是
(分数:
2.50)
A.把a=a-b改为a=b-a
B.把a=a-b改为a=a/b
C.把Whilea>b改为Whilea<b
D.把Whilea>b改为Whilea>=b √
解析:
[解析]本题函数过程的原代码仅适合a不能被b整除的两数,而当a能被b整除时则不适用,如a=4,b=2,a除以b的余数为0,而原代码返回的函数值为2。
因此需将语句Whilea>b改为Whilea>=b。
2.设有如下事件过程:
PrivateSubForm_Click()
x=0
Whilex<10
x=x+1:
x=x*x
Wend
Printx
EndSub
运行程序,单击窗体,输出结果是
(分数:
2.50)
A.16
B.19
C.20
D.25 √
解析:
[解析]本题是简单While循环,在循环中改变循环变量x的值,要注意退出循环时x必然是不会满足循环条件的。
本题中循环中x依次变化为1、4、25。
3.假定有以下循环结构DoUntil条件表达式循环体Loop则以下正确的描述是
(分数:
2.50)
A.如果“条件表达式”的值是0,则一次循环体也不执行
B.如果“条件表达式”的值不为0,则至少执行一次循环体
C.不论“条件表达式”的值是否为“真”,至少要执行一次循环体
D.如果“条件表达式”的值恒为0,则无限次执行循环体 √
解析:
[解析]本题考查的考点是有关Do型循环的。
对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件如何至少执行一次循环体。
在Until循环中条件为False时执行循环体,条件为True时退出循环;在While循环中条件为True时执行循环体,条件为False时退出循环,这一点要注意区分清楚。
4.以下VisualBasic不支持的循环结构是
(分数:
2.50)
A.For...Next
B.ForEach...Next
C.Do...Loop
D.Do...EndDo √
解析:
[解析]VisualBasic支持的循环结构包括:
For...Next循环、ForEach…Next循环、Do…Loop循环和While循环。
5.在窗体上画两个文本框(名称分别为Text1和Text2)和一个命令按钮(名称为Command1),然后编写如下事件过程:
PrivateSubCommand1_Click()
x=0
DoWhilex<50
x=(x+2)*(x+3):
n=n+1
Loop
Text1.Text=Str(n):
Text2.Text=Str(x)
EndSub
程序运行后,单击命令按钮,在两个文本框中显示的值分别为
(分数:
2.50)
A.1和0
B.2和72 √
C.3和50
D.4和168
解析:
[解析]本题考查的考点是有关Do型循环的。
对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。
在Until循环中条件为False时执行循环体,条件为True时退出循环;在While循环中条件为True时执行循环体,条件为False时退出循环,这一点要注意区分清楚。
本题只需要实际计算一下两次循环中x和n值的变化即可容易的得出结果。
6.编写如下程序:
PrivateSubCommand1_Click()
DimxAsInteger,yAsInteger
x=1:
y=1
Do
y=x*y
Ify>10Then
ExitDo
Else
x=x+3
EndIf
LoopUntilx<=10
Printx;y
EndSub
程序运行后,单击命令按钮Command1,输出结果为
(分数:
2.50)
A.11
B.41 √
C.42
D.728
解析:
[解析]Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。
在Until循环中条件为False时执行循环体,条件为True时退出循环;在While循环中条件为True时执行循环体,条件为False时退出循环。
本题中使用的是后判断型循环,第一次循环时y的值为1,不满足y>10,执行Else分支,x变成4,此时由于满足x<=10所以结束循环。
7.编写如下程序:
PrivateSubCommand1_Click()
DimnAsLong,sAsString
n=InputBox("输入一个数")
DoWhilen<>0
s=s&nMod10:
s=s&n/10Mod10
n=n/100
Loop
Prints
EndSub
程序运行后,单击命令按钮Command1,并输入数值123456,则输出结果为
(分数:
2.50)
A.654321 √
B.563412
C.642531
D.615243
解析:
[解析]本题在循环中先将n除以10的余数(即个位数字)连接到s上,然后将整除10后除以10的余数(即十位上数字)连接到s上,然后n整除100的值赋值给n(即去掉最后两位),然后继续进行循环,所以最终将会输出数字的逆序。
8.下面程序计算并输出的是
PrivateSubCommand1_Click()
a=10:
s=0
Do
s=s+a*a*a:
a=a-1
LoopUntila<=0
Prints
EndSub
(分数:
2.50)
A.13+23+33…+103的值 √
B.10!
+…+3!
+2!
+1!
的值
C.(1+2+3+…+10)3的值
D.10个103的和
解析:
[解析]对于Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。
在Until循环中条件为False时执行循环体,条件为True时退出循环;在While循环中条件为True时执行循环体,条件为False时退出循环。
本题是一个比较简单的Do循环,计算从1到10的立方和。
9.窗体上有1个名称为Command1的命令按钮,事件过程如下:
PrivateSubCommand1_Click()
Dimx%,y%,z%
x=InputBox("请输入第1个整数"):
y=InputBox("请输入第2个整数")
DoUntilx=y
Ifx>yThen
x=x-y
Else
y=y-x
Endif
Loop
Printx
EndSub
运行程序,单击命令按钮,并输入2个整数169和39,则在窗体上显示的内容为
(分数:
2.50)
A.11
B.13 √
C.23
D.39
解析:
[解析]本题的循环中将两个输入的数x和y互相相减,直到x=y为止,实际上就是辗转相减法求最大公约数的过程。
10.窗体上有1个名称为Command1的命令按钮,事件过程及函数过程如下:
PrivateSubCommand1_Click()
DimmAsString
m=InputBox("请输入字符串")
Printpick_str(m)
EndSub
PrivateFunctionpick_str(sAsString)AsString
temp="":
i=1:
sLen=Len(s)
DoWhilei<=sLen/2
temp=temp+Mid(s,i,1)+Mid(s,sLen-i+1,1)
i=i+1
Loop
pick_str=temp
EndFunction
运行程序,单击命令按钮,并在输入对话框中输入“basic”,则在窗体上显示的内容为
(分数:
2.50)
A.bcai √
B.cbia
C.bcais
D.cbias
解析:
[解析]本题的函数中使用了Do循环,循环条件是i<=sLen/2;由于字符串的长度为5,所以循环会执行两次;在每次循环中使用Mid函数依次取得字符串的第一个字符、最后一个字符、第二个字符、倒数第二个字符。
11.编写如下程序:
PrivateSubCommand1_Click()
DimmAsInteger,nAsInteger
m=1:
n=0
DoWhilem<20
n=m+n:
m=3*m+1
Loop
Printm,n
EndSub
程序运行后,单击命令按钮Command1,输出结果为
(分数:
2.50)
A.4018 √
B.4019
C.2064
D.2164
解析:
[解析]本题的Do循环是一个先判断条件型的循环,在循环中将循环变量m的值每次改变。
分析循环可看出,在4次循环中m的值分别为1、4、13、40,而只有前三次循环中的m值被累加到n中,最后一次循环由于不满足m<20而跳出。
12.下列循环中,可以正常结束的是
(分数:
2.50)
A.i=10Doi=i+1LoopUntili<1
B.i=1Doi=i+1LoopUntili=10 √
C.i=10Doi=i+1LoopWhilei>1
D.i=10Doi=i-2LoopUntili=1
解析:
[解析]Do循环语句的功能是:
当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。
DoWhile|Until…Loop循环是在条件满足的情况下才执行一次循环体,而Do…LoopWhile|Until循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。
本题的A选项由于i的值从10开始递增,永远不会满足i<1而无限循环;C选项由于i的值从10开始递增,永远满足i>1而无限循环;D选项由于i的值从10开始递减,但是因为每次递减2,所以i永远为偶数,不会满足i=1而无限循环。
13.以下能够正常结束循环操作的程序段是
(分数:
2.50)
A.i=5Doi=i+1LoopUntili<0
B.i=5Doi=i+2LoopUntili=1
C.i=5DoWhilei>0i=i-2Loop √
D.i=0DoWhilei<1i=i-2Loop
解析:
[解析]Do循环语句的功能是:
当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。
DoWhile|Until…Loop循环是在条件满足的情况下才执行一次循环体,而Do…LoopWhile|Until循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。
本题的A选项由于i的值从5开始递增,永远不会满足i<0而无限循环;B选项由于i的值从5开始递增,永远满足i=1而无限循环;D选项由于i的值从0开始递减,永远满足i<1而无限循环。
14.窗体上有一个名称为Command1的命令按钮,其单击事件过程如下:
PrivateSubCommand1_Click()
DimsAsDouble
s=0:
i=1
DoWhilei<6
s=s+i/(i+1):
i=i+1
LoopPrints
EndSub
该事件过程的功能是计算一个表达式的值,该表达式是
(分数:
2.50)
A.1+1/2+2/3+3/4+4/5
B.1+1/2+2/3+3/4+4/5+5/6
C.1/2+2/3+3/4+4/5
D.1/2+2/3+3/4+4/5+5/6 √
解析:
[解析]本题中Do循环的循环变量i的初值为1,继续循环的条件是i<6,在每次循环中i的值加1,因此循环会执行5次:
在第一次循环中累加1/2,第二次循环中累加2/3,第三次循环中累加3/4……即最后计算的是1/2+2/3+3/4+4/5+5/6的值。
15.假定有如下程序:
PrivateSubForm_Click()
DimNAsInteger,JAsInteger
N=0J=1
DoUntilN>2
N=N+1:
J=J+N*(N+1)
Loop
PrintN;J
EndSub
运行程序,单击窗体,输出结果是
(分数:
2.50)
A.321 √
B.37
C.01
D.313
解析:
[解析]Do循环语句的功能是:
当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。
DoWhile|Until…Loop循环是在条件满足的情况下才执行一次循环体,而Do…LoopWhile|Until循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。
本题的循环共执行3次,跳出循环时N的值为3,J的值为21。
16.有如下程序:
Functionfun(ByValnumAsInteger)AsInteger
DimkAsIntegerk=1
num=Abs(num)
DoWhilenum
k=k*(numMod10):
num=num/10
Loop
fun=k
EndFunction
PrivateSubForm_Click()
DimnAsInteger,rAsInteger
n=InputBox("请输入一个数:
"):
n=Int(n):
r=fun(n):
Printr
EndSub
程序运行后,单击窗体,在输入对话框中输入246,输出结果为
(分数:
2.50)
A.120
B.48 √
C.24
D.60
解析:
[解析]在函数fun中会对传过来的参数num进行判断,如果不为0则进行循环,将各位数字乘到一起然后作为函数的返回值。
17.下面程序的功能是输出100以内所有素数:
PrivateSubCommand1_Click()
Forn=2To100
isprime=True:
k=2
DoWhilek<=n/2And______
IfnModk=0Thenisprime=False
k=k+1
Loop
IfisprimeThenPrintn
Nextn
EndSub
为使上面程序可以实现该功能,程序代码中横线处应填写的代码是
(分数:
2.50)
A.isprime √
B.Notisprime
C.n<100
D.n<=100
解析:
[解析]求素数的基本思路是,用2到n/2依次去除要判断的数n,如果能整除就将isprime置为False代表不是素数;如果isprime已经为False,那么循环没有继续执行的必要了,所以应填入isprime=True,由于是布尔型变量,可以简写为isprime。
18.编写如下程序:
DimnumAsInteger,rAsInteger,nAsInteger,iAsInteger,arr(5)AsInteger
PrivateSubCommand1_Click()
num=12:
r=2
Callsub1(num,r,n)
Fori=nTo1Step-1
Printarr(i);
Nexti
EndSub
Subsub1(dAsInteger,rAsInteger,kAsInteger)
k=0
DoWhiled<>0
k=k+1:
arr(k)=dModr:
d=d/r
Loop
EndSub
程序运行后,单击命令按钮Command1,输出结果为
(分数:
2.50)
A.1100 √
B.0011
C.0101
D.1010
解析:
[解析]本题实际上是在子过程sub1中对arr数组进行的赋值工作,形参d的值为12,r的值为2,k的初值为0;在循环中计算d除以2的余数放到数组的第一个元素,整除2后再除以2的余数放到第二个元素……以此类推,最后数组arr中存放的是(0、0、1、1),在Command1_Click()过程中调用完子过程对数组进行赋值以后,逆序输出了数组的值。
19.编写如下程序:
PrivateSubCommand1_Click()
DimnAsLong,sAsString
n=InputBox("输入一个数")
DoWhilen<>0
Printn/10Mod10;:
PrintnMod10;:
n=n/100
Loop
Prints
EndSub
程序运行后,单击命令按钮Command1,并输入数值123456,则输出结果为
(分数:
2.50)
A.654321
B.563412 √
C.642531
D.615243
解析:
[解析]本题中是在一个Do循环中对一个数字进行分解,首先输出该数字整除10之后再除以10得到的余数(即十位上数字),然后输出该数除以10得到的余数(即个位数字),然后将该数去掉十位和个位上的数字以后继续循环,最终依次输出5、6、3、4、1、2。
20.假定有以下程序段
Fori=1To3
Fori=5To1Step-1
Printi*j
Nextj
Nexti
则语句Printi*j的执行次数是
(分数:
2.50)
A.15 √
B.16
C.17
D.18
解析:
[解析]本题考查的考点是有关二重循环的。
For…Next循环语句可提供一个重复执行的语句序列,遵循“先检查,后执行”的规则,执行过程中,循环次数=Int(终值-初值)/步长+1。
二重循环的内循环语句执行次数等于内外循环次数之积。
21.在窗体上画1个命令按钮,并编写如下事件过程:
PrivateSubCommand1_Click()
Dima(3,3)
Form=1To3
Forn=1To3
Ifn=mOrn=4-mThen
a(m,n)=m+n
Else
a(m,n)=0
EndIf
Printa(m,n);
Nextn
Nextm
EndSub
运行程序,单击命令按钮,窗体上显示的内容为
(分数:
2.50)
A.200040006
B.204040406 √
C.230340006
D.200045056
解析:
[解析]本题通过一个嵌套的For循环为二维数组a的各元素赋值,该二维数组对应矩阵的主对角线上的元素(即满足条件m=n)和副对角线上的元素(即满足条件m+n=4)其值为m+n,即主对角线上的元素从左上至右下依次为2、4、6,副对角线上的元素均为4,而其它元素均为0。
22.编写如下程序:
PrivateSubCommand1_Click()
DimnumAsInteger,kAsInteger,nAsInteger
num=InputBox("请输入一个正整数:
")
k=numn=2
Do
DoWhilenumModn=0
Printn:
:
num=num/n
Loop
n=n+1
LoopUntiln>k/2
EndSub
程序运行后,单击命令按钮Command1,并输入数值20,则输出结果为
(分数:
2.50)
A.225 √
B.234
C.2345
D.25
解析:
[解析]Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。
在Until循环中条件为False时执行循环体,条件为True时退出循环;在While循环中条件为True时执行循环体,条件为False时退出循环。
本题是一个嵌套的Do循环,外层循环是后判断条件的Until型循环,内层循环是先判断条件的While型循环。
根据输入的值20可判断出三次输出的结果为2、2、5。
23.编写如下程序:
PrivateSubCommand1_Click()
Dima(3,3)AsInteger,b(3,3)AsInteger
Fori=1To3
Forj=1To3
a(i,j)=i+j:
b(i,j)=a(i,j)+i*(j-1)
Nextj
Nexti
Fori=1To3
Forj=1To3
Printb(i,j);
Nextj
Nexti
EndSub
程序运行后,单击命令按钮Command1,输出结果为
(分数:
2.50)
A.234345456
B.2463694812 √
C.357581171115
D.46871013101418
解析:
[解析]本题中有两个二维数组a和b,然后用一个二重循环为两个数组赋值,根据每次循环中i和j的值不难得出B为正确答案。
24.已知在4行3列的全局数组score(4,3)中存放了4个学生3门课程的考试成绩(均为整数)。
现需要计算每个学生的总分,某人编写程序如下:
OptionBase1
PrivateSubCommand1_Click()
DimsumAsInteger
sum=0
Fori=1To4
Forj=1To3
sum=sum+score(i,j)
Nextj
Print"第"&i&"个学生的总分是:
";sum
Nexti
EndSub
运行此程序时发现,除第1个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。
以下修改方案中正确的是
(分数:
2.50)
A.把外层循环语句Fori=1To4改为Fori=1To3内层循环语句Forj=1To3改为Forj=1To4
B.把sum=0移到For
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级VISUAL+BASIC82 二级 VISUAL BASIC82