资源描述
实验E 数组答案
1、随机产生30~100(包括30、100)的10个正整数,求最大值、最小值、平均值,并显示整个数组的值和结果,如图E.1所示。
程序:
Private Sub Command1_Click()
Dim a(1 To 10) As Integer
Dim i%, max%, min%, sum!, avg!
For i = 1 To 10
'随机产生10个30~100之间的随机数存放在一维数组a中
a(i) = Int(Rnd * (100 - 30 + 1)) + 30
sum = sum + a(i) '所有元素求和
Print a(i);
Next i
Print
avg = sum / 10
max = a(1): min = a(1) '设定擂主
For i = 1 To 10
If a(i) > max Then max = a(i)
If a(i) < min Then min = a(i)
Next i
Print "Max="; max; "Min="; min; "Avg="; avg
End Sub
2、已知6个学生的成绩,通过对数组赋初值的方法,利用String函数,以每5分为一个“◆”显示,并显示学生的成绩,如图E.2所示。
程序:
Option Base 1
Private Sub Command1_Click()
Dim a(), i%
a = Array(56, 78, 98, 88, 76, 78)
For i = LBound(a) To UBound(a)
Print String(a(i) \ 5, "◆"); a(i)
Next i
End Sub
3、随机产生20个学生的成绩,统计各分数段人数。即0~59、60~69、70~79、80~89、90~100,并显示结果。产生的数据在Picture1显示,统计结果在Picture2显示,如图E.3所示。
说明:请在窗体上放置2个PictureBox,2个CommandButton,属性设置如下:
控件名称
属性
值
Command1
Caption
产生并显示数据
Command2
Caption
统计分数段人数
代码如下:
Dim a(1 To 20) As Integer, s(5 To 9) As Integer
Private Sub Command1_Click()
Dim i%
For i = 1 To 20
a(i) = Int(Rnd * (100 - 0 + 1)) '产生0~100之间的随机数
Picture1.Print a(i); '在Picture1上打印
If i Mod 4 = 0 Then Picture1.Print '每行打印4个
Next i
End Sub
Private Sub Command2_Click() '统计分数段人数
Dim i%, k%
For i = 1 To 20
k = a(i) \ 10 '分类统计
Select Case k
Case 0 To 5 '0~59分的不及格人数
s(5) = s(5) + 1
Case 9 To 10 '90~100之间的人数
s(9) = s(9) + 1
Case 6 To 8
s(k) = s(k) + 1
End Select
Next i
For i = 5 To 9
'若某个分数段人数为0则不打印
If s(i) <> 0 Then Picture2.Print "s(" & i & ")的人数有" & s(i) & "个"
Next i
End Sub
4、随机产生10个2位数,按从大到小递减的顺序排列,并显示排序结果。
代码:
Private Sub Command1_Click()
Dim a(1 To 10) As Integer
Dim i%, t%, n%
Print "原数组为:"
n = UBound(a) 'n为数组元素的个数
For i = 1 To n
a(i) = Int(Rnd * (99 - 10 + 1)) + 10
Print a(i);
Next i
Print
For i = 1 To n - 1 'n个元素需n-1趟排序
For j = 1 To n - i '比较的次数
If a(j) < a(j + 1) Then '从大到小排序
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j, i
Print "从大到小排序后的数组为:"
For i = 1 To n
Print a(i);
Next i
Print
End Sub
5、在通用声明段声明两个数组,利用随机函数形成如下两个数组:
要求:
1)以下三角形式显示A数组、上三角形式显示B数组。
2)求A数组主对角线元素之和和B数组副对角线元素之和。
说明:在窗体上加载3个PictureBox,3个CommandButton,并设置如下属性:
控件名称
属性
值
Command1
Caption
下三角
Command2
Caption
上三角
Command3
Caption
对角线和
代码:
Dim a(1 To 4, 1 To 4) As Integer, b(1 To 4, 1 To 4) As Integer
Private Sub Command1_Click()
Dim i%, j%
For i = 1 To 4
For j = 1 To 4
a(i, j) = Int(Rnd * (70 - 30 + 1)) + 30
Next j, i
For i = 1 To 4
For j = 1 To i
Picture1.Print Tab(j * 5); a(i, j);
Next j
Picture1.Print
Next i
End Sub
Private Sub Command2_Click()
Dim i%, j%
For i = 1 To 4
For j = 1 To 4
b(i, j) = Int(Rnd * (139 - 101 + 1)) + 101
Next j, i
For i = 1 To 4
For j = i To 4
Picture2.Print Tab(j * 5); b(i, j);
Next j
Picture2.Print
Next i
End Sub
Private Sub Command3_Click()
Dim suma%, sumb%, i%
For i = 1 To 4
suma = suma + a(i, i)
sumb = sumb + b(i, 5 - i)
Next i
Picture3.Print "A数组主对角线元素和为:"; suma
Picture3.Print "B数组副对角线元素和为:"; sumb
End Sub
6、输入整数n,显示出具有n行的杨辉三角形。
说明:在窗体上放置1个PictureBox,1个Label,1个TextBox,并在Text1的KeyPress事件中进行编程。
代码:
Option Base 1
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim a() As Integer, n%
Dim i%, j%
If KeyAscii = 13 Then '在Text1中输入行数后按回车键
n = Text1.Text
ReDim a(n, n)
'生成数组
For i = 1 To n
a(i, i) = 1: a(i, 1) = 1
For j = 2 To i
a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
Next j
Next i
'打印数组
For i = 1 To n
For j = 1 To i
Picture1.Print Tab(4 * j); a(i, j);
Next j
Picture1.Print
Next i
End If
End Sub
7、设计一个选课的程序。
说明:在窗体放置2个ListBox,设置List1的Sorted属性为True。
代码:
Private Sub Form_Load()
List1.AddItem "Web程序设计"
List1.AddItem "C/C++程序设计"
List1.AddItem "VB程序设计"
List1.AddItem "多媒体技术与应用"
List1.AddItem "网络技术与应用"
List1.AddItem "数据库技术与应用"
List1.AddItem "软件技术基础"
List1.AddItem "大学计算机基础"
List1.AddItem "硬件技术基础"
End Sub
Private Sub List1_Click()
If List2.ListCount >= 5 Then 'List2中项目数超过5项提示,否则添加
MsgBox "超过5门课程,不能再选"
Else
List2.AddItem List1.Text
List1.RemoveItem List1.ListIndex
End If
End Sub
8、窗体上建立一个简单组合框,在组合框的文本框输入数字字符,按回车键后加入到组合框的列表框内。单击“交换”按钮,将列表框中最小值项目和第0个项目交换;最大值项目与最后项目交换。
说明:
在窗体放置1个ComboBox,把它的Style属性设置为1,再放置1个CommandButton,设置它的Caption属性为“交换”
代码:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '按回车键
Combo1.AddItem Combo1.Text
Combo1.Text = ""
End If
End Sub
Private Sub Command1_Click()
Dim max%, imax%, min%, imin%, i%, t%
max = Val(Combo1.List(0))
imax = 0
min = Val(Combo1.List(0))
imin = 0
For i = 0 To Combo1.ListCount - 1
If Val(Combo1.List(i)) > max Then
max = Combo1.List(i)
imax = i
End If
If Val(Combo1.List(i)) < min Then
min = Combo1.List(i)
imin = i
End If
Next i
t = Combo1.List(0)
Combo1.List(0) = Combo1.List(imin)
Combo1.List(imin) = t
t = Combo1.List(Combo1.ListCount - 1)
Combo1.List(Combo1.ListCount - 1) = Combo1.List(imax)
Combo1.List(imax) = t
End Sub
9、提供在窗体上显示的以汉字开头的字体名称,并显示该名称所对应的字体样式。
说明:在窗体上放置1个ListBox,1个PictureBox
代码:
Private Sub Form_Load()
Dim i%
Form4.Show '先让窗体显示出来,否则print方法无法执行
For i = 0 To Screen.FontCount - 1 '对屏幕安装的所有字体操作
If Asc(Left(Screen.Fonts(i), 1)) < 0 Then '如果是汉字
List1.AddItem Screen.Fonts(i) '在List1中添加这种字体
Picture1.FontName = Screen.Fonts(i) '对Picture1设置这种字体
'用当前设置的字体显示“中国同济大学”
Picture1.Print "中国同济大学"
End If
Next i
End Sub
12
展开阅读全文