题库 高中信息

题干

数组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

程序中①处改为________________________________________。
程序中②处改为________________________________________。
上一题 下一题 0.99难度 填空题 更新时间:2019-05-27 09:49:31

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

同类题1

数组 a 存储降序排列的 m 个数据,数组 b 中存储的是升序排列的 n 个数据,且两个数组中存储的数据为区间1,20范围内的不重复的随机整数。现将两个数组的数据合并到 c 数组中,使 c 数组的数据为左右交替上升,如下表所示:

当窗体 Form1 加载时,自动产生 a、b 数组的数据,并分别显示在列表框 List1 与 List2
中,单击合并按钮 Command1 后,在 c 数组中保存按规则合并后的 a、b 数组的数据,并显示在列表框 List3 中。程序截图如下所示:

实现该功能的 VB 程序如下:
Const m = 5
Const n = 6
Dim a(1 To m) As Integer
Dim b(1 To n) As Integer
Dim c(1 To m + n) As Integer
‘窗体加载时,生成数组 a、b 中的数据,并按要求排序后显示在列表框中,代码略
Private Sub Command1_Click()
Dim pa As Integer, pb As Integer, pc As Integer, s As Integer, flag As Boolean
pa = m: pb = 1: pc = 1
flag = True
Do While ____________________  
If a(pa) < b(pb) Then

s = a(pa)

pa = pa - 1

Else

s = b(pb)

pb = pb + 1

End If
c(pc) = s
If flag Then

pc = m + n - pc + 1

Else

pc =  

End If
__________________________
Loop
‘处理 a、b 数组中剩余数据,并在列表框 List3 中输出数组 c,代码略
End Sub
(1)窗体加载的事件处理过程名为__________。(填字母:
A.Form1_Click /B.Form_Click /
C.Form1_Load /D.Form_load)
(2)加框处代码有错,请改正。 __________
(3)在划线处填入合适的代码。

同类题4

小胡收集了2018届高三学生高考成绩及相关的选科情况,存入数据库中,部分界面截图如图所示:

程序功能如下:

在窗体加载时,从数据库中读取学生总数N;读取N名学生的信息存储在相关数组中。N名学生的学号依次存储在数组xh(1)~xh(n) 中;学号为i的学生的总成绩存储在数组 zf(i)中,课程选修信息存储在xk(i)中;

点击“统计”按钮后,程序筛选出所有技术考生的相关信息,并计算该学生在所有技术考生中的排名(总分相同的,排名也相同)。

实现上述功能的VB程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Dim xh(1 To 1000) As Integer ’数据库中读取时第i为学生的学号存储在xh(i)
Dim zf(1 To 1000) As Integer ’学号为i的考生的总分存储在zf(i)
Dim xk(1 To 1000) As String ’学号为i的考生的选考课程信息存储在zf(i)
’ 数据格式 **-**-**  (如:物理-化学-生物)
Dim jspm(1 To 1000) As Integer   ’学号为i的技术选考生的总分在所有技术考生中的
’排名存储在数组jspm(i)
Private Sub Form_Load()
Dim conn   As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim  constr  as string , sql as string
Constr = "Provider=Microsoft.ace.OLEDB.12.0;"
Constr = constr &  "Data Source=" & App.Path + "\data\stu2018.accdb"
conn.ConnectionString = constr
conn.open( )
rs.Open  "select * from 2018cj  "  ,  conn
i=0
Do While Not rs.EOF
i=i+1
xh(i)=rs(“xuehao”)
zf(rs(“xuehao”)) = rs(“fenshu”)
xk(rs(“xuehao”))=rs(“xkinfo”)
【小题1】
Loop
N=i
End Sub
’判断选科信息info中是否包含科目km 
Function YouKM(ByVal km As String, ByVal Info As String) As Boolean
Dim km1 As String
YouKM = False
For i = 1 To 3
If 【小题2】 Then
YouKM = True
Exit For
End If
Next i
End Function
'为技术学科考试求名次
Private Sub Command1_Click()

Dim jsinfo(1 To 1000) As Integer    ’依次存储每个技术选考生的学号和成绩

Dim k as integer    ’存储找到的技术选考学生的数量

'将所有选考“技术”的考生学号、成绩依次存入数组jsinfo中

    k = 0
For i = 1 To n
If    【小题3】 Then
k = k + 1
jsinfo(2 * k - 1) = xh(i)
jsinfo(2 * k) = cj(xh(i))
End If
Next i
'学号为i的学生在技术选考生中的排名,存入jspm(i)中
For i = 1 To k
mc = 0
For j = 1 To k
If jsinfo (2 * j) > jsinfo (2 * i) Then mc = mc + 1
Next j
jspm(jsinfo(2*i-1))= 【小题4】

Next i

   '输出所有技术考试的学号、成绩、技术排名信息 代码略
End Sub