收藏 分销(赏)

《算法与程序设计》综合练习.doc

上传人:仙人****88 文档编号:5899347 上传时间:2024-11-22 格式:DOC 页数:13 大小:2.13MB 下载积分:10 金币
下载 相关 举报
《算法与程序设计》综合练习.doc_第1页
第1页 / 共13页
《算法与程序设计》综合练习.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
《算法与程序设计》综合练习 一、选择题(本大题共12小题,每小题2分,共24分。在每小题给出的四个选项中,只有一个符合题目要求) 1.在VB应用程序设计中,通常应对________编写程序代码。(  ) A.所有对象 B.窗体 C.Timer D.有事件的对象 答案 D 2.要定义一个可存储数值-7.283的变量,其合适的类型是(  ) A.Integer B.Long C.Single D.Boolean 答案 C 3.一张单据上有一个5位数的号码67□□8,其中百位和十位上的数字看不清楚了,但知道该数能够被78整除,也能被67整除。设计一个算法求出该号码,下列算法合适的是(  ) A.解析算法 B.穷举算法 C.递归算法 D.查找算法 答案 B 4.已知三角形的三条边长分别为a.b.c,半周长p=(a+b+c)/2该三角形面积计算公式为s=,计算S的VB语句是(  ) A.s= B.s= C.s= D.s=Sqr(p*(p-a)*(p-b)*(p-c)) 答案 D 5.表示区间[5,14]的VB表达式是(  ) A.Int(Rnd*5) + 10 B.Int(Rnd*10) + 5  C.Int(Rnd*10) + 14 D.Int(Rnd*14) + 5 解析 Int(Rnd*5) + 10的区间为[10,14];Int(Rnd*10) + 5的区间为[5,14];Int(Rnd*10) + 14的区间为[14,23];Int(Rnd*14) + 5的区间为[5,18]。 答案 B 6. 某算法流程图如图所示,执行该算法,输出s的结果是(  ) A.0 B.8 C.10 D.15 答案 D 7.运行如下Visual Basic程序, 单击命令按钮Command1,出现如图 所示的出错信息。发生“下标越界” 错误时所执行的语句是(  ) Private Sub Command1_Click()  Dim a(0 To 5) As Integer  Dim i As Integer      ’①  a(0) = 1          ’②  For i = 1 To 5 a(i) = 2 * a(i-1) + 1   ’③  Next i  Text1.Text =Str(a(i))  ’④ End Sub A.① B.② C.③ D.④ 答案 D 8.小王用天平称量的过程如下:先放置100克砝码,砝码偏重;再将砝码改为50克,砝码偏轻;又将砝码改为70克,……通过这种策略,小王很快完成物品称重工作。此过程借鉴的算法是(  ) A.排序 B.顺序查找 C.对分查找 D.累加 答案 C 9.如下VB程序段: Private Sub Command1_Click() Dim x As Integer Dim y As Integer x = Val(Text1.Text) y = 10 If x < 0 Then y = 5 Else   If x < 100 Then    y = 100   Else    y = 200   End If End If Print y End Sub 运行后,在文本框Text1中输入5,程序输出的结果是(  ) A.5 B.10 C.100 D.200 答案 C 10.(2016·9·绍兴模拟)有如下VB程序: Dim n As Integer Function f(k As Integer) As Long  If k<=2 Then f=1 Else f=f(k-1)+f(k-2) End Function Private Sub command1_click()  n=Val(Text1.Text)  Label2.Caption=Str(f(n)) End Sub 该VB程序采用的主要算法是(  ) A.枚举 B.递归 C.对分查找 D.冒泡排序 解析 由f=f(k-1)+f(k-2)可判断该程序采用的主要是递归算法。 答案 B 11.(2016·9·台州评估)有如下VB程序段: Dim d(1 To 9)As Integer,s As String Dim L As Integer,R As Integer,M As Integer,key As Integer 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 DO While L<=R  M=(L+R+1)\2  If d(M)=key Then L=10  If d(M)<key Then L=M+1 Else R=M-1  s=s+Str(M) Loop Label1.Caption=s 该程序段运行后,标签框Label1中显示的内容是(  ) A.5 8 7 B.5 7 C.11 19 17 D.11 17 解析 本题程序段为二分查找算法程序,M为每次查找二分的中点,s变量将每次的中点M转换成字符连接起来,最后标签框Label1输出s的值。分析程序运算过程,变量M第1次值为5,第2次为8,第3次为7,第3次找到d(7)=17。所以Label1=5 8 7。 答案 A 12.有如下程序片段,希望对a(1)到a(6)进行升序排序: For i = 1 To 5 k =i For j =i + 1 To 6 ______①______ Next j If k <>i Then t = a(i): a(i) = a(k): a(k) = t  Next i 那么划线部分①应填(  ) A.If a(j) < a(k) Then k = j B.If a(j) < a(k) Then k = i C.If a(j) > a(k) Then k = j D.If a(j) > a(k) Then k = i 答案 A 二、非选择题(本大题共5小题,其中第13小题5分,第14小题4分,第15小题5分,第16小 题6分,第17小题6分,共26分) 13.在一次校园歌手大奖赛中,有20位评委负责评判,打分的上限是10分。统计选手得分时,去掉一个最高分,再去掉一个最低分,然后取评委打分的平均值作为选手的最后得分。根据上述规则,信息小组设计了计算选手得分的程序。核心部分的程序如下: ‘d数组中存放了20位评委的打分 Smax=0:smin=10:score=0 For i=1 To 20 score = score + d(i) If__________________________________________________________ If  d(i) < smin Then smin =d(i) Text1.Text=smax Text2.Text=smin Text3.Text= score 请分析任务和程序段,完成下列题目。 (1)程序段中出现的Text1、Text2、Text3是________类型的控件(  ) A.列表框 B.文本框 C.按钮 D.标签 (2)为精确地显示选手的最后得分,变量score的数据类型应定义为(  ) A.integer B.Long C.double D.string (3)在设计用户界面时,要在启动计算过程的按钮上显示“计算”二字,应该将按钮的“________ ”属性值设置为“计算”。 (4)程序执行过程中,程序段中虚线框内的代码将被执行________次。 (5)请分析程序,将程序段中虚线框内的空白处补充完整。 If__________________________________________________________ 答案 (1)B (2) C  (3) Caption (4) 20 (5) d(i)>smax Then smax=d(i) 或smax < d(i) Then smax=d(i)  或 d(i) >= smax Then smax=d(i) 或smax <= d(i) Then smax=d(i) 14.编写VB程序,实现如下功能:在文本框Textl中输入包含数字、字母的字符串,单击“统计”按钮Command1,统计该字符串中数字字符的个数,并在标签Label1中输出结果。界面如图1所示。 (1)在设计应用程序界面时,应使用图2所示“控件工具箱”中的________(填写相应编号)添加“统计”按钮。 (2)为实现上述功能,请在划线处填入合适代码或选项。 Private Sub Command1-Click() Dim s As String,c As String Dim i As Integer,n As Integer,num As Integer s=____①____’(填程序代码) num=0 n=Len(s) ②____’(填字母:从下列A、B、C三个选项中选取一项) ③____’(填字母:从下列A、B、C三个选项中选取一项)  If c>=“0”And c<=“9”Then num=num+1  End If Next i Label1.Caption=str(num) End Sub 划线②、③的选项: A.Do While i<=n B.c=Mid(s,i,1) C.For i=1 To n 答案 (1)4 (2)① text1.text ②C ③B 15.(2016·9·台州评估)编写VB程序,实现如下功能:在文本框Text1中输入十进制整数,文本框Text2中输入待转换进制(范围2~16),单击“转换”按钮Command1,在列表框List1中输出该整数对应的进制结果,运行效果如图1所示。 图1          图2 (1)设计时,属性窗口对象列表如图2所示,则该程序共有________个对象。 (2)为实现上述功能,请在划线处填入合适的代码。  Private Sub Command1_Click() Const code=“0123456789ABCDEF” Dim s1 As String,s As String ’变量s存储转换后的结果 Dim x AS Long,R As Integer ______①______ If R>2 And R<=16 Tnen x=Val(Text1.Text) s=“” Do While x>0 y=x Mod R x=______②______ s1=Mid(code,y+1,1)’将余数转换为对应的字符 s=______③______ Loop List1.AddItem“(“& Text1.Text&”)10“&”→(“& s &”)”&R  End If End Sub 解析 (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。 为实现上述功能,请在划线处填入合适的代码。 Dim a(1 To 10) As Integer Private Sub Command1_Click() Dim n As Integer  ’ n用于统计已经产生的随机整数个数 Dim i As Integer, j As Integer Dim x As Integer, k As Integer Dim f As Boolean Randomize n = 0 List1.Clear List2.Clear Do While n < 10  x = ____(1)____  ’产生[1,999]范围内的随机整数  f = False  For i = 1 To n If____(2)____ Then f = True  Nexti  If f = False Then  n = n + 1  a(n) = x  List1.AddItemStr(a(n))  End If Loop For i = 1 To 9  For j = 10 To i + 1 Step -1 If____(3)____ Then k = a(j): a(j) = a(j - 1): a(j - 1) = k End If  Next j Next i For i = 1 To 10 List2.AddItem Str(a(i)) Next i End Sub 解析 (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·9·台州评估)猜数字是一种古老的密码破译类益智小游戏。通常由两个人玩,也可以由一个人和电脑玩,其标准规则为: (1)一方出数字,出数字的人要想好一个无重复数字的4位数(如0165,5234等),不能让猜的人知道; (2)另一方猜数字,每猜一个数字,出数者根据结果给出“几A几B”的提示,其中A前面的数字表示位置正确的数字个数,而B前面的数字表示数字正确但位置不对的数字个数。(如要猜5234,猜的人给出5346,则提示1A2B); (3)重复第二步的猜测过程,直到猜中(即提示4A0B)为止。 小林编写了一个和电脑猜数字的VB程序,其功能如下:窗体加载时,调用自定义函数产生待猜的4位数字,并初始化猜测次数。用户在文本框Text1中输入猜的数字,单击“我猜”按钮Commandl,程序进行判断,并将结果显示在列表框Listl中。猜中后,在标签框Label2中根据猜测次数给出评语。程序运行效果如图1所示。 图1 (1)实现上述功能的VB程序如下,请在划线处填入合适代码。 Dim result As String,total As Integer Dim flag(0 to 9)As Boolean ’标记下标对应的数字是否存在,初值默认为False Private Sub Form_Load() result=____①____ total=0 End Sub Private Sub Command1_Click()  Dim A As Integer,B As Integer  Dim C As Integer ’变量C存储数字正确(含位置正确)的数字个数 Dim guess As String,i As Integer,t1 As String,t2 As String guess=Text1.Text A=0∶C=0 For i=1 To 4 t1=Mid(result,i,1) t2=Mid(guess,i,1) If t1=t2 Then A=A+1 If____②____Then C=C+1 Next i total=total+1 B=____③____ List1.AddItem Str(total)&“.”& guess &“”& Str(A)&“A”& Str(B)&“B” If A=4 Then  If total<=8 Then Labe12.Caption=“太厉害了!您只用了”& total &“次。”  Else  Labe12.Caption=“继续锻炼!您共花了”& total &“次。” End If  End If End Sub ’RndCode函数用于随机产生待猜测的n位不重复数字字符 Function RndCode(n As Integer)As String Dim x As Integer,i As Integer Randomize num=0∶RndCode=“” Do While num<n  x=Int(Rnd*10)‘随机产生一个[0,9]的数字  If flag(x)=False Then flag(x)=True num=num+1 RndCode=RndCode & x  End If Loop End Function (2)如果某次游戏过程如图2所示,则第7次要猜测成功,应输入________。 图2 A.6321 B.6312 C.2531 D.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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服