高中信息技术VB排序算法与程序实现浏览题阅览题会考复习题学校:___________姓名:___________班级:___________考号:___________一、选择题(一)顺序查找数据:我们假定被查找的数据存储在有n个元素的数组变量d中,要寻找的一个特定的数据(这个数据称为查找键)已经存储在变量key中。
下面是顺序查找算法的输入输出说明。
输入:查找键(设在变量key中)。
被查找的数据(设在数组变量d中)。
输出:若找到,输出值为key的数据所在的数组元素的下标,记为i;若未找到,输出结果为提示字符串:"找不到"。
当在n=8个元素的数组里顺序查找数据的示意图如下:找到情况未找到情况总结顺序查找数据结果判断条件:(1)、当找到时,肯定i<="8," n个数据时,肯定i<=n,i即为找到的数组元素下标,d(i)=key;(2)、当"找不到"时,i=9>8了;n个数据时,当i=n+1时,表示"找不到"。
顺序查找的主程序段如下:Private Sub 顺序查找_Click()n个数据放入d(1)到d(n)中Key =" Val(Text1.Text):" i =1.‘变量Key从文本框Text1取的数要查找的数;Do While ①i =" i" + 1LoopIf i <=" n" ThenText2.Text = "在d(" + Str(i) + ")中" ‘例如在文本框Text2显示:“在d(6)中”ElseText2.Text = "找不到"End IfEnd Sub上程序Do While的条件① 是()A.Key <> d(i)B.i <= nC.Key <> d(i) And i <= nD.Key <> d(i) or i <= n【答案】C【解析】2.用选择排序将七个数“2022、2017、2018、2014、2021、2012、2015”从小到大进行排序,则第二轮交换数据后的顺序是:A、2022、2021、2018、2017、2014、2012、2015B、2012、2014、2018、2017、2021、2022、2015C、2012、2017、2018、2014、2021、2022、2015D、2022、2021、2018、2014、2017、2012、2015【答案】D【解析】3.关于对分查找和顺序查找算法的叙述,正确的是()。
A.顺序查找需要排序,效率低;对分查找不需要排序,效率高。
B.顺序查找不需要排序,效率低;对分查找需要排序,效率高。
C.顺序查找不需要排序,效率高;对分查找需要排序,效率低。
D.顺序查找需要排序,效率高;对分查找不需要排序,效率低。
【答案】B【解析】4.某数组有8个元素,依次为500、419、352、350、300、200、180、100,若采用顺序查找法在该数组中查找数据300,需要查找的次数是()A.1 B.3 C.4 D.5【答案】D【解析】5.下面程序段用于求两数中的较大数(结果保存到变量maxn中),不正确的是()A.maxn=xIf y>=maxn Then maxn=yB.If x>y Then maxn=x Else maxn=yC.maxn=xIf y>=x Then maxn=yD.If y>=x Then maxn=ymaxn=x【答案】D【解析】6.某超市面食区共有5种面食品种,其价格依次为6.20、4.5、5.5、2、3,若采用冒泡排序算法对其进行从小到大排序,则第二趟的排序结果是()A、2 5.5 3 6.2 4.5B、2 3 6.2 4.5 5.5C、2 4.5 6.2 3 5.5D、2 3 5.5 4.5 6.2【答案】B【解析】7.某市组织了一次我心目中最喜爱的球队的评比活动,6个球队网上投票数为201、287、501、189、397、295,若采用冒泡排序算法对其进行从大到小排序,则第三遍加工后的结果是( )A .501 397 295 287 201 189B .501 397 201 287 295 189C .501 397 295 201 189 287D .501 397 295 201 287 189 【答案】D 【解析】8.在信息加工中,经常要对被处理的数据进行排序,在排序时经常要进行数据的交换。
下面有四个程序段:其中能正确地将x 和y 两个变量中的数据进行交换的程序段有( ) A 、 1个 B 、2个 C 、3个 D 、4个 【答案】C 【解析】9.解决上问题所用的算法是:( )A 、枚举法B 、 解析法C 、 顺序查找D 、选择法 【答案】B 【解析】10.用选择排序将七个数“2022,2017,2018,2014,2021,2012,2015”从小到大进行排序,则第二轮交换数据后的顺序是( ) A .2022,2021,2018,2017,2014,2012,2015 B .2012,2014,2018,2017,2021,2022,2015 C .2012,2017,2018,2014,2021,2022,2015 D .2022,2021,2018,2014,2017,2012,2015 【答案】B【解析】本题意图考核考生考生选择排序算法执行过程的理解。
11.下表记录了6个数据的排序过程。
分析表中数据可知,该排序采用的算法与排序方x = y y =x②x = x + y y= x -y③t = x x= y④x = x - y y= x+y式分别为( )A .冒泡排序,升序B .选择排序,升序C .冒泡排序,降序D .选择排序,降序 【答案】A 【解析】 二、填空题12.小王设计了一个程序来列举仁川亚运会的奖牌前三的国家。
下列VB 程序实现如下功能:单击命令按钮Command1后,在列表框List1中按奖牌数由多到少显示国家名称,如图。
请根据算法将下列程序补充完整。
Dim a(1 To 45) As StringDim b(1 To 45) As IntegerPrivate Sub Form_Load()a(1) = "中国"b(1) = 308‘45个代表团名称及奖牌数分别放在a(1)到a(45)及b(1)到b(45)中End SubPrivate Sub Command1_Click()Dim i As Integer,j As IntegerDim t As Integer,f As IntegerList1.ClearFor i = 1 To 3For j = ①To 2 Step -1If ②Thenf = a(j): a(j) = a(j - 1): a(j - 1) = ft = b(j): b(j) = b(j - 1): b(j - 1) = tEnd IfNext jNext iFor i = 1 To 3List1.AddItem "第" + Str(i) + "名" + a(i) + " 奖牌数" + Str(b(i))Next iEnd Sub【答案】(1)45(1分)(2)b(j - 1)> b(j)(1分)【解析】13.下列VB程序的功能是:程序运行时,单击命令按钮Commandl后,产生10个[1,999]范围内互不相同的随机整数,依次显示在列表框List1中,然后将它们按从小到大的顺序排序,排序结果显示在列表框List2中。
数组a用于存储产生的10个随机整数,函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False。
(1)虚线框内程序段所采用的排序算法名称是。
(填:冒泡排序/选择排序)(2)在程序(1)和(2)划线处,填入适当的语句或表达式,把程序补充完整。
Dim a(1 To 10) As IntegerFunction f(x As Integer) As Boolean ′代码略End FunctionPrivate Sub Commandl_Click()Dim n As Integer ′n用于统计已经产生的随机整数个数Dim i As Integer.j As IntegerDim x As Integer.k As IntegerRandomize ′初始化Rnd函数n=0List1.Clear ′清除列表框中内容List2.ClearDo While n<10x=Int(Rnd*999)+1 ′产生[1,999]范围内的随机整数If Not f(x) Thenn=n+1a(n)=xList1.AddItem Str( (1))End IfLoopFor i=1 To 9 ′进行排序For j=10 To i+1 (2)If a(j)<a(j-1) Thenk=a(j):a(j)=a(j-1):a(j-1)=kEnd IfNext jNext iFor i=1 To 10List2.AddItem Str(a(i))Next iEnd Sub【答案】(1)冒泡排序(2)a(n) Step-1【解析】14.某协会进行钓鱼比赛,最后有十人进入决赛,录入员编制了如下Visual Basic程序,功能是根据成绩进行排序,程序中数组a保存所有参赛者的成绩,数组b保存此成绩对应的姓名,第i位参赛者的成绩保存在a(i)中,姓名保存在b(i)中。
程序界面如图所示,左边列表框List1中显示原始数据(成绩和相应的姓名),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示在列表框List2中。
解决此问题的算法流程图如图所示,排序部分的程序段如下:Dim a (1 To 10) As SingleDim b (1 To 10) As StringPrivate Sub Command1_Click()Dim i As Integer,j As Integer,k As Integer,x As Single,y As StringFor i=1 To 9k=iFor j=i+1 To 10If ①________ Then k=jNext jIf k<>i Thenx=a(i):a(i)=a(k):②________y=b(i):b(i)=b(k):b(k)=yEnd IfNext iFor i=i To 10List2.AddItem Str(a(i))+“”+b(i)Next iEnd SubPrivate Sub Form_Load()’此过程用于对数组a和数组b进行初始赋值,代码略End Sub(1)解决此问题的算法是________。