实验十一维数组程序设计1实验十一维数组程序设计【实验目的】(1)掌握一维数组的定义及初始化(2)掌握一维数组的赋值及引用(3)掌握一维数组的输入及输出方法及有关的算法(4)掌握动态数组的定义和使用(5)掌握利用赋值函数Array()为数组赋值(6)了解掌握自定义类型的使用【实验内容】1、尝试编写下列程序【10-1】求一个班10个学生的平均成绩,然后统计高于平均分的人数。程序运行界面如图10-1所示:图10-1运行结果界面源代码:PrivateSubCommand1_Click()Dimscore(1To10)AsIntegerDimaverage!,count%,i%average=0Fori=1To10score(i)=InputBox(请输入第&i&位学生的成绩:)average=average+score(i)Nextiaverage=average/10count=0Fori=1To10实验十一维数组程序设计2Ifscore(i)averageThencount=count+1NextiPrint平均分=;average,高于平均分的人数;countEndSub举一反三【10-1】利用InputBox函数输入十个数,求其中偶数的平均值,并求小于平均值的偶数个数。【10-2】打印斐波那契数列的前20项(斐波那契数列是这样的一个数列:1、1、2、3、5、8、13,……,这个数列从第三项开始,每一项都等于前两项之和)。程序运行界面如图10-2所示:图10-2运行结果界面源代码:OptionBase1PrivateSubCommand1_Click()Dimf(20)AsIntegerDimiAsIntegerText1.text=f(1)=1f(2)=1Fori=3To20f(i)=f(i-1)+f(i-2)NextiFori=1To20Text1.Text=Text1.Text+Str(f(i))IfiMod5=0Then实验十一维数组程序设计3Text1.Text=Text1.Text+vbCrLf‘vbCrLf相当于chr(13)+chr(10)EndIfNextiEndSub举一反三【10-2】打印斐波那契数列前20项中的奇数,每5个数占一行。已知前两项的值都为1。【10-3】利用InputBox函数输入10个整数,求出这10个整数中的最大值以及它的下标。程序运行界面如图10-3所示:图10-3运行结果界面源代码:PrivateSubCommand1_Click()Dima(1To10)AsIntegerDimi%,max%,imax%Fori=1To10a(i)=InputBox(请输入第&i&个数)Nextimax=a(1)imax=1Fori=2To10Ifa(i)maxThenmax=a(i)imax=iEndIfNextiPrint最大的数是&max&,下标为&imaxEndSub举一反三【10-3】随机产生10个1~10之间的整数,求出这10个整数中的最小值以及它出现的次实验十一维数组程序设计4数。【10-4】利用inputbox函数输入10个数,对这10个数用冒泡法进行降序排序。程序运行界面如图10-4所示:图10-4运行结果界面源代码:PrivateSubCommand1_Click()Dima(9)AsIntegerDimiAsInteger,jAsInteger,tAsIntegerPrint“排序前:”Fori=0To9a(i)=Val(inputbox(“输入”))printa(i);NextiprintFori=0To8Forj=0To8-iIfa(j)a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjNextiPrint“排序后:”Fori=0To9Printa(i);NextiEndSub举一反三实验十一维数组程序设计5【10-4】随机产生10个100以内的正数,对这10个数用冒泡法进行升序排序。【10-5】利用inputBox函数输入10个数,对这10个数用选择法进行升序排序。程序运行界面如图10-5所示:图10-5运行结果界面源代码:PrivateSubCommand1_Click()Dima(9)AsIntegerDimiAsInteger,jAsInteger,tAsInteger,pAsIntegerPrint排序前:Fori=0To9a(i)=Val(InputBox(输入))Printa(i);NextiPrintFori=0To8p=iForj=i+1To9Ifa(p)a(j)Thenp=jEndIfNextjt=a(i):a(i)=a(p):a(p)=tNextiPrint排序后:Fori=0To9Printa(i);NextiEndSub实验十一维数组程序设计6举一反三【10-5】随机产生10个100以内的正数,对这10个数用选择法进行降序排序。2、程序填空(1)随机产生10个两位数的随机数,赋给数组a,然后求各元素之和、平均值,将比平均值大的各元素的值打印出来,最后找出数组中的最大值及其元素下标并打印。运行结果界面如图10-6所示。10-6运行结果界面源代码:PrivateSubCommand1_Click()Dimsum,average,max,p,a(10)AsIntegerRandomizeFori=0To9a(i)=【1】Printa(i);NextiPrintsum=0Fori=0To9【2】Nextiaverage=sum/10Print各元素累加和=;sum,平均值=;averagePrint比平均值大的各元素的值依次为:Fori=0To9Ifa(i)averageThenPrinta(i);NextiPrint【3】p=0Fori=0To9实验十一维数组程序设计7Ifa(i)maxThen【4】p=iEndIfNextiPrint最大值为:;max,其元素下标为:;pEndSub(2)利用InputBox函数输入十个数,然后输入要查找的数,如果找到了,输出该数的位置,如果没有找到给出提示。运行结果界面如图10-7所示。10-7运行结果界面源代码:PrivateSubForm_Click()Dimx,a(1To10)AsSingleDimiAsIntegerFori=1To10a(i)=InputBox(请输入第&i&个数)printa(i);Nextix=InputBox(请输入要查找的数)Print要查找的数是&xFori=1To10If【1】ThenMsgBox要查找的数是第&i&个数【2】EndIfNextiIf【3】ThenMsgBox没有找到EndIfEndSub实验十一维数组程序设计8(3)随机输入包含10个元素的一维数组,首尾互换,然后输出。程序运行界面如图10-8所示:图10-8运行结果界面源代码:OptionBase1Dima(10)AsIntegerPrivateSubCommand1_Click()DimiAsIntegerFori=1To10a(i)=InputBox(请依次输入数组元素:)NextiFori=1To10Text1.Text=Text1.Text+Str(a(i))+NextiEndSubPrivateSubCommand2_Click()Dimi,tAsInteger,n%n=Ubound(a)Fori=1Ton\2t=a(i)a(i)=_________________=tNextiFori=1To10Text2.Text=Text2.Text+Str(a(i))+NextiEndSub(4)用Array函数建立一个含有8个元素的数组,然后查找并输出该数组中各元素的最小值。填空:实验十一维数组程序设计9源代码:OptionBase1PrivateSubCommand1_Click()Dimarr1DimMinAsInteger,iAsIntegerarr1=Array(12,435,76,-24,78,54,866,43)Min=【1】Fori=2To8Ifarr1(i)MinThen【2】NextiPrint最小值是:;MinEndSub(5)随机产生n个[5,17]之间的数,输出它们的平均值运行结果如图10-9所示。10-9运行结果界面原代码:OptionBase1PrivateSubCommand1_Click()Dimf()AsInteger,aveAsSingleDimiAsInteger,nAsIntegerave=0n=Val(InputBox())【1】f(n)Fori=1Tonf(i)=Int(Rnd*13+5)Printf(i);ave=ave+f(i)NextiPrintPrint平均值=;ave/nEndSub(6)写出下面程序的运行结果________实验十一维数组程序设计10源代码:PrivateSubCommand1_Click()Dima(5)AsStringFori=1To5a(i)=Chr(Asc(A)+(i-1))NextiForEachbInaPrintb;NextEndSub(7)窗体上有一个名称为Text1的文本框,一个名称为Command1的命令按钮。程序运行时,在键盘上输入4,结果为_______源代码:PrivateTypexaAsIntegerbAsIntegerEndTypePrivateSubCommand1_Click()DimyAsxy.a=InputBox()Ify.a\2=y.a/2Theny.b=y.a*y.aElsey.b=Fix(y.a/2)'去掉小数部分取整EndIfText1.Text=y.bEndSub实验十一维数组程序设计11实验十一二维数组程序设计【实验目的】(1)掌握动态数组的定义和使用方法(2)掌握二维数组的定义、赋值和输入输出方法(3)掌握有关二维数组的一些常用算法(4)掌握控件数组建立的方法及应用【实验内容】1、尝试编写下列程序【11-1】找出m×n矩阵中最大的那个元素所在的行和列,输出其值及行号和列号。程序运行结果界面如图11-1所示:11-1运行结果界面源代码:PrivateSubForm_Click()Dima()AsIntegerDimm,n,col,max,rowAsIntegerDimi,jAsIntegerm=Val(InputBox(请输入矩阵的行数))n=Val(InputBox(请输入矩阵的列数))ReDima(m,n)Fori=1TomForj=1Tona(i,j)=Val(InputBox(请输入数组第&i&行第&j&列元素值))NextjNextiPrint所建立的矩阵为:Fori=1TomForj=1TonPrinta(i,j);NextjPrintNextimax=a(1,1)col=1row=1实验十一维数组程序设计12Fori=1TomForj=1TonIfa(i,j)maxThenmax=a(i,j)col=jrow=iEndIfNextjNextiPrintPrint矩阵最大的元素的值为:;a(row,col)Print他所在的行号为:;row;,列号为:;colEndSub举一反三【11-1】随机生成一个3×4矩阵,元素值为[80,100]之间的数,求所有元素的平均值并输出。【11-2】随机生成一个5行4列的矩阵,元素值为[1,10]之间的数,求每一行的和值并输出。运行结果如图11-2所示。11-2运行结果界面源代码:PrivateSubCommand1_Click()Dima(1To5,1To4)AsInteger,iAsInteger,jAsIntegerDimsumAsIntegerFori=1To5Forj=1To4a(i,j)=Int(Rnd*10+1)Printa(i,j);NextjPrintNextiPrintFori=1To5实验十一维数组程序设计13sum=0Forj=1T