题库 高中信息

题干

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

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

同类题4

数组a中存储了n个学生的学号和成绩数据,其中奇数位置存储学号信息,偶数位置存储成绩信息,数组存储结构如下表所示:
1
2
3
4
5
6
……
2n-1
2n
学号
成绩
学号
成绩
学号
成绩
……
学号
成绩
第1个学生信息
第2个学生信息
第3个学生信息
……
第n个学生信息
 
小迪同学使用选择排序思想对上述n个同学按成绩进行降序排序(成绩相同的按学号升序排列),并依据成绩插入各位同学的名次信息,处理结束的数组a存储结构如下表所示:
1
2
3
4
5
6
7
8
9
……
3n-2
3n-1
3n
名次
学号
成绩
名次
学号
成绩
名次
学号
成绩
……
名次
学号
成绩
第1个学生信息
第2个学生信息
第3个学生信息
……
第n个学生信息
 
小迪同学使用VB编写了成绩处理程序,程序运行界面如下图所示:

实现上述功能的VB程序如下,请回答下列问题。
Const n=20
Dim a(1 To 3* n)As Integer
Private Sub Command1_ Click()

'读取数据,存储在数组a中,并显示于列表框List1中

'代码略

End Sub
Private Sub Command2_ Click()
'①改错
k=i
For j=l To i-l
If a(2*j)<a(2*k)Or ② Then
k=j
End if

Next j

A(3*i=a(2*k)
A(3*i-1)=a(2*k-1)
③
A(2*k-1)=a(2*i-1)
Next i
List2. AddItem"第1名:学号+CStr(a(2))+",分数"+str(a(3))
A(1)=1
mc=1
For j=2 To n

If     ④ Then mc=i

List2. AddItem"第"+Str(mc)+"名:学号"+CStr(a(3*i-1))+",分数"十Str(a(3*i))a(3*i-2)=mc

Next i

End sub
(1)已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“第15题程序”,则可在_____________(单选,填字母)事件过程中添加代码: Form1. Caption=“第15题程序”。
A.Form_ Click()B.Form_ Load()C.Form1_ Click()D.Forml_ Load()
(2)程序加框处的For循环语句有错,请改正。
(3)请将程序②③④划线处代码补充完整。