
Private Sub Command1_Click()
Dim 运动员成绩(1 To 30, 1 To 10) As Double '30人,10个成绩评分.
Dim 运动员平均成绩(1 To 30) As Double, 中介数组(1 To 10) As Double
Dim 最低分 As Double, 最高分 As Double, 合计分数 As Double
'各运动员随机给分.
Text1.Text = "各运动员成绩:" &vbCrLf
Dim 随机值, 上限, 下限
上限 = 10
下限 = 0
随机值 = Int((上限 - 下限 + 1) * Rnd(Second(Now)) + 下限)
For i = 1 To 30
For j = 1 To 10
运动员成绩(i, j) = Int((上限 - 下限 + 1) * Rnd(Second(Now)) + 下限)
Next
Text1.Text = Text1.Text &运动员成绩(i, 1) &" " &运动员成绩(i, 2) &" " &运动睁搜员成绩(i, 3) &" " &运动员成绩(i, 4) &" " &运动员成绩(i, 5) &" " &_
运动员成绩(i, 6) &" " &运动员成绩(i, 7) &" " &运动员成绩(i, 8) &" "悉渣历 &运动员成绩(i, 9) &" " &运动员成绩(i, 10) &vbCrLf
Next
'计算各运动员的成绩
Text1.Text = Text1.Text &"各运动员平均成绩:" &vbCrLf
For i = 1 To 30
合计分数 = 0
For j = 1 To 10
中介数组(j) = 运动员成绩(i, j)
合计分数 = 合计分数 + 中介数组(j)
If j = 10 Then
最低分 = Max(中介数组)
最高分 = Min(中介数组)
运动员平均成绩(i) = (合计分数 - 最低分 - 最高分) / 8
End If
Next
Text1.Text = Text1.Text &运动员平均成绩(i) &vbCrLf
Next
'按成绩排序
Text1.Text = Text1.Text &"组序后成绩:" &vbCrLf
Call 排序(运动员平均成绩)
For i = 1 To 30
Text1.Text = Text1.Text &运动员平均成绩(i) &vbCrLf
Next
End Sub
Public Sub 排序(List() As Double)
Dim First As Double, Last As Double
Dim i As Integer, j As Integer
Dim Temp As Double
First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) >List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
End Sub
Public Function Max(输入() As Double) As Double
Dim First As Double, Last As Double
Dim i As Integer, j As Integer
Dim Temp As Double
First = LBound(输入)
Last = UBound(输入)
For i = First To Last - 1
For j = i + 1 To Last
If 输入(i) >输入(j) Then
Temp = 输入(j)
输入(j) = 输入(i)
输入(i) = Temp
End If
Next j
Next i
Max = 输入(i)
End Function
Public Function Min(输入() As Double) As Double
Dim First As Double, Last As Double
Dim i As Integer, j As Integer
Dim Temp As Double
First = LBound(输入)
Last = UBound(输入)
For i = First To Last - 1
For j = i + 1 To Last
If 输入(i) >输入(j) Then
Temp = 输入(j)
输入(j) = 输入(i)
输入(i) = Temp
End If
Next j
Next i
Min = 输入(1)
End Function
不好意思,老是粘贴错,再改一下,源代码我调试好了以后给你粘贴错了,这段代码我没有调试,不过应该可以的,你试试,不可以的话给我追问,我调试
你在vb的安装路径下新建一个text1.txt,用来输入学生成绩和姓物凯名,一个text2.txt,用来保存结果。注意text1.txt格式是这样的,
张3,10
李四,30
王二,40
private sub cmd_click()
dim scount as integer'用来存储学生的个数
scount=inputbox("请输入学生的个数")
dim a() as integer'用来存储文件里的所仔饥有数据
redim a(1 to 2*scount)
open app.path&"\"&"text1.txt" for input as#1
for i=1 to 2*scount
input#1,a(i)
next i
close#1
dim b() as integer'用来存储学生成绩
redim b(1 to scount)
dim c() as integer'用来存储学生姓名
redim c(1 to scount)
for i=1 to scount'读入学生成绩
b(i)=a(2*I)
next i
for i=1 to scount'读入学生姓名
c(i)=a(1+2*(i-1))
next i
for i=1 to scount-1'给成绩排序
max=b(i)
for j=i+1 to scount
if b(j)>max then
max=b(j)
p=j
temp=b(i)
b(i)=b(p)
b(p)=temp
end if
next j
next i
for i=1 to scount
for j=1 to scount
if b(i)=a(2*j) then
c(i)=a(2*j)
end if
next j
next i
open app.path&"\"&"text2.text" for 念蚂返append as#1
for i=1 to scount
print#1,c(i),b(i)
next i
close#1
end sub
’3个label,2个commandPrivate Sub Command1_Click()
Dim s, i, j, arr(1 To 10), t, sum
For i = 1 To 10
s = InputBox("输入评分(0-10分):", "第" &i &"个分数")
If IsNumeric(s) Then
s = Val(s)
If s <0 Or s >10 Then
i = i - 1
Else
arr(i) = s
End If
Else
i = i - 1
End If
Next
For i = 1 To 9
For j = i + 1 To 10
If arr(i) >arr(j) Then
t = arr(i): arr(i) = arr(j): arr(j) = t
End If
Next
Next
For i = 2 To 9
sum = sum + arr(i)
Next
Label1.Caption = "最高分亩亏侍为:" &arr(10)
Label2.Caption = "最低分为:" &arr(1)
Label3.Caption = "选手最后得分:"迅吵 &Round(sum / 8, 1)
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Command1.Caption = "评分"
Command2.Caption = "结束"空铅
With Label1
.Caption = ""
.AutoSize = True
End With
With Label2
.Caption = ""
.AutoSize = True
End With
With Label3
.Caption = ""
.AutoSize = True
End With
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)