信息工程学院
程序设计基础(VB) 实习报告
学院:班级姓名学号:成绩:
实习四、数组与自定义数据类型
一.实验目的:掌握数组与自定义类型的使用方法
二.实验过程
例题05-11 输出文件中的10名学生3门考试成绩,要求按照分数由高到低排列,并输
出姓名,各科分数,平均分
例题05-12在窗体上建立一个由100个命令按钮组成的10行10列控件数组。
实验报告的内容与格式按任课教师的要求书写。
例题05-13 输入两个数,根据不同的运算符计算相应的运算结果。
习题1
代码:
Option Base 1
Private Sub Command1_Click()
Dim a%(1 To 8), b%(1 To 8), c%(1 To 8), i%, j%÷
Picture1.Print " 数组3中的数据为:"
Open "F:\马鸿雁VB\实验4\XT1-1.txt" For Input As #1
Open "F:\马鸿雁VB\实验4\XT1-2.txt" For Input As #2
For i = 1 To 8
Input #1, a(i)
Input #2, b(i)
c(i) = a(i) + b(i)
Picture1.Print c(i);
Next i
Close
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Picture1.FontSize = 16
End Sub
习题2
代码
Option Base 1
Private Sub Command1_Click()
Dim a%(), max As Integer, i%, j%, k%
n = 4: m = 3: k = 1
ReDim a(1 To n, 1 To m)
For i = 1 To n
For j = 1 To m
a(i, j) = Int(Rnd * 10)
k = k + 1
Picture1.Print Tab(4 * ((k - 2) Mod 3) + 2); a(i, j);
max = a(1, 1): x = 1: y = 1
Next j, i
For i = 2 To n
For j = 2 To m
If max < a(i, j) Then max = a(i, j): x = i: y = j Next j, i
Picture1.Print
Picture1.Print "最大的数是:" & max & Chr(10) & "它在第" & x & "行" & ",第" & y & "列"
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Me.FontSize = 18
Picture1.FontSize = 18
End Sub
习题3
代码
Option Base 1
Dim a(10), b(10), i%
Private Sub Command1_Click()
For i = 1 To 10
a(i) = InputBox("请输入一个元素:")
k = k + 1
Picture1.Print Tab(3 * ((k - 1) Mod 10) + 2); a(i);
Next i
End Sub
Private Sub Command2_Click()
For i = 1 To 10
b(i) = a(i)
Next i
For i = 1 To 5
t = b(i)
b(i) = b(11 - i)
b(11 - i) = t
Next i
For i = 1 To 10
k = k + 1
Picture2.Print Tab(3 * ((k - 1) Mod 10) + 2); b(i);
Next i
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
End Sub
习题4
代码
Private Sub Command1_Click()
Dim x%
Open "F:\马鸿雁VB\实验4\students' marks.txt" For Input As #1 Text1 = ""
Do Until EOF(1)
Input #1, x
Text1 = Text1 & x & ","
Loop
Text1 = Left(Text1, Len(Text1) - 1)
Close
End Sub
Private Sub Command2_Click()
Dim a$(), k%, m
Dim x(0 To 10)
If Text1 = "" Then
MsgBox "请先从文件中读取数据!!!"
Exit Sub
End If
a = Split(Text1, ",")
For Each m In a
k = m \ 10
x(k) = x(k) + 1
Next m
x(9) = x(9) + x(10)
x(5) = x(1) + x(2) + x(3) + x(4) + x(5)
Picture1.Print "统计结果如下:"
Picture1.Print "90-100分有" & x(9) & "人"
For i = 8 To 6 Step -1
Picture1.Print i * 10 & "分-"; i * 10 + 9 & "分有:" & x(i) & "人"
Next i
Picture1.Print "小于60分的有:" & x(5) & "人"
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
Text1.FontSize = 18
Picture1.FontSize = 20
End Sub
习题5
代码Dim a%(17), s%, i%, m, w%(17), y%, k(17), j%, b%(17)
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
s = 0
Open "F:\马鸿雁VB\实验4\W.txt" For Input As #1
Open "F:\马鸿雁VB\实验4\Y.txt" For Input As #2
For i = 0 To 16
Do Until EOF(1)
For j = 0 To 16
Input #1, w(i)
s = s + w(i) * a(j)
Next j
Loop
Next i
y = s Mod 11
For i = 0 To 16
Do Until EOF(2)
Input #2, k(i)
If i = y Then m = k(i)
Exit Do
Loop
Next i
Picture1.Print Tab(2); "第18位身份证号码为:"
Picture1.Print Tab(2); m
Close
End Sub
Private Sub Command3_Click()
For i = 0 To 16
a(i) = InputBox("请输入第" & i + 1 & "位的数字")
Picture2.Print a(i);
Next i
End Sub
Private Sub Form_Load()
End Sub
习题6
代码
Option Base 1
Private Sub Command1_Click()
Dim a!(30), i%, k%
i = 1: k = 0
a(1) = 1: a(2) = 1: a(3) = a(1) + a(2)
For i = 3 To 30
a(i) = a(i - 1) + a(i - 2)
Next i
Picture1.Print "该数列的前30项为:"
For i = 1 To 30
Picture1.Print Tab(13 * ((i - 1) Mod 3) + 2); "A" & i & "=" & a(i);
Next i
End Sub
Private Sub Command2_Click()
Picture1.Cls
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
Picture1.FontSize = 18
End Sub
习题11
代码
Option Base 1
Private Type Ydy
hm As String * 3
cj As Single
End Type
Const ydysm = 10
Dim ydycj(1 To ydysm) As Ydy, t As Ydy
Dim i%, j%, k%
Private Sub Command1_Click()
Open "H:\马鸿雁VB\实验4\ydy.txt" For Input As #1
For i = 1 To ydysm
Input #1, ydycj(i).hm, ydycj(i).cj
'Print ydycj(i).hm, ydycj(i).cj
Next i
Picture2.Print "运动员号码", "成绩"
For i = 1 To ydysm
Picture2.Print Tab(2); ydycj(i).hm & "号", ydycj(i).cj & "秒"
Next i
Close
End Sub
Private Sub Command2_Click()
For i = 1 To ydysm - 1
k = i
For j = i + 1 To ydysm
If ydycj(j).cj < ydycj(k).cj Then k = j
Next j
t = ydycj(k): ydycj(k) = ydycj(i): ydycj(i) = t
Next i
Picture2.Print "===运动员成绩由高到低为==="
Picture2.Print "运动员号码", "成绩"
For i = 1 To ydysm
Picture2.Print Tab(2); ydycj(i).hm & "号", ydycj(i).cj & "秒"
Next i
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
Picture2.FontSize = 13
End Sub