VB实验三.docx
《VB实验三.docx》由会员分享,可在线阅读,更多相关《VB实验三.docx(16页珍藏版)》请在冰豆网上搜索。
VB实验三
VB实验三
实验报告三
实验目的
(1)掌握一维数组(静态、动态)定义及使用
(2)掌握二维数组(静态、动态)定义及使用
(3)掌握“控件数组”的使用
(4)掌握数组相关算法(求最值,排序,查找)
(5)通过数组巩固循环及多重循环程序设计
实验内容
【实验1】已知10个数为53、67、42、89、65、18、98、67、54、36,编写程序,使用Array函数存储这10个数并求和。
程序运行界面如下图所示。
(10分)
【实验1典型结果】
【实验2】动态数组声明及输入输出,程序运行界面如下图所示。
(10分)
掌握动态数组的使用
实验结果:
【实验2代码】
PrivateSubcommand1_Click()
Dima()AsInteger
n=3
ReDima(n)
a
(1)=10
a
(2)=20
a(3)=30
Printa
(1),a
(2),a(3)
Print"用RedimPreservea(n)改变数组大小"
n=4
ReDimPreservea(n)
a(4)=40
Printa
(1),a
(2),a(3),a(4)
EndSub
【实验2典型结果】
【实验3】编写程序,定义一个二维静态数组,输出下列矩阵并分别计算矩阵两条对角线元素之和。
(10分)
程序运行界面如下图所示。
掌握二维数组的定义及使用
实验结果:
【实验3代码】
OptionExplicit
OptionBase1
PrivateSubForm_Click()
Dima%(5,5),i%,j%,sum%,n%,s1%,s2%
Fori=1To5
Forj=1To5
a(i,j)=5*(i-1)+j'给数组赋值
Nextj
Nexti
Fori=1To5
Forj=1To5
PrintTab(7*j);a(i,j);'输出数组
Nextj
Print
Nexti
n=5
s1=0
s2=0
Fori=1To5
Forj=1Ton
Ifi=jThens1=s1+a(i,j)'主对角线之和
Ifi+j=n+1Thens2=s2+a(i,j)'次对角线之和
Nextj
Nexti
Print"主对角线之和=";s1
Print"次对角线之和=";s2
EndSub
【实验3典型结果】
【实验4】利用控件数组模拟电话拨号程序,界面设计如下图所示。
要求按任意一个字符,在文本框中显示,最多可拨11位数字字符,单击“重拨”按钮,重新显示原来所拨的号码。
建立Command1控件数组,索引为0-9;Command2和Command3分别为“重拨”、“清屏”按钮;Timer1控件为“重拨”服务。
(10分)
掌握控件组的使用
实验结果:
【实验4代码】
DimnoAsString,iAsInteger
PrivateSubCommand1_Click(indexAsInteger)
Text1.Text=Text1.Text&index
EndSub
PrivateSubCommand2_Click()
no=Text1.Text
Text1.Text=""
i=1
Timer1.Interval=200
Timer1.Enabled=True
EndSub
PrivateSubCommand3_Click()
Text1.Text=""
EndSub
PrivateSubTimer1_Timer()
Text1.Text=Text1.Text&Mid(no,i,1)
i=i+1
Ifi>Len(no)ThenTimer1.Enabled=False
EndSub
【实验4典型结果】
【实验5】随机产生10个100-999之间的数以递增顺序存放在列表框中,并实现对列表框内数据插入、删除等操作,使得列表框内数据还是有序。
程序运行界面如下图所示(10分)
掌握数组插入与删除操作
实验结果:
【实验5代码】
OptionBase1
OptionExplicit
PrivateSubcommand1_Click()
Dimi%,j%
Fori=1To10
j=Int(Rnd*900+100)
List1.AddItemj
Nexti
EndSub
PrivateSubCommand2_Click()
Dimx%,y%
x=Val(Text1.Text)
Fory=1ToList1.ListCount-1
IfxNexty
List1.AddItemx,y
Label1.Caption="列表框有"&List1.ListCount&"个数据项"
EndSub
PrivateSubCommand3_Click()
Dima%,b%
a=Val(Text1.Text)
Forb=0ToList1.ListCount-1
Ifa=Val(List1.List(b))ThenList1.RemoveItemb
Nextb
Label1.Caption="列表框有"&List1.ListCount&"个数据项"
EndSub
【实验5典型结果】
【实验6】设计一个利用简单组合框对各省、直辖市名称维护的应用程序。
要求:
添加不重复的省或直辖市到组合框中,对不正确的可修改,以按汉字内码顺有序显示。
运行效果如下图所示。
(10分)
掌握数组常用算法:
插入与删除操作
实验结果:
【实验6代码】
Dimpos%
PrivateSubCombo1_Click()
pos=Combo1.ListIndex
EndSub
PrivateSubCombo1_keypress(keyasciiAsInteger)
Dimi%,findAsBoolean
Ifkeyascii=13Then
find=False
Fori=0ToCombo1.ListCount-1
IfCombo1.Text=Combo1.List(i)Then
find=True
Nexti
IfNotfindThen
Combo1.AddItemCombo1.TextCombo1.Text=""
EndIf
EndSub
PrivateSubCommand1_Click()
Combo1.List(pos)=Combo1.Text
EndSub
PrivateSubForm_Load()
Combo1.AddItem"上海市"
Combo1.AddItem"北京市"
Combo1.AddItem"重庆市"
Combo1.AddItem"四川省"
Combo1.AddItem"陕西省"
Combo1.AddItem"山西省"
Combo1.AddItem"河南省"
Combo1.AddItem"山东省"
EndSub
【实验6典型结果】
【实验7】用比较法对数组中的元素按升序排列,程序运行界面如下图所示。
(10分)
掌握数组常用算法:
数组排序
实验结果:
【实验7代码】~
OptionBase1
PrivateSubCommand1_Click()
Dima(),i%,j%,t%
a=Array(82,12,78,36,73,90,18,99,67,56)
n=UBound(a)
Print"比较法排序前:
"
Fori=1Ton
Printa(i);
Nexti
Print
Print"比较法排序后:
"
Fori=LBound(a)Ton-1
Forj=i+1Ton
Ifa(i)>a(j)Then
t=a(i):
a(i)=a(j):
a(j)=t
EndIf
Nextj
Printa(i);
Nexti
EndSub
【实验7典型结果】
【实验8】选择法对数组中的元素按升序排列,程序运行界面如下图所示。
(10分)
掌握数组常用算法:
数组排序
实验结果:
【实验8代码】
OptionBase1
PrivateSubForm_Click()
Dima(),i%,j%,t%,P%
a=Array(82,12,78,36,73,90,18,99,67,56)
n=UBound(a)
Print"比较法排序前:
"
Fori=1Ton
Printa(i);
Nexti
Print
Print"比较法排序后:
"
Fori=LBound(a)Ton-1
P=i
Forj=i+1Ton
Ifa(j)Nextj
t=a(i):
a(i)=a(P):
a(P)=t
Printa(i);
Nexti
EndSub
【实验8典型结果】
【实验9】用冒泡对数组中的元素按升序排列,程序运行如下图所示。
(10分)
掌握数组常用算法:
数组排序
实验结果:
【实验9代码】
OptionBase1
OptionExplicit
PrivateSubForm_Click()
Dima(),i%,n%,j%,t%
DimflagAsBoolean
a=Array(12,78,36,73,89,18,90,67,56,99)
n=UBound(a)
Fori=1Ton
Printa(i);
Nexti
Print
Fori=1Ton-1
Forj=1Ton-i
Ifa(j)t=a(j):
a(j)=a(j+1):
a(j+1)=t
EndIf
Nextj
Print
Printa(j);
Nexti
EndSub
【实验9典型结果】
【实验10】编写程序,将随机产生的10个100—200之间的随机整数存入数组,求其中的最大值和最小值,程序运行如下图所示。
(10分)
掌握数组常用算法:
求最值
实验结果:
【实验10代码】
OptionBase1
OptionExplicit
PrivateSubForm_Click()
Dima%(1To10),i%,j%,n%,t%,min,max
n=UBound(a)
Print"产生后的数据"
Fori=1Ton
a(i)=Int(Rnd*101+100)
Printa(i);
Nexti
Print
max=a
(1):
min=a
(1)
Fori=2Ton
Ifa(i)>maxThenmax=a(i)
Ifa(i)Nexti
Print"最大值为:
";max;"最小值为:
";min”
EndSub
【实验10典型结果】
【加分1】利用一维数组,统计一个班学生成绩0~59,60~69,70~79,80~89,90~100各分数段的人数,生成一个各分数段的柱状图。
人数为运行时输入,成绩给定方法要求为键盘输入。
(10分,最高100分)
掌握控件数组的使用
实验结果:
【选做1代码】
【选做1典型结果】
【加分2】从键盘输入10个整数,存放在一个一维数组中,然后将前5个元素与后5个元素交换,即第1个与第10个交换,第2个与第9个交换……(10分,最高100分)
掌握一维数组的使用
实验结果:
【选做2代码】
【选做2典型结果】
实验小结
1.遇到的问题:
2.对课程的建议: