2023-2024学年高一上学期选修一第三单元第四节 模拟与问题解决

2024-06-28
| 15页
| 31人阅读
| 0人下载

内容正文:

2023-2024学年高一上学期选修一第三单元第四节 模拟与问题解决 一、选择题 1.数组有6个元素,有以下VB程序段: For i = 1 To 3   For j = i To 5     If a(j) > a(j + 1) Then       t = a(j): a(j) = a(j+1): a(j+1)=t     End If   Next j   List1.AddItem Str(a(i)) Next i a(1)到 a(6)的初始值依次为“ 8 6 5 7 9 3 ”,经过该程序段“加工”后,列表框List1中显示的是(  ) A.8 7 6 B.8 7 9 C.6 5 3 D.5 6 7 2.对某数组a中的n个元素随机赋0、1或2这三种值之,现按如下算法对数组a从小到大升序排序,设置两个变量:Left记录第一个1的位置,其左侧全是0,Right记录第一个2的前一位置,其右侧全是2。使用i从头到尾查询一遍,根据a(i)的值决定其是否与a(Left)或a(Right)交换,直至i与 Right相遇。 left=1:right =n:i=1 Do While i <=right If a(i)=0 Then tmp= a(left):a(left)=a(i):a(i)= tmp left=left+1 i=i+1 ElseIf a(i)= 1 Then i=i+1 Else ① End If Loop 要实现上述排序算法思想,则横线处代码应该是(    )。 A.tmp=a(i):a(i)=a(right):a(right)=tmp:right=right -1 B.tmp=a(i):a(i)=a(right):a(right)=tmp:right=right-1:i=i+1 C.i=i-1 D.right=right-1:i=1-1 3.某对分查找算法的VB程序段如下: flag=False i=0:j=7:c=0 Do While<= j And flag=False m=Fix((i+j)/2+0.5) If Key=a(m) Then flag=True If Key< a(m) Then j=m-1 Else i=m+1 c=c+1 Loop 数组元素a(0)到a(7)的值依次为“1,3,30,46,6S,72,84,90”,key的值为85。若该程序段执行后,以下说法中正确的是(    ) A.i=6 B.j=7 C.m=7 D.c=4 4.数组d中存放了一组数据如表所示,采用顺序查找的方式查找数据7,以下叙述正确的是(  ) d[1] d[2] d[3] d[4] d[5] d[6] d[7] d[8] d[9] d[10] 12 33 15 -7 11 33 17 19 43 29 A.因为存在相同的数组元素值,所以无法采用顺序查找 B.若查找的数组元素值不存在,则查找无法进行 C.因为数据是无序的,所以无法采用顺序查找 D.查找过程中,最多只需要比较10次 5.编写VB程序生成一个n行n列的数字矩阵(数组元素为1-99之间的随机整数),显示在列表框Listl中,并在列表框List2中输出每行的最大值及其所在的位置。 Const n=4 Dim a(1 To n * n) As Integer, i As Integer,j As Integer,w As Integer Dim s As String,pos As Integer,Max As Integer For i=1 To n Max=0:s="" For j=1 To n pos= ① a(pos)=Int(1+Rnd * 99) s=s+Str(a((pos)) If ② Then Max=a(pos) w=j End If Next j Listl. AddItem s List2. AddItem i &amp;"行"&amp; ③ &amp;"列最大:"&amp; Max Next i 划线处的代码应为(    ) A.①(i-1)* n+j    ②a(pos)>Max    ③w B.①I * n+j    ②a(pos)>Max    ③j C.①(i-1)* n+j    ②a(j)>Max    ③w D.①i * n+j    ②a(j)>Max    ③j 6.有如下程序段: For i = 1 To 2 For j = 5 To i + 1 Step -1 If a(j) > a(i) Then t = a(j): a(j) = a(i): a(i) = t End If Next j Next i 数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为(    ) A.77,45,33,16,24 B.77,33,45,16, 24 C.77,24,45,16,33 D.77,45,33,24,16 7.有如下VB程序段: i=1:j=8:n=0 Do While i<=j n=n+1 m=(i+j)\2 If key<a(m)Then j=m-1 Else i=m+1 Loop 数组元素a(1)到a(8)的值依次为“22,32,39,48,71,82,96,106”。若该程序段运行结束后,n的值为3,则key的值不可能是(    ) A.110 B.82 C.39 D.10 8.对n个元素进行排序,用冒泡法进行排序时,需比较的次数共为(  ) A.n*(n-1) B.n*(n+1) C.n*(n-1)/2 D.n*(n+1)/2 9.有如下程序段: Private Sub Command1_Click() Dim a(1 To 7) As Integer a(1) = 1:a(2) = 4: a(3) = 7: a(4) = 3: a(5) = 5: a(6) = 6: a(7) = 1 s = "": i = 6: b = 1 Do While i > b If a(i) = a(i - 1) + a(i + 1) Then For j = i To b + 1 Step -1 a(j) = a(j - 1) Next j b = b + 1: i = i + 1 End If i = i - 1 Loop For i = b To 7 s = s + Str(a(i)) Next i Text1.Text = s End Sub 运行程序后,文本框中显示的结果为(    ) A.1 3 5 1 B.1 4 3 5 1 C.1 4 7 3 5 1 D.1 4 7 5 1 10.有如下VB程序段: i = 1 Do While i <= 5 If i = 1 Or a(i-1)<= a(i) Then i = i+1 Else t = a(i):a(i)= a(i-1):a(i-1)= t i = i-1 End If Loop 数组元素a(0)到a(8)的初始值依次为“0,4,7,3,5,1,8,6,2”,执行该程序段后,数组元素a(1)到a(8)的值分别是(    ) A.1  3  4  5  7  8  6  2 B.7  5  4  3 1  8  6  2 C.4  7  3  1  2  5  6  8 D.4  7  3  8  6  5  2  1 11.若采用冒泡排序算法对数据70,53,57,28,30,77,1进行排序,排序过程如表所示。 原始数据 70 53 57 28 30 77 1 第一遍加工后 1 70 53 57 28 30 77 第二遍加工后          第三遍加工后 1 28 30 70 53 57 77 … … … … … … … … 则第二遍加工后的结果是(  ) A.1,28,30,70,53,57,77 B.1,28,70,53,57,30,77 C.1,28,30,53,57,70,77 D.1,28,30,53,70,57,77 12.【加试题】有如下程序段: n = 12 f = Val(Text1.Text) left = 1 right = n Do While left < right  middle = (left + right) \ 2  If f <= a(middle) Then   right = middle  Else   left = middle + 1  End If Loop A数组元素A(1) 到A(12) 中的数分别是1 4 6 10 11 16 17 18 19 20 21 55,在文本框text1 中输入值7 赋给变量f,经过该程序段“加工”后,right 的值为(  ) A.4 B.6 C.9 D.2 13.有如下VB 程序段: n = 6 For i = 2 To 4 k = a(n - i + 1) j = n - i + 2 Do While a(j) < k a(j - 1) = a(j) j = j + 1 If j = n + 1 Then Exit Do Loop a(j - 1) = k Next i 数组元素a(1)到a(6)的值分别为23,6,37,45,11,52,程序运行后,a(1)到a(6)的值依次为(    ) A.6, 23, 37, 45, 11, 52 B.23, 6, 11, 37, 45, 52 C.6, 11, 23, 37, 45, 52 D.23, 6, 37, 11, 45, 52 14.有如下VB程序段: Dim a(1 To 5) As Integer, i As Integer, j As Integer, key As Integer a(1) = 8: a(2) = 13: a(3) = 25: a(4) = 98: a(5) = 56 For i = 4 To 5     j = i: Key = a(j)     Do While a(j - 1) > Key And j > 1          a(j) = a(j - 1)          j = j - 1     Loop     a(j) = Key Next i 执行该程序段后,数组元素a(1)~a(5)的值是(    ) A.98  56  25  13  8 B.8  13  25  56  98 C.56  25  13  8  98 D.98  8  13  25  56 15.有如下程序段: 数组元素a(1)到a(10)的值依次为“66,34,12,59,21,26,18,45,20,16”,经过该程序段“加工”后,数组元素a(1)到a(10)的值依次为(    ) A.66,12,16,34,18,59,21,26,20,45 B.12,16,18,20,21,26,34,45,59,66 C.66,59,45,34,12,26,21,20,18,16 D.12,16,18,66,34,20,59,21,26,45 二、填空题 16.下列程序的功能是在text1中输入的自然数,分解为3个互不相同的质数(三个质数的和等于输入的自然数),并把分解产生的质数按升序顺序显示在左边的列表框中。例如,输入20,那么在列表框中会显示如右图所示结果。其中,上述界面中“开始处理”按钮的名称是“Command1”,程序中函数f(x)的功能是判断x是否为质数,如果是质数则返回值为true,否则返回false。 请在下列程序代码的基础上按照要求设计该程序,完善程序中的划线部分。 Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer Function f(x) As Boolean f = True For i =" 2" To Sqr(x) If x Mod i =" 0" Then ___________ Next i End Function Private Sub Command1_Click() n = ________________ For a1 =" 2" To n For a2 =" a1" To n For a3 =" a2" To n If _________________ And f(a1) And f(a2) And f(a3) Then List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3)) End If Next a3 Next a2 Next a1 End Sub 17.某校学生会选举需要从学校数据库中随机抽取若干名学生作为监票人。该数据库文件名为school.mdb,其中数据表student存储有关学生学号(xuehao)、姓名(xingming)相关信息,括号内的内容为对应字段名。该程序编辑界面如图所示,相关对象名可参考标识图。 当主持人点击按钮“生成抽号”后,下方的标签会显示可抽取的学号姓名,一定时间后显示被抽取作为监票人的学号姓名。 'xxxss:学校学生数,kcq:可抽取 'xhxm:学号姓名,kcq:可抽取 Dim xxxss As Integer Dim xhxm(3000) As String Dim kcq(3000) As Boolean 'cq_Click:启用两个定时器 Private Sub cq_Click() cqxhxm.Enabled = True xskcqxhxm.Enabled = True End Sub Private Sub cz_Click()  '初始化数组kcq,使每个元素数据都处于可显示状态 For i =" 0" To xxxss - 1 kcq(i) = True '① Next i End Sub Private Sub xskcqxhxm_Timer() '若数组kcq第x个元素处于可抽取状态,则显示数组xhxm第x个元素 x =" Int(Rnd" * xxxss) If kcq(x) Then xhxmbq.text = kcq(x) '② End Sub Private Sub Form_Load() '从数据库中提取需要的学号姓名相关数据并初始化数组kcq Randomize xxxss = 0 Dim conn As New ADODB.Connection,rs As New ADODB.Recordset Dim str_conn as String,str_sql As String str_conn = "driver="Microsoft" access driver(*.mdb);DBQ="&amp;app.path&amp;"\school.mdb"; conn.open str_conn str_sql = "select * from students" rs.open str_sql Do While Not rs.eof xxxss =" xxxss" + 1 xhxm(xxxss) = rs.fields("xuehao")&amp;rs.fields("xingming") rs.movenext Loop For i =" 0" To xxxss - 1 kcq(i) = True Next i End Sub Private Sub cqxhxm_Timer()  '决定抽取的学号姓名作为监票人 xskcqxhxm.Enabled = False For i =" 0" To xxxss - 1 If xhxmbq.Caption =" xhxm(i)" Then kcq(i) = False Next i cqxhxm.Enabled = False End Sub 18.编写“提取数字”程序,实现如下功能:在文本框Text1中输入文本信息,点击“提取”按钮Command1,将文本信息中的数字以“,”间隔输出到文本框Text2中。程序运行界面如图所示。 (1)观察界面,程序中未使用到的控件是 (填字母:A. /B. / C. / D.   ) (2)根据题意,请将划线处代码补充完整。 Private Sub Command1_Click()   Dim zf As String, tmp As String Dim 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 = s End Sub (3)当输入的文本信息如图所示,若删除加框代码,则文本框Text2中显示的内容为 。 19.有一Access数据库“school.accdb” 存放在f:\2015mt\vb文件夹中,其中的“student”数据表用来存储学生的基本情况信息,包括学号(num)、姓名(name)、性别(sex)、分数(score),括号内的为对应字段名。下列VB程序用来实现根据学号查询并显示学生信息,运行界面如下图所示。在文本框Text1中输入学生的学号,单击“查询”,在文本框Text2、Text3、Text4中分别显示学生姓名、性别、分数。 Private Sub Command1_Click() Dim adocn As New adodb.Connection Dim adors As New adodb.Recordset Dim str2 As String, str1 As String str1 = "Provider="Microsoft.ACE.OLEDB.12.0;data" source=f:\2015mt\vb\_____________" adocn.Open str1 str2 = "select * from students where num=" + Text1.Text adors.Open str2, adocn, adOpenDynamic, adLockOptimistic If adors.EOF =" True" Then MsgBox "你输入的学号不存在" Else Text2.Text = adors.Fields("name").Value Text3.Text = adors.Fields("sex").Value ______________________________________ End If adors.Close adocn.Close End Sub 三、操作题 20.小李编写了一个成语接龙的VB程序,功能如下:在文本框Text1中输入一个成语,单击“接龙”按钮Command1,在列表框List1中显示接龙的成语。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。 Dim n As Integer, cy(30000) As String Private Sub Form_Load() '从数据库中读入n条成语,并存数组cy中 '代码略 End Sub Private Sub Command1_Click() Dim s As String, i As Integer, j As Integer Dim m As Integer, flag As, Boolean Dim s1 As Siring, s2 As String s=Text1.Text flag=True Do While flag                  '(1) i=1 j=n Do While<= j m= Int((i+j)/2) s2=Mid(cy(m), 1, 1) If s2=s1 Then Exit Do ElseIf s2<s1 Then i=m+1 Else j=m-1 End If Loop If    Then                 '(2) List1.AddItem s+ "— —"+cy(m) s=cy(m) Else List1.AddItem "接不下去了" flag=False End If Loop End Sub 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.C 2.A 3.C 4.D 5.A 6.A 7.A 8.C 9.A 10.A 11.B 12.A 13.B 14.B 15.A 16.(1)f=False(1分) (2)Val(Text1.Text)(1分) (3)a1+a2+a3=n(1分) 17.(1)kcq(i) = True   (2)xhxmbq.Caption = xhxm(x) 18. B zf = Text1.Text tmp = tmp + ch 188,0571, 19.(1)school.accdb(1分) (2)Text4.Text = adors.Fields("score").Value(1分) 20. s1=Mid(s,Len(s), 1) i<=j 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

2023-2024学年高一上学期选修一第三单元第四节  模拟与问题解决
1
2023-2024学年高一上学期选修一第三单元第四节  模拟与问题解决
2
2023-2024学年高一上学期选修一第三单元第四节  模拟与问题解决
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。