题库 高中信息

题干

有如下VB程序段:
a(1)=91:a(2)=5:a(3)=65:a(4)=8;a(5)=78:a(6)=13:a(7)=29:a(8)=18
For i=2 To 5

tmp= a(i)

L=1

R=i-1

Do While l<= R

M= Fix(L+ R)/2)
If tmp <=a(M) Then R= M-1 E lse L= M+1

Loop

j=i-1

Do While j>=L

a(j+1)=a(j)
j=j-1

Loop

a (L)= tmp

Next i
执行上述代码后,数组a中的元素分别是(   )
A.5 8 13 18 29 65 78 91B.5 8 65 78 91 13 29 18
C.91 78 65 29 18 13 8 5D.91 78 65 8 5 13 29 18
上一题 下一题 0.99难度 选择题 更新时间:2020-03-30 11:11:19

答案(点此获取答案解析)

同类题3

小明编写了一个 VB 程序对成绩数据进行排序。为保证相同分数的同学相对位置(指原数据中的前后关系)不发生改变,他试着采用一种新的排序算法来解决。为便于描述算法的实现过程,假定有如下数组 a:
下标
1
2
3
4
5

5
3
3
2
4
 
第一步:统计数组 a 中每个值 a(i)出现的次数,存入 b(a(i)),统计完成后数组 b 的情况如下:
下标
1
2
3
4
5

0
1
2
1
1
 
第二步:从前向后,依次使数组 b 中的每个值等于其与前一项之和,这样数组 b(a(i))就代表了数组 a 中小于或等于 a(i)的元素个数,完成第二步后数组 b 如下:
下标
1
2
3
4
5

0
1
3
4
5
 
第三步:从后往前,依次将数组 a 中元素填入数组 c 中,将数组元素 a(i)放在数组 c 的第 b(a(i))项,如元素 a(1)=5,应该放在数组 c 的 b(5)位(即 c(5) )。每放一个元素就将 b(a(i))递减;完成第三步后,数组 c 如下所示,已经完成升序排序,且相对位置不变,即原来 a (2)的值 3 仍然在 a(3)的值 3 前面。
下标
1
2
3
4
5

2
3
3
4
5
 
程序运行界面如右图所示:

实现上述功能的 VB 程序如下,回答以下问题:
(1) 从代码中可以得知,用于连接数据库的对象名是:________
(2) 请在划线处填上相应代码。
Dim a(1 To 50) As Integer '存放学生的成绩
Dim sname(1 To 50) As String '存放学生姓名
Dim n As Integer
Private Sub Command1_Click
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
App.Path + "\stu.accdb"
conn.Open
strSQL = "SELECT * From stucj"
Set rs.ActiveConnection = conn
rs.Open strSQL
n = 0
List1.AddItem "姓 名" & " " & "成绩"
Do While Not rs.EOF
n = n + 1
a(n) = rs.Fields("cj")
sname(n) = rs.Fields("xm")
List1.AddItem sname(n) & " " & Str(a(n))
①_________
Loop
rs.Close
conn.Close
End Sub
Private Sub Command2_Click
Dim i As Integer, k As Integer
Dim b(0 To 100) As Integer
Dim c(1 To 50) As Integer, c1(1 To 50) As String 'c 和 c1 作为临时数组
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next
For i = 1 To 100
b(i) = ②__________
Next
For i = n To 1 Step -1
c(b(a(i))) = a(i)
c1(b(a(i))) = sname(i)
③_________________
Next
For i = 1 To n '把临时数组 c 和 c1 中的数据放入 a 和 sname 数组
a(i) = c(i)
sname(i) = c1(i)
Next
List2.AddItem "姓 名" & " " & "成绩"
For i = 1 To n
List2.AddItem sname(i) & " " & Str(a(i))

Next

End Sub

同类题5

数组nam()、sex()、math()、su()分别存放学生的姓名、性别、数学和总分成绩,现要求编写一个程序使得数据按照男生“总分”的降序和女生“总分”的升序排列,其中男生在前女生在后,程序界面如下图所示:

实现该功能的VB程序如下,但加框处代码有错,请改正。

Dim nam(100) As String '存放学生姓名

Dim sex(100) As String '存放学生性别

Dim math(100) As Long '存放学生数学成绩

Dim su(100) As Long '存放学生总分成绩

Dim k As Integer 'k变量用来存学生人数

Private Sub Form_Load()

‘将数据库中的数据分别存储在相应的变量中并在列表框中显示出来

‘代码略

End Sub

Private Sub Command1_Click()

Dim mmax As Integer, gmax As Integer, flagm As Boolean, flagg As Boolean

i = 1: flagm = True: flagg = True

Do While i <= k And flagm = True ①   

    mmax = 0: gmax = 0

    flagm = False: flagg = False

  For j = i To k - i + 1

    If sex(j) = "男" And su(j) > su(mmax) Then mmax = j

    If sex(j) = "女" And su(j) > su(gmax) Then gmax = j

  Next j

   If mmax <> 0 Then

flagm = True

t = nam(mmax): nam(mmax) = nam(i): nam(i) = t

t = sex(mmax): sex(mmax) = sex(i): sex(i) = t

t = math(mmax): math(mmax) = math(i): math(i) = t

t = su(mmax): su(mmax) = su(i): su(i) = t

   End If

   If gmax <> 0 Then

flagg = True

If j = mmax Then    ②   

gmax = mmax

t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

t = math(gmax): math(gmax) = math(i): math(i) = t

t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

Else

t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

t = math(gmax): math(gmax) = math(k - i + 1): math(k - i + 1) = t

t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

End If

   End If

i = i + 1

Loop

For i = 1 To k

List2.AddItem nam(i) + "    " + sex(i) + "    " + Str(math(i)) + "    " + Str(su(i))

Next i

End Sub

程序中①处改为________________________________________。
程序中②处改为________________________________________。