试题详情
操作题 适中0.65 引用1 组卷28
为促进学生学习中互帮互助,每次考后章老师都会按成绩重新编排机房上课位置,编排要求如下:
(1) 按分数从高到低排序。若分数相同,则按学号进行升序排序。
(2) 以班级为单位,排出从 1 号开始的机房座位表。 章老师编写了一个位置编排功能的 VB 程序,运行界面如下图所示。
在文本框 Text1 中输入班级名称,单击“读数据库”按钮 Command1 后,从数据库读取数 据并显示在列表框 List1 中;单击“编排”按钮 Command2,在列表框 List2 中输出学号、姓名、 成绩和位置信息。

实现以上功能的 VB 程序如下,请回答下列问题:
(1)分析程序,可知数据库的文件名为_____
(2)请在划线处填入合适的代码。
Dim n   As Integer
Dim xh(1 To 40) As Integer, xm(1 To 40) As String, cj(1 To 40) As   Integer
Private Sub Command1_Click()
       '本过程在文本框 Text1 中输入班级名称,从数据库中读取指定班级的学号、姓名和成绩

       '数据分别存储在数组 xh,xm 和 cj 中
       Dim conn As New ADODB.Connection
       conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="+ App.Path + "\js.accdb"
       conn.Open
       Dim rs As New ADODB.Recordset rs.ActiveConnection = conn
       rs.Open "select * from 技术"
       '本过程的其他语句略
End Sub
Private Sub Command2_Click()
       Dim wz(1 To 40) As Integer
       Dim i As Integer, j   As Integer
       List2.AddItem "学号"   & "       "   & "姓 名"   & "       "   & "成绩"   & "       "   & "位置"
       For i = 1 To n
             ______
       Next i
       For i = 1 To n
             For j = 1 To n
                    If          ______Then
                           wz(i) = wz(i) + 1
                    End If
             Next j
             List2.AddItem adj(Str(xh(i))) + adj(xm(i)) + adj(Str(cj(i))) + adj(Str(wz(i)))
       Next i
End Sub
Function adj(c As String) As String '固定输出 5 个字符长度
       Dim i As Integer
       ______
       For i = 1 To 5   - Len(c)
             adj = adj + "   "
       Next i
End Function
2020·浙江·一模
知识点:排序算法及程序实现 答案解析 【答案】很抱歉,登录后才可免费查看答案和解析!
类题推荐
小张用VB模拟实现了一个打地鼠游戏的计分程序。游戏规则如下:总共有10个地鼠洞,每秒地鼠选择一个洞探出脑袋,如果当前的锤子在该洞口,则打中地鼠,否则没有打中。游戏时间总共t秒(t<=10,Text1中输入),锤子的起始位置在b(1)(Text2中输入)。现已知每个时刻地鼠探脑袋的位置,根据锤子移动的路线,计算得出最多的得分,并输出到 Labe1l。
锤子移动规则:锤子每秒必须往左或往右移动一步(不可在当前位置停留),如果锤子已经在最左边了,只能往右移动;反之,只能往左移动。
计分方式:如果打中一个地鼠,计1分;如果连续打中地鼠,分数翻倍,即连续打中两个,分数为1+2;连续打中三个,分数为1+2+4;连续打中四个,分数为1+2+4+8……
算法思路:

①随机产生在第i秒时,地鼠探出脑袋的洞口为j。

若每个时刻地鼠探脑袋的洞口如图a所示,以10个洞口为横坐标n,游戏时间t(假设t=10)为纵坐标,建立一个矩阵a。当前时间出现地鼠的洞口标记为1,其余默认为0。
②模拟第i秒敲击洞口的位置。
1)若输入游戏过程如图b所示,从5号洞口出发b(1)=5,当时间为i=1时,可到达的洞口有2种:j=2时b(2)=6,j=1时b(1)=4,即得矩阵a的坐标位置i和b(j);
2)同理当i=2时,可到达的洞口有4种:j=4时b(4)=7,=3时b(3)=5,=2时b(2)=5,j=1时b(1)=3.i=1敲击洞口位置为6或4;i=2敲击洞口位置6→7,6-5或4→5,4→3;
3)将t秒内可经过的2t种不同路径敲击的矩阵位置的值存放到数组p中,如图b所示得到其中某一条路径p(j)=0101100010,根据p(j)计算得分,找出最值max并输出。
(1)如果游戏时间为10秒,每秒地鼠出现的洞口序号依次为[9,9,9,10,10,10,10,9,9,9],当锤子的起始位置在第6个洞口时,最多能得___________分。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
       Const n = 10
       Dim a(1 To n * n) As Integer, b(1 To 2 ^ n) As Integer
       Dim p(1 To 2 ^ n) As String, s1 As String
       Dim i As Integer, j As Integer, k As Integer, max As Integer
       Dim t As Integer, s As Integer, f As Integer
       Randomize
       t = Val(Text1.Text)
       For i = 1 To t                                         '第i秒时,地鼠探出脑袋的洞口为j
             j = Int(Rnd * n + 1)
             ____________
             List1.AddItem Str(i) & Str(j)
       Next i
       s1 = ""
       For i = 1 To t * n
             s1 = s1 + Str(a(i))
             If i Mod n = 0 Then List2.AddItem s1: s1 = ""
       Next i
       b(1) = Val(Text2.Text)
       For i = 1 To n                                        '计算锤子在a矩阵移动的路径,并存放在p数组
             k = 1                                                'k为正则向右移动锤子,k为负则向左移动锤子
             For j = 2 ^ i To 1 Step -1
                    b(j) = b((j + 1) \ 2) + k
                    If b(j) < 1 Or b(j) > n Then b(j) = b(j) - 2 * k
                    p(j) = p((j + 1) \ 2) + CStr(_______)   'CStr功能类似Str
                    k = -k
             Next j
       Next i
       max = 0
       For i = 1 To 2 ^ n
             f = 0: s = 0: j = 1
             Do While j <= Len(p(i))
                    If Val(Mid(p(i), j, 1)) > 0 Then
                           ____________
                    Else
                           s = s + f: f = 0
                    End If
                    j = j + 1
             Loop
             If f > 0 Then s = s + f
             If max < s Then max = s
       Next i
       Label1.Caption = "最多能得" + Str(max) + "分"
End Sub

组卷网是一个信息分享及获取的平台,不能确保所有知识产权权属清晰,如您发现相关试题侵犯您的合法权益,请联系组卷网