3.3排序和查找同步练习沪科版信息技术选修1
展开
这是一份高中信息技术教科版 (2019)选修4 人工智能初步本册综合同步训练题,共15页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。
3.3排序和查找同步练习沪科版信息技术选修1学校:___________姓名:___________班级:___________考号:___________ 一、选择题1.有如下VB程序段:key = Val(Text1.Text)i = 1: j = 10Do While i <= j m = (i + j) \ 2 If a(m) < key Then i = m + 1 Else j = m - 1Loop数组元素a(1)到a(10)存放着非降序排列的数字,执行上述程序段后,下列说法错误的是( )A.a(i)可能大于key B.a(i + 1)可能等于keyC.a(j - 1)可能等于key D.i可能等于112.采用选择排序算法对某数据序列进行排序,经过第一轮排序后的结果是“2,8,3,7,5,6,9”,那么原数据序列不可能是( )A.3,8,2,7,5,6,9 B.5,8,3,7,2,6,9C.8,3,2,7,5,6,9 D.2,8,9,7,5,6,33.已知有这样一种对冒泡排序的优化方法:在每一遍“加工”过程中,记录在这遍“加工”中是否进行过数据交换。若在一遍“加工”过程中没有进行过数据交换,则数据已经有序,可以直接退出循环结束排序。则下列说法错误的是 ( )A.对有n个数据的数组进行优化后的冒泡排序,最小比较次数为n-1。B.对有n个数据的数组进行冒泡排序,无论是否优化,最大比较次数相同。C.对冒泡排序算法进行优化,能够较大提高其效率,符合算法设计的一般原则。D.若待排序数组中的数据依次为23,17,46,58,34,11,对其使用优化后的冒泡排序进行升序排序,比较次数为9。4.有如下程序段:For i = 1 To 2 For j = 1 To 6 – i If a(j) > a(j + 1) And j Mod 3 <> 0 Then tmp = a(j): a(j) = a(j + 1): a(j + 1) = tmp End If Next jNext i则程序运行后,数组a(1)~a(6)的值可能为( )A.3、4、7、2、5、6 B.3、4、5、6、2、7C.2、3、4、5、7、6 D.5、4、3、2、6、75.有如下VB程序段:key=Val(Text1.Text)i=1:j=9Do While i<j m=(i+j)\2IfTheni=m+1 Else End If Loop Label1. Caption=Str(i)已知数组a存储一组升序数“2,5,9,11,13,15,18,23”。要查找第一个大于key的元素的下标并输出,则下列选项中正确的是( )A.①a(m)<=key ②j=m B.①a(m)<key ②j=m-1C.①a(m)<=key ②j=m-1 D.①a(m)<key ②j=m6.采用冒泡排序算法对某数据序列进行排序,经过第一轮排序后的结果是“2,8,3,9,5,6,7”,那么原数据序列不可能的是( )A.8,3,9,5,2,7,6 B.8,3,9,2,6,5,7C.8,2,9,3,5,7,6 D.8,3,2,9,6,5,77.采用选择排序算法对数据序列“10,7,12,5,6,3”进行排序,第一轮排序后的结果为“12,7,10,5,6,3”,则整个序列完成排序的比较次数和交换次数分别是( )A.15,6 B.11,5 C.15,3 D.11,48.下列 VB 程序段的功能是将数组元素 a(1)到a(n)进行排序:For i= n To 2 step -1For j = If a(j) > a(j + 1) Thent = a(j):a(j)=a(j + 1):a(j + 1)=tEnd IfNext jNext i方框中的代码会是以下四句中的某一句:① 1 To i -1 ② n–1 To i Step -1③ 1 To n - i ④ n–1 To n - i+1 Step-1正确的选项是( )A.①或② B.①或④ C.③或④ D.②或③9.某VB 程序段如下: i = 1: s = "" Do While i <= 3 k = i : j = i + 1 Do While j <= 8 If a(j) < a(k) Then k = j j = j + 1 Loop If i <> k Then t = a(i): a(i) = a(k): a(k) = t n = n + 1 End If s = s + Str(a(i)) : i = i + 1 Loop Label1.Caption = Str(n) + ":" + s 数组a(1)到a(8)依次为:16,19,8,20,4,12,6,15,程序运行后,标签中显示的值为( )A.2:4 6 8 B.2:8 6 4 C.3:4 6 8 D.3:8 6 410.以下VB程序利用选择排序思想对数组a进行升序排序。For i = 1 To n \ 2 iMax = i: iMin = i For j = i + 1 To n - i + 1 If a(j) > a(iMax) Then iMax = j If a(j) < a(iMin) Then iMin = j Next j If iMax = i Then Else End IfNext i上述程序段中方框处可选语句为:①temp = a(i): a(i) = a(iMin): a(iMin) = temp②temp = a(iMin): a(iMin) = a(n - i + 1): a(n - i + 1) = temp③temp = a(iMax): a(iMax) = a(n - i + 1): a(n - i + 1) = temp则(1)(2)(3)处的语句依次为( )A.①②③ B.①③② C.②①③ D.③②① 二、填空题11.小明基于选择排序算法编写了一个VB程序,功能如下:某班有50个学生,从中选择10个身高最高的同学,要求被选的任何两个人不能身高一样(所给的数据保证能选10个)。实现上述功能的VB程序如下,但加框处代码有错,请改正。Const n = 50Dim d(0 To n) As single , name(1 to n) as string'读入50个学生的身高,依次存入d(1)…d(50), 最高身高小于2,姓名存入name(1)…name(50)'代码略Private Sub Command1_Click()Dim i As Integer, j As Integer, temp As single, k As Integer,r as stringd(0) = 2For i = 1 To 10 For j = i To n If d(j) < d(i - 1) Then If Then k = j End If End If Next j If k <> i Then temp = d(k): d(k) = d(i): d(i) = temp r=name(k) : name(k)=name(i) : name(i)=r End IfNext iFor i = 1 To 10 ‘输出被选的10个人的名字和身高。 List2.AddItem name(i) & d(i)Next iEnd Sub12.小佳编写了一个统计每个单词出现次数的程序,单词中字母不区分大小写。程序功能如下:程序运行时在文本框 Text1 中输入一段英文文章,单击“统计”按钮 Command1,程序统计每个单词出现的次数,结果输出在列表框 List1 中,按出现次数由多到少显示,当出现次数一样时,按字母顺序从小到大排列。程序运行界面如图所示。(1)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。①处代码为 __________,②处代码为 ______________,③处代码为 ___________________。(2)程序中加框处代码有错,请改正。应改为______________________________Private Sub Command1_Click()Dim dict(1 To 10000) As String ‘存储自建单词字典Dim n(1 To 10000) As Integer ‘存储单词出现次数Dim w As String, a As String, ch As String, x As String, y As IntegerDim i As Integer, b As Integer, k As Integer, d As Integer, j As Integera = Text1.Text: k = 1For i = 1 To 10000n(i) = 0Next ib = 1For i = 1 To Len(a)ch = Mid(a, i, 1)If Not (ch >= "A" And ch <= "Z" Or ch >= "a" And ch <= "z") ThenIf i > b Thenw = ‘取出单词,转为小写,存入 w 中d = 1Do While w <> dict(d) And d < kd = d + 1LoopIf d = k Thendict(k) = w: n(k) = 1: k = k + 1Elsen(d) = ① End IfEnd Ifb = i + 1End IfNext iFor i = 1 To k - 2For j = k - 1 To i + 1 Step -1If n(j) > n(j - 1) Or ( ② ) Thenx = dict(j): dict(j) = dict(j - 1): dict(j - 1) = xy = n(j): n(j) = n(j - 1): n(j - 1) = yEnd IfNext jNext iFor i = 1 To k - 1List1.AddItem dict(i) & " " & n(i)Next iEnd SubFunction LC(s As String) As String ‘单词中字母转为小写Dim i As Integer, c As StringFor i = 1 To Len(s)c = Mid(s, i, 1)If c >= "A" And c <= "Z" Then c = Chr(Asc(c) + 32) ③ Next iEnd Function13.某书城五种畅销图书的市场价格(单位:元)存放在数组d中,如下表所示。现对这些数据进行升序排列,若采用冒泡排序算法自下而上进行比较和交换,那么在第一遍加工后,d[2]的值是______ 。d[1]26d[2]32d[3]20d[4]29d[5]36 14.n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相信两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2 中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如下图所示, 实现上述功能的VB代码如下:Dim a(1 To 8) As IntegerDim n As IntegerPrivate Sub Form_Load()'n=8,排序前数据存储在数组a中,并在列表框Listl中显示'代码略End SubPrivate Sub Command1_Click()Dim flag As Boolean i = 1flag = TrueDo While '改错 flag = False For j = n To i + 1 Step -1 If a(j) < a(j - 1) Then k = a(j): a(j) = a(j - 1): a(j - 1) = k flag = True End If Next j i = i + 1LoopLabel3.Caption = "排序过程的加工遍数为" + '填空For i = 1 To n List2.AddItem Str(a(i))Next iEnd Sub(1)代码“Private Sub Command1_Click()”中的Click是___________。(单选,填字母:A.对象名/B.属性名/C.事件名)(2)程序代码中,Do While语句加框处有错,请改正。__________________(3)程序代码中,将Label3.Caption赋值语句补充完整。_________________(4)程序代码中,flag值为___________表示某一遍加工中发生过交换。15.编写“提取数字”程序,实现如下功能:在文本框Text1中输入文本信息,点击“提取”按钮Command1,将文本信息中的数字以“,”间隔输出到文本框Text2中。程序运行界面如图所示。(1)观察界面,程序中未使用到的控件是_____(填字母:A. /B. / C. / D. )(2)根据题意,请将划线处代码补充完整。Private Sub Command1_Click() Dim zf As String, tmp As StringDim s As String, i As Integer, ch As String __________________ tmp = "" s = "" For i = 1 To Len(zf) ch = Mid(zf, i, 1) If ch >= "0" And ch <= "9" Then _______________ ElseIf tmp <> "" Then s = s + tmp + "," tmp = "" End If Next i Text2.Text = sEnd Sub(3)当输入的文本信息如图所示,若删除加框代码,则文本框Text2中显示的内容为______。 三、操作题16.某地学考等级划分规则如下:将考生原始成绩从高到低划分为A、B+、B、C+、C、D+、D、E共8个等级,各等级人数所占比例分别为3%、7%、16%、24%、24%、16%、7%、3%,如下表所示。等级AB+BC+CD+DE比例3%7%16%24%24%16%7%3% 比如参加技术学考有20000人,小明卷面分90分,排名为1800名,则他在技术学科中的所处比例是9%。A占3%,B+占7%,因此B+所处的累积比例为4%-%10,可知他所处等级为B+。编写一个VB程序计算学生某科目成绩的等级,功能如下:从数据库中读入学生学号、姓名、班级和原始成绩,并在列表框List1中显示,单击“等级划分”按钮Command1,在列表框List2中按原始成绩从高到低显示成绩与等级。等级划分时,先按原始成绩从高到低排序(如原始成绩相同,则按“班级”号从小到大排序),再根据人数比例计算切分位置确定等级。若切分位置有相同分数学生,则归为同一个等级。例如,某等级切分位置是第100位,但第101位学生的原始成绩和第100位相同,则这两名学生的赋分等级相同。程序运行界面如图a所示。图a实现上述功能的VB程序如下,请回答下列问题:(1)下列属于 VB 窗体文件的是_________(单选,填字母)。A.dj.vbp B.dj.frm C.jd.exe D.dj.vbw(2)请在划线处填上合适的代码。(3)程序代码中,加框处有错,请改正。Const max = 1000Dim n As Integer '存放学生人数Dim xh(1 To max) As String '数组xh存放学生的学籍号Dim xm(1 To max) As String '数组xm存放学生的姓名Dim bj(1 To max) As Integer '数组bj存放学生的班级Dim fs(0 To max) As Single '数组fs存储学生的原始分数Dim ffdj(0 To max) As String '数组ffdj存储学生的赋分等级Private Sub Command1_Click()Dim p(1 To 8) As Single,dj(1 To 8) As StringDim i As Integer, j As Integer, pos As Integer, last As IntegerDim st As String, it As Integer, sit As Single‘从数据库中读入学生学号、姓名、班级和原始成绩,分别存入数组 xh、xm、bj 和 fz中,代码略p(1) = 0.03: p(2) = 0.07: p(3) = 0.16: p(4) = 0.24:p(5) = 0.24: p(6) = 0.16: p(7) = 0.07: p(8) = 0.03:dj(1) = "A": dj(2) = "B+": dj(3) = "B": dj(4) = "C+":dj(5) = "C": dj(6) = "D+": dj(7) = "D": dj(8) = "E"For i = 2 To 8 __________ '计算到该等级累计所占比例Next iFor i = 1 To n - 1 For j = 1 To n - iIf Then ________ st = xh(j): xh(j) = xh(j + 1): xh(j + 1) = st st = xm(j): xm(j) = xm(j + 1): xm(j + 1) = st it = bj(j): bj(j) = bj(j + 1): bj(j + 1) = it sit = fs(j): fs(j) = fs(j + 1): fs(j + 1) = sit End If Next jNext ipos = 1For i = 1 To 8 last =________ '人数四舍五入取整 Do While fs(last + 1) = fs(last) last = last + 1 '处理切分位置的同分数学生 Loop Do While______ ffdj(pos) = dj(i) pos = pos + 1 LoopNext iFor i = 1 To n List2.AddItem xh(i) +" "+xm(i) +" "+Str(bj(i)) +" "+ Str(fs(i)) +" "+ ffdj(i)Next iEnd Sub
参考答案:1.C2.C3.D4.A5.A6.D7.C8.B9.A10.A11.(1)k=0 或k=i-1 (2)k=0 or d(k)<d(j) 或 k=i-1 or d(k)<d(j)12. n(d) + 1 n(j) = n(j - 1) And dict(j) < dict(j - 1) LC = LC & c 或 LC = LC + c LC(Mid(a, b, i - b))13.2614. C i<=n-1 and flag=true Str(i-1) true15. B zf = Text1.Text tmp = tmp + ch 188,0571,16. B p(i) = p(i) + p(i - 1) fs(j) < fs(j + 1) Or fs(j) = fs(j + 1) And bj(j) > bj(j + 1) Int(n * p(i) + 0.5) pos <= last
相关试卷
这是一份教科版 (2019)本册综合课时作业,共9页。试卷主要包含了选择题,填空题,判断题,操作题,简答题等内容,欢迎下载使用。
这是一份高中信息技术教科版 (2019)选修4 人工智能初步本册综合同步练习题,共5页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。
这是一份高中信息技术教科版 (2019)选修4 人工智能初步本册综合当堂达标检测题,共9页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。