VB程序题:自定义类型数组的应用。

VB程序题:自定义类型数组的应用。要求:自定义一个职工数据类型,包含职工号、姓名、工资三项内容。在通用声明段声明一个职工类型的数组,可存放5个职工Dim X(4) As ss, y As ssDim n%Private Sub Form_Load()Picture1.Print " 工号 姓名 工资"Picture1.Print "---------------------------------------------------"Picture2.Print " 工号 姓名 工资"Picture2.Print "---------------------------------------------------"End SubPrivate Sub Command1_Click()If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" ThenMsgBox ("不能为空")Elsen = 0If n > 4 ThenMsgBox ("输入人数超过限定")ElseWith X(n).gh = Text1.Text.xm = Text2.Text.gz = Text3.TextEnd WithText1.Text = ""Text2.Text = ""Text3.Text = ""n = n + 1With X(n - 1)Picture1.Print " " & .gh; " "; .xm; " "; .gzEnd WithEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Dim m%, i%, j%, s%m = UBound(X)For i = 0 To n - 1For j = 0 To n - iIf X(j).gz < X(j + 1).gz Theny = X(j): X(j) = X(j + 1): X(j + 1) = yEnd IfNext jj = iNext iFor s = 0 To nWith X(s)Picture2.Print " " & .gh; " "; .xm; " "; .gzEnd WithNext sEnd Sub为啥会出现这种情况,求大神解答

这道题的完整答案:所需控件:一个text1,一个command1按钮
其属性设置:text1的multiline属性设为true(即可以接受多行)
command1是数组控件(共四个,见上)。
Option Base 1

Dim x() As Integer
Dim i, j, k, p, t, y, z, s As Integer
Dim a, b, c, d, e As Double
Private Sub Command1_Click(Index As Integer)

ReDim Preserve x(21) '重新定义一个有21个元素的一维数组x
k = UBound(x) - 1 '把一维数组x的下标上界减1剩下就是20个元素(学生)了
Randomize '随机数的初始化
Select Case Index

Case 0
Text1 = "随机产生" & Trim(Str(Val(k))) & "个学生的成绩:"
Text1 = Text1 & vbNewLine
For i = 1 To k
x(i) = Int(Rnd * 100)
Text1.Text = Text1.Text & x(i) & " "
Next i
Text1 = Text1 & vbNewLine
Text1 = Text1 & vbNewLine
Case 1
Text1 = Text1 & "20个学生中最高分的是:"
y = x(1) '假设第一学生的成绩最高
For i = 1 To k
If y < x(i) Then '把第一个学生的成绩与其余的19学生两两对比找出比第一个学生的成绩要高的学生
y = x(i) '如果找到要高的就互换
End If
Next i
Text1 = Text1 & Str(Val(y)) & "分"
Text1 = Text1 & vbNewLine

Text1 = Text1 & "20个学生中最低分的是:"
y = x(1) '同样的思维,假设第一个学生的成绩最低
For i = 1 To k
If y > x(i) Then '把第一个学生的成绩与其余的19学生两两对比找出比第一个学生的成绩要低的学生
y = x(i) '如果找到要低的就互换
End If
Next i
Text1 = Text1 & Str(Val(y)) & "分"
Text1 = Text1 & vbNewLine

Text1 = Text1 & "20个学生中的平均分数是:"
j = 0
For i = 1 To k
j = j + x(i) '先求20个学生的总分
Next i
s = j / (k) '总分数除于人数得平均数
Text1 = Text1 & Str(Val(s)) & "分"
Text1 = Text1 & vbNewLine
Text1 = Text1 & vbNewLine
Case 2

For i = 1 To k
y = x(i) '将所有同学们的分数逐一赋给变量y

Select Case y '在所有分数中查找符合条件的分数并进行计算人数
Case 0 To 59
e = e + 1
Case 60 To 69
d = d + 1
Case 70 To 79
c = c + 1
Case 80 To 89
b = b + 1
Case 90 To 100
a = a + 1
End Select
Next i
Text1 = Text1 & "0~59分的人有:"
Text1 = Text1 & Str(Val(e)) & "个人"
Text1 = Text1 & vbNewLine

Text1 = Text1 & "60~69分的人有:"
Text1 = Text1 & Str(Val(d)) & "个人"
Text1 = Text1 & vbNewLine

Text1 = Text1 & "70~79分的人有:"
Text1 = Text1 & Str(Val(c)) & "个人"
Text1 = Text1 & vbNewLine

Text1 = Text1 & "80~89分的人有:"
Text1 = Text1 & Str(Val(b)) & "个人"
Text1 = Text1 & vbNewLine

Text1 = Text1 & "90~100分的人有:"
Text1 = Text1 & Str(Val(a)) & "个人"
Text1 = Text1 & vbNewLine
Text1 = Text1 & vbNewLine
Case 3
For i = 1 To 19
For j = i + 1 To 20
If x(i) < x(j) Then
t = x(i)
x(i) = x(j)
x(j) = t
End If
Next j
Next i
Text1 = Text1 & "成绩由高到低;"
Text1 = Text1 & vbNewLine
For i = 1 To 20
Text1 = Text1 & x(i) & " "
Next i
Text1 = Text1 & vbNewLine
Text1 = Text1 & vbNewLine
End Select
End Sub
等,所对的弦的弦心距相等推论 在同圆或
温馨提示:答案为网友推荐,仅供参考
相似回答