中易网

VB编程题目急求! 有一个20名学生的成绩单,包含每个学生的姓名和5门课的成绩。姓名依次记作A~

答案:2  悬赏:60  
解决时间 2021-01-16 12:48
  • 提问者网友:我是女神我骄傲
  • 2021-01-15 14:48
VB编程题目急求! 有一个20名学生的成绩单,包含每个学生的姓名和5门课的成绩。姓名依次记作A~
最佳答案
  • 二级知识专家网友:怀裏藏嬌
  • 2021-01-15 15:20
窗体上加一个按钮,完整代码如下:

Option Explicit

Private Type Record
MyName As String * 1
MyAve As Single
End Type

Private Sub Command1_Click()
Dim d(20, 5) As Integer
Dim x As Integer
Dim i As Integer
Dim j As Integer
Dim EvrAve(20) As Single
Dim MySum As Integer
Dim MyName(20) As String
Dim T As Single
Dim Ts As String

'产生姓名
For i = 1 To 20
MyName(i) = Chr(64 + i)
Next i

'随机生成分数,保存到数组
Randomize
For i = 1 To 20
For j = 1 To 5
d(i, j) = Int(Rnd * 51 + 50)
Debug.Print d(i, j),
Next j
Debug.Print
Next i

'统计平均成绩
For i = 1 To 20
MySum = 0
For j = 1 To 5
MySum = MySum + d(i, j)
Next j
EvrAve(i) = MySum / 5
Debug.Print EvrAve(i)
Next i

'排序
For i = 1 To 19
For j = i + 1 To 20
If EvrAve(i) < EvrAve(j) Then
T = EvrAve(i)
EvrAve(i) = EvrAve(j)
EvrAve(j) = T
Ts = MyName(i)
MyName(i) = MyName(j)
MyName(j) = Ts
End If
Next j
Next i

For i = 1 To 20
Debug.Print MyName(i), EvrAve(i)
Next i

'写文件file5.txt
Open "c:\file5.txt" For Output As #1
For i = 1 To 20
Print #1, MyName(i), EvrAve(i)
Next i
Close #1

Dim MyRecord As Record
'写文件file6.txt
Open "c:\file6.txt" For Random As #1
For i = 1 To 20
MyRecord.MyName = MyName(i)
MyRecord.MyAve = EvrAve(i)
Put #1, i, MyRecord
Next i
Close #1

End Sub
全部回答
  • 1楼网友:末日狂欢
  • 2021-01-15 16:16
Private Sub Form_Load()
Dim S_Name(1 To 20) As String  '姓名
Dim S_Score(1 To 20, 1 To 5) As Single  '成绩
Dim S_P(1 To 20) As Single '平均成绩
'赋值
For i% = 1 To 20
 S_Name(i%) = Chr(64 + i%) '姓名
 Dim TempSum As Single
 TempSum = 0
 For j% = 1 To 5  '分数
  S_Score(i%, j%) = Format(50 * (1 + Rnd()), "##.0")
  TempSum = TempSum + S_Score(i%, j%)
 Next j%
 S_P(i%) = Format(TempSum / 5, "##.0") '平均成绩
Next i%
'冒泡法从大到小排序
Dim Sort_Name(1 To 20) As String  '重新排列后的姓名
Dim Sort_p(1 To 20) As Single  '重新排列后的平均成绩
For i% = 1 To 20
 Sort_Name(i%) = S_Name(i%)
 Sort_p(i%) = S_P(i%)
Next i%
Dim TempName As String, TempValue As Single
For i% = 1 To 19
 For j% = i% + 1 To 20
  If Sort_p(i%) < Sort_p(j%) Then
   TempName = Sort_Name(i%): TempValue = Sort_p(i%)
   Sort_Name(i%) = Sort_Name(j%): Sort_p(i%) = Sort_p(j%)
   Sort_Name(j%) = TempName: Sort_p(j%) = TempValue
  End If
 Next j%
Next i%
'输出
Open App.Path + "file5.txt" For Output As #1
 For i% = 1 To 20
  Print #1, S_Name(i%) + " " + Trim(Str(S_Score(i%, 1))) + " " + Trim(Str(S_Score(i%, 2))) + " " + Trim(Str(S_Score(i%, 3))) + " " + Trim(Str(S_Score(i%, 4))) + " " + Trim(Str(S_Score(i%, 5))) + " " + Trim(Str(S_P(i%)))
 Next i%
Close #1
Open App.Path + "file6.txt" For Output As #1
 For i% = 1 To 20
  Print #1, Sort_Name(i%) + " " + Trim(Str(Sort_p(i%)))
 Next i%
Close #1
End Sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息