《算法与程序设计》综合练习Word格式.docx
- 文档编号:16833111
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:12
- 大小:83.13KB
《算法与程序设计》综合练习Word格式.docx
《《算法与程序设计》综合练习Word格式.docx》由会员分享,可在线阅读,更多相关《《算法与程序设计》综合练习Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
所示的出错信息。
发生“下标越界”
错误时所执行的语句是( )
PrivateSubCommand1_Click()
Dima(0To5)AsInteger
DimiAsInteger ’①
a(0)=1 ’②
Fori=1To5
a(i)=2*a(i-1)+1 ’③
Nexti
Text1.Text=Str(a(i)) ’④
EndSub
A.①B.②C.③D.④
8.小王用天平称量的过程如下:
先放置100克砝码,砝码偏重;
再将砝码改为50克,砝码偏轻;
又将砝码改为70克,……通过这种策略,小王很快完成物品称重工作。
此过程借鉴的算法是( )
A.排序B.顺序查找C.对分查找D.累加
9.如下VB程序段:
DimxAsInteger
DimyAsInteger
x=Val(Text1.Text)
y=10
Ifx<
0Then
y=5
Else
Ifx<
100Then
y=100
Else
y=200
EndIf
EndIf
Printy
运行后,在文本框Text1中输入5,程序输出的结果是( )
A.5B.10C.100D.200
10.(2016·
9·
绍兴模拟)有如下VB程序:
DimnAsInteger
Functionf(kAsInteger)AsLong
Ifk<=2Thenf=1Elsef=f(k-1)+f(k-2)
EndFunction
PrivateSubcommand1_click()
n=Val(Text1.Text)
Label2.Caption=Str(f(n))
该VB程序采用的主要算法是( )
A.枚举B.递归
C.对分查找D.冒泡排序
解析 由f=f(k-1)+f(k-2)可判断该程序采用的主要是递归算法。
11.(2016·
台州评估)有如下VB程序段:
Dimd(1To9)AsInteger,sAsString
DimLAsInteger,RAsInteger,MAsInteger,keyAsInteger
d
(1)=2∶d
(2)=3∶d(3)=5∶d(4)=7∶d(5)=11
d(6)=13∶d(7)=17∶d(8)=19∶d(9)=23
L=1∶R=9
s=“”∶key=17
DOWhileL<=R
M=(L+R+1)\2
Ifd(M)=keyThenL=10
Ifd(M)<keyThenL=M+1ElseR=M-1
s=s+Str(M)
Loop
Label1.Caption=s
该程序段运行后,标签框Label1中显示的内容是( )
A.5 8 7B.5 7
C.11 19 17D.11 17
解析 本题程序段为二分查找算法程序,M为每次查找二分的中点,s变量将每次的中点M转换成字符连接起来,最后标签框Label1输出s的值。
分析程序运算过程,变量M第1次值为5,第2次为8,第3次为7,第3次找到d(7)=17。
所以Label1=587。
答案 A
12.有如下程序片段,希望对a
(1)到a(6)进行升序排序:
Fori=1To5
k=i
Forj=i+1To6
______①______
Nextj
Ifk<
>
iThent=a(i):
a(i)=a(k):
a(k)=t
那么划线部分①应填( )
A.Ifa(j)<
a(k)Thenk=j
B.Ifa(j)<
a(k)Thenk=i
C.Ifa(j)>
D.Ifa(j)>
二、非选择题(本大题共5小题,其中第13小题5分,第14小题4分,第15小题5分,第16小题6分,第17小题6分,共26分)
13.在一次校园歌手大奖赛中,有20位评委负责评判,打分的上限是10分。
统计选手得分时,去掉一个最高分,再去掉一个最低分,然后取评委打分的平均值作为选手的最后得分。
根据上述规则,信息小组设计了计算选手得分的程序。
核心部分的程序如下:
‘d数组中存放了20位评委的打分
Smax=0:
smin=10:
score=0
Fori=1 To 20
score=score+d(i)
If__________________________________________________________
If d(i)<
sminThensmin=d(i)
Text1.Text=smax
Text2.Text=smin
Text3.Text=score
请分析任务和程序段,完成下列题目。
(1)程序段中出现的Text1、Text2、Text3是________类型的控件( )
A.列表框B.文本框C.按钮D.标签
(2)为精确地显示选手的最后得分,变量score的数据类型应定义为( )
A.integerB.LongC.doubleD.string
(3)在设计用户界面时,要在启动计算过程的按钮上显示“计算”二字,应该将按钮的“________”属性值设置为“计算”。
(4)程序执行过程中,程序段中虚线框内的代码将被执行________次。
(5)请分析程序,将程序段中虚线框内的空白处补充完整。
答案
(1)B
(2)C (3)Caption (4)20
(5)d(i)>
smax Thensmax=d(i)
或smax<
d(i) Then smax=d(i)
或d(i)>
=smaxThen smax=d(i)
=d(i) Then smax=d(i)
14.编写VB程序,实现如下功能:
在文本框Textl中输入包含数字、字母的字符串,单击“统计”按钮Command1,统计该字符串中数字字符的个数,并在标签Label1中输出结果。
界面如图1所示。
(1)在设计应用程序界面时,应使用图2所示“控件工具箱”中的________(填写相应编号)添加“统计”按钮。
(2)为实现上述功能,请在划线处填入合适代码或选项。
PrivateSubCommand1-Click()
DimsAsString,cAsString
DimiAsInteger,nAsInteger,numAsInteger
s=____①____’(填程序代码)
num=0
n=Len(s)
②____’(填字母:
从下列A、B、C三个选项中选取一项)
③____’(填字母:
Ifc>=“0”Andc<=“9”Then
num=num+1
EndIf
Nexti
Label1.Caption=str(num)
划线②、③的选项:
A.DoWhilei<=nB.c=Mid(s,i,1)
C.Fori=1Ton
答案
(1)4
(2)①text1.text ②C ③B
15.(2016·
台州评估)编写VB程序,实现如下功能:
在文本框Text1中输入十进制整数,文本框Text2中输入待转换进制(范围2~16),单击“转换”按钮Command1,在列表框List1中输出该整数对应的进制结果,运行效果如图1所示。
图1 图2
(1)设计时,属性窗口对象列表如图2所示,则该程序共有________个对象。
(2)为实现上述功能,请在划线处填入合适的代码。
PrivateSubCommand1_Click()
Constcode=“0123456789ABCDEF”
Dims1AsString,sAsString ’变量s存储转换后的结果
DimxASLong,RAsInteger
IfR>2AndR<=16Tnen
x=Val(Text1.Text)
s=“”
DoWhilex>0
y=xModR
x=______②______
s1=Mid(code,y+1,1)’将余数转换为对应的字符
s=______③______
List1.AddItem“(“&
Text1.Text&
”)10“&
”→(“&
s&
”)”&
R
解析
(1)观察图2下拉列表,对象的个数为7个。
(2)阅读程序,填空①处的下一句判断R的值,R用于储存要转换的进制即Text2的内容,①处应为给R赋值,即R=val(Text2.text)。
②处所在循环是进行进制的转换,采用除R取余法,y储存余数,x储存除以R以后去掉余数的整数,以备下次循环x再除R取余,所以X=X\R。
③处是将求得的余数字符s1连接来,使用字符串连接运算符“&
”或“+”,③处应填写sl&
s或sl+s,注意连接顺序,先求得的余数要入在后边,填写s+sl或s&
sl错误。
因为变量sl储存的是通过截取字符串code得到的字符,不能使用str()函数字符转换字符。
答案
(1)7
(2)①R=val(Text2.text) ②&
或+ ③sl&
s或s1+s
16.下列VB程序的功能是:
程序运行时,单击命令按钮Command1后,产生10个[1,999]范围内互不相同的随机整数,依次显示在列表框List1中,然后将它们按从小到大的顺序排序,排序结果显示在列表框List2中。
数组a用于存储产生的10个随机整数,变量f用于标记随机整数x与已生成的整数是否有重复,如有则为True,没有则为False。
为实现上述功能,请在划线处填入合适的代码。
Dima(1To10)AsInteger
DimnAsInteger ’n用于统计已经产生的随机整数个数
DimiAsInteger,jAsInteger
DimxAsInteger,kAsInteger
DimfAsBoolean
Randomize
n=0
List1.Clear
List2.Clear
DoWhilen<
10
x=____
(1)____ ’产生[1,999]范围内的随机整数
f=False
Fori=1Ton
If____
(2)____Thenf=True
Nexti
Iff=FalseThen
n=n+1
a(n)=x
List1.AddItemStr(a(n))
Fori=1To9
Forj=10Toi+1Step-1
If____(3)____Then
k=a(j):
a(j)=a(j-1):
a(j-1)=k
Nextj
Fori=1To10
List2.AddItemStr(a(i))
解析
(1)为产生[1,999]范围内的随机整数;
(2)判断随机整数x与已生成的整数是否有重复,如有则为True,没有则为False。
(3)为冒泡排序内层循环中相邻两个数进行比较。
答案
(1)Int(Rnd*999)+1
(2)x=a(i)
(3)a(j)<
a(j-1)
17.(2016·
台州评估)猜数字是一种古老的密码破译类益智小游戏。
通常由两个人玩,也可以由一个人和电脑玩,其标准规则为:
(1)一方出数字,出数字的人要想好一个无重复数字的4位数(如0165,5234等),不能让猜的人知道;
(2)另一方猜数字,每猜一个数字,出数者根据结果给出“几A几B”的提示,其中A前面的数字表示位置正确的数字个数,而B前面的数字表示数字正确但位置不对的数字个数。
(如要猜5234,猜的人给出5346,则提示1A2B);
(3)重复第二步的猜测过程,直到猜中(即提示4A0B)为止。
小林编写了一个和电脑猜数字的VB程序,其功能如下:
窗体加载时,调用自定义函数产生待猜的4位数字,并初始化猜测次数。
用户在文本框Text1中输入猜的数字,单击“我猜”按钮Commandl,程序进行判断,并将结果显示在列表框Listl中。
猜中后,在标签框Label2中根据猜测次数给出评语。
程序运行效果如图1所示。
图1
(1)实现上述功能的VB程序如下,请在划线处填入合适代码。
DimresultAsString,totalAsInteger
Dimflag(0to9)AsBoolean
’标记下标对应的数字是否存在,初值默认为False
PrivateSubForm_Load()
result=____①____
total=0
DimAAsInteger,BAsInteger
DimCAsInteger
’变量C存储数字正确(含位置正确)的数字个数
DimguessAsString,iAsInteger,t1AsString,t2AsString
guess=Text1.Text
A=0∶C=0
Fori=1To4
t1=Mid(result,i,1)
t2=Mid(guess,i,1)
Ift1=t2ThenA=A+1
If____②____ThenC=C+1
total=total+1
B=____③____
List1.AddItemStr(total)&
“.”&
guess&
“”&
Str(A)&
“A”&
Str(B)&
“B”
IfA=4Then
Iftotal<=8Then
Labe12.Caption=“太厉害了!
您只用了”&
total&
“次。
”
Else
Labe12.Caption=“继续锻炼!
您共花了”&
’RndCode函数用于随机产生待猜测的n位不重复数字字符
FunctionRndCode(nAsInteger)AsString
DimxAsInteger,iAsInteger
num=0∶RndCode=“”
DoWhilenum<n
x=Int(Rnd*10)‘随机产生一个[0,9]的数字
Ifflag(x)=FalseThen
flag(x)=True
RndCode=RndCode&
x
(2)如果某次游戏过程如图2所示,则第7次要猜测成功,应输入________。
图2
A.6321B.6312C.2531D.2513
解析
(1)①分析程序结构,自定义函数RndCode用于随机产生待猜测的n位不重复数字字符,result变量用于储存待猜测的4位不重复数字字符,①处应为调用自定义函数赋值,result=RndCode(4)。
②、变量C存储数字正确(含位置正确)的数字个数,②处条件判断语句条件应该是判断猜测的数字中t2是否包含在待猜数字之中的表达式,即t2是否包含在result所含数字之中,这个判断结果在自定义函数RndCode中已经判断好存储在数组flag中,即如果t2包含在result所含数字之中,flag(t2)为真,所以②处应为flag(t2)或flag(val(t2))。
③、变量A存储数和位都正确的数字个数,变量B存储位不正确数正确的个数,变量C存储数字正确(含位置正确)的数字个数,③处求B的个数,是在C中把数和位都正确的部分去掉,应该是C-A。
(2)由第1行1234(0A3B)和第2行5678(0A1B)可知4位数中“1、2、3、4”有3个,“5、6、7、8”中有1个,一定不包含“0”和“9”。
再由第3行2349(1A1B)和第4行2190(1A1B)判断第1位一定是“2”,一定包含“1”并且“1”不在第2位上,“3”和“4”中有一个不包含在4位数中。
再由第5行3129(0A3B)和第6行6590(1A0B)可判断一定包含“3”,第2位数一定是“5”,再由第1行1234(0A3B)判断“3”不在第3位上,所以“3”一定在第4位上。
综合以上判断,可知该数应为“2513”。
答案
(1)①result=Rndcode(4) ②flag(t2)或flag(val(t2)) ③C-A
(2)D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法与程序设计 算法 程序设计 综合 练习