VB经典例题(修改版)数组部分以后.doc_第1页
VB经典例题(修改版)数组部分以后.doc_第2页
VB经典例题(修改版)数组部分以后.doc_第3页
VB经典例题(修改版)数组部分以后.doc_第4页
VB经典例题(修改版)数组部分以后.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【学习指导】练习题P109 设计题1. (对调)第10页,共10页Private Sub Command1_Click()Dim a(1 To 15) As IntegerFor i = 1 To 15a(i) = Int(Rnd * (100 - 1 + 1) + 1)Print a(i);Next iPrintFor i = 1 To 15 2t = a(i)a(i) = a(15 - i + 1)a(15 - i + 1) = tNext iFor i = 1 To 15Print a(i);Next iEnd Sub也可以用动态数组完善程序,随机产生任意几个正整数并对调Dim a() As IntegerPrivate Sub Command1_Click()x = InputBox(请输入你想随机产生几个正整数)ReDim a(1 To x) As IntegerFor i = 1 To xa(i) = Int(Rnd * (100 - 1 + 1) + 1)Print a(i);Next iPrintFor i = 1 To x 2t = a(i)a(i) = a(x - i + 1)a(x - i + 1) = tNext iFor i = 1 To xPrint a(i);Next iEnd Sub2. (3和6题的合并)(计算数组各个方向的总和)第3题Private Sub Command1_Click()Dim a(1 To 5, 1 To 5) As IntegerRandomizeFor i = 1 To 5 For j = 1 To 5 a(i, j) = Int(Rnd * (10 - 1 + 1) + 1) b = b + a(i, j) Print Tab(j * 4); Trim(a(i, j); Next j Print ; b【目的在于和每行的数分开,可不加】 b = 0Next iFor j = 1 To 5 For i = 1 To 5 c = c + a(i, j) Next i Print Tab(j * 4); Trim(c); c = 0Next jPrint Print _【目的在于和下一组分开,如图,可加可不加】End Sub第6题【此程序先要点击窗体生成一组数据才能进行,也可修改成form-load事件直接进行计算】Dim a(1 To 5, 1 To 5) As IntegerPrivate Sub Command1_Click()For i = 1 To 5 For j = 1 To 5 b = b + a(i, j) Next jNext iPrint 所有元素之和=; bEnd SubPrivate Sub Command2_Click() For j = 1 To 5 c = c + a(1, j) + a(5, j) Next j For i = 2 To 4 c = c + a(i, 1) + a(i, 5) Next iPrint 所有靠边元素之和=; cEnd SubPrivate Sub Command3_Click()For i = 1 To 5For j = 1 To 5 If i = j Then d = d + a(i, j)Next jNext iFor i = 1 To 5 For j = 5 To 1 Step -1 If i + j = 6 Then d = d + a(i, j) Next jNext iPrint 两条对角线之和=; dEnd SubPrivate Sub Form_Click()For i = 1 To 5 For j = 1 To 5 a(i, j) = Int(Rnd * (100) + 1 Print a(i, j); Next j PrintNext iEnd Sub8、编程输出n行杨辉三角图形,n由键盘输入。(本题关键在定位上能对齐“_”)Dim a() As LongDim n As LongPrivate Sub Command1_Click()n = InputBox(请输入你想产生几行杨辉三角形?)ReDim a(1 To n, 1 To n)For i = 1 To n For j = 1 To n a(i, 1) = 1 If j = i Then a(i, j) = 1 Next jNext iFor i = 2 To n For j = 2 To n If j i Then Exit For a(i, j) = a(i - 1, j - 1) + a(i - 1, j) Next jNext iFor i = 1 To n For j = 1 To i Print Tab(5 * n + 8 * j - 4 * i); a(i, j); Next jNext iEnd Sub【图片以20行为例】9. 求斐波拉契数列的前n项并打印Dim a ()Private Sub Command1_Click()X=inputbox(想打印前?列)reDim a(1 To x)a(1) = 1a(2) = 1For i = 3 To x a(i) = a(i - 2) + a(i - 1)Next iFor i = 1 To xIf i Mod 6 = 0 Then PrintText1.Text = Text1.Text & a(i) & ,Next iEnd Sub【拷贝部分】14、已知数组a(),编程删除a中第5个元素。数组a中的元素分别为12,6,4,89,75,63,100,20,31。Private Sub Form_Click()Dim a(), i%, n%a = Array(12, 6, 4, 89, 75, 63, 100, 20, 31)n = UBound(a)For i = 0 To nPrint a(i);Next iPrintFor i = 5 To na(i - 1) = a(i)Next in = n - 1ReDim Preserve a(n)For i = 0 To nPrint a(i);Next iPrintEnd Sub15、随机生成一个整型的二维数组,范围在10,20之间,以上三角形式输出该数组。(下三角、全部元素)Dim a%(4, 4)Dim a%(4, 4)Private Sub Command1_Click()Picture1.ClsFor i = 0 To 4For j = i To 4Picture1.Print Tab(j * 6); a(i, j);Next jPicture1.PrintNext iEnd SubPrivate Sub Form_Load()For i = 0 To 4For j = 0 To 4a(i, j) = Int(Rnd * 11 + 10)Next jNext iEnd Sub16、利用随机函数生成一个44的矩阵(即二维矩阵),范围是20,50内的整数,输出每行中的最大值和下标。Private Sub Form_Click()Dim a%(3, 3), s0%, s1%, s2%, s3%, b0%, b1%, b2%, b3%Max = 40For i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 31 + 20)Print Tab(j * 5); a(i, j);If a(0, j) = Max Then s0 = a(0, j): b0 = jIf a(1, j) = Max Then s1 = a(1, j): b1 = jIf a(2, j) = Max Then s2 = a(2, j): b2 = jIf a(3, j) = Max Then s3 = a(3, j): b3 = jNext jNext iPrintPrint 第一行; s0; (; 0; b0; )Print 第二行; s1; (; 1; b1; )Print 第三行; s2; (; 2; b2; )Print 第四行; s3; (; 3; b3; )End Sub17、利用随机函数生成一个44的矩阵(即二维矩阵),范围是40,80内的整数,求它的最大值及所对应的下标。Private Sub Form_Click()Dim a%(3, 3)Min = 80For i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 41 + 40)Print Tab(j * 5); a(i, j);If a(i, j) = Min ThenMin = a(i, j): b = i: c = jEnd IfNext jNext iPrintPrint 最小值为; MinPrint 其下标为; (; b, c; )End Sub18、输入一系列字符串,编程求出长度最大的字符串并输出其所对应的次序。Private Sub Form_Click()Dim a(5) as string,b(4) as integer,t%,max%,imax%For i =1 to 5a(i)=inputbox(a)Next iFor i =0 to 4b(i)=len(trim(a(i)Next iMax=1For i =0 to 4If maxb(i) then max=b(i):imax=iNext iPrint max=;a(i)Print cixu=,imax+1End sub19、利用随机函数生成一个44的矩阵(即二维矩阵),范围是20,50内的整数,输出该矩阵所有数据之和Private Sub Form_Click()Dim a%(3, 3)For i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 31 + 20)Print Tab(j * 5); a(i, j);b=b+a(i,j)Next jNext iPrint b;End Sub20、输入一系列字符串,将字符串按递减次序排列。请编程实现。Dim a() As String, n%, i%, j%Private Sub Command1_Click()n = Text1ReDim a(1 To n) As StringFor i = LBound(a) To UBound(a)a(i) = InputBox(请输入字符串)Picture1.Print a(i); Spc(1);Next iEnd SubPrivate Sub Command2_Click()For i = 1 To nFor j = 1 To n - iIf a(j) amax Then amax = a(i)If a(i) a(1) Thenmaxa = a(i): m = iEnd IfNext iFor i = 1 To 10Print a(i);Next iPrint maxa= & maxa; 下标为 & mEnd Sub25、定义三个44的二维数组A,B,C,A和B中的元素均随机生成,数组A范围是120,数组B的范围是100200,数组C是A和B相加得到的。请编程生成并输出A,B,C。Private Sub Command1_Click()Dim a(3, 3), b(3, 3), c(3, 3), t%, m%For i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 20 + 1)Picture1.Print a(i, j);Next jNext iPicture1.PrintFor i = 0 To 3For j = 0 To 3b(i, j) = Int(Rnd * 101 + 100)Picture1.Print b(i, j);Next jNext iPicture1.PrintFor i = 0 To 3For j = 0 To 3c(i, j) = a(i, j) + b(i, j)Next jNext iEnd Sub26、利用随机函数生成一个44的矩阵(即二维矩阵),范围是20,50内的整数,求它的两条对角线上元素之和。Private Sub Form_Click()Dim a%(3, 3)For i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 31 + 20)Print Tab(j * 5); a(i, j);Next jNext is = a(1, 1) + a(2, 2) + a(3, 3) + a(0, 0) + a(0, 3) + a(1, 2) + a(2, 1) + a(3, 0)PrintPrint 两对角线上元素之和为:; sEnd Sub27、利用随机函数生成一个44的矩阵(即二维矩阵),范围是40,80内的整数,求它的最小值及所对应的下标。Private Sub Form_Click()Dim a%(3, 3)Min = 80For i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 41 + 40)Print Tab(j * 5); a(i, j);If a(i, j) = Min ThenMin = a(i, j): b = i: c = jEnd IfNext jNext iPrintPrint 最小值为; MinPrint 其下标为; (; b, c; )End Sub28、随机生成一个整型的二维数组,范围在10,20之间,以上三角形式输出该数组。(下三角、全部元素)Dim a%(4, 4)Dim a%(4, 4)Private Sub Command1_Click()Picture1.ClsFor i = 0 To 4For j = i To 4Picture1.Print Tab(j * 6); a(i, j);Next jPicture1.PrintNext iEnd SubPrivate Sub Form_Load()For i = 0 To 4For j = 0 To 4a(i, j) = Int(Rnd * 11 + 10)Next jNext iEnd Sub29、有10个评委对歌手进行打分(分数存在A数组中)要求编程计算出歌手平均得分(按去掉一个最高分和一个最低分的计算方法计算。)a = Array(98, 97, 95, 91, 90, 99, 93, 94, 93, 96)Private Sub Form_Click()Dim a(), max%, min%, imax%, imin%, s!a = Array(98, 97, 95, 91, 90, 99, 93, 94, 93, 96)n = UBound(a)For i = 0 To nPrint a(i);Next iPrintmin = a(0): imin = 0For i = 0 To nIf a(i) max Then max = a(i): imax = iNext iPrint max=; imax=; imaxReDim Preserve a(n - 2)s = 0For i = 0 To n - 2s = s + a(i)Print a(i);Next iPrintPrint avr=; s / (n - 1)End Sub31、声明一个整型的二维数组a(1 to 4,1 to 4),用随机函数产生各元素,范围介于1,20之间,编程将第1行和第3行对应元素交换。Dim a%(1 To 4, 1 To 4), t%Private Sub Command1_Click()Picture1.ClsFor i = 1 To 4For j = 1 To 4Picture1.Print Tab(j * 4); a(i, j);Next jPicture1.PrintNext iEnd SubPrivate Sub Command2_Click()For i = 1 To 4For j = 1 To 4t = a(1, j): a(1, j) = a(3, j): a(3, j) = tPicture2.Print Tab(j * 4); a(i, j);Next jPicture2.PrintNext iEnd SubPrivate Sub Form_Load()For i = 1 To 4For j = 1 To 4a(i, j) = Int(Rnd * 20 + 1)Next jNext iEnd Sub32、随机产生15个小写字母,放在字符数组中。提示:c=chr(int(rnd*26+97)Private Sub Command1_Click()Dim c$(14), i%Picture1.ClsFor i = 0 To 14c(i) = Chr(Int(Rnd * 26 + 97)Next iFor i = 0 To 14Picture1.Print c(i);Next iEnd Sub33、编写一个过程计算并输出区间100,1000内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。调用该过程。(提示:只能被1和自身整除的自然数称为素数。)Function sushu%(ByVal x%)Dim m%, Tag As Boolean, i%m = Val(x)Tag = TrueFor i = 2 To m - 1If (m Mod i) = 0 Then Tag = FalseNext iIf Tag Then sushu = xEnd FunctionPrivate Sub Command1_Click()Dim i%, k%For i = 100 To 1000If sushu(i) Then List1.AddItem iNext iSum = 0For k = 0 To List1.ListCount - 1Sum = Sum + Val(List1.List(k)Next kLabel1 = 100,1000内所有素数和为: & SumEnd Sub34、随机产生10个1100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。Private Sub Form_Click()Dim a(1 To 10) As Integer, i%, maxa%, mina%, suma%For i = 1 To 10a(i) = Int(Rnd * 71 + 30)Next imina = a(1)maxa = a(1)suma = a(1)For i = 2 To 10If a(i) maxa Then maxa = a(i)If a(i) mina Then mina = a(i)suma = suma + a(i)Next iFor i = 1 To 10Print a(i);Next iPrintPrint max=; maxa, min=; mina; aver=; suma / 10End Sub35、已知一维数组a()中的元素已排序,分别为12,15,21,25,27,35,36,39,48,52,编程将30插入数组a,并使a依然有序。Private Sub Command1_Click()Dim a(), i%, k%, x%, n%a = Array(12, 15, 21, 25, 27, 35, 36, 39, 48, 52)n = UBound(a)x = Val(Text1)For k = 0 To nIf x a(k) Then Exit ForNext kReDim Preserve a(n + 1)For i = n To k Step -1a(i + 1) = a(i)Next ia(k) = xFor i = 0 To n + 1Print a(i);Next iEnd Sub37、声明一个整型的二维数组a(1 to 4,1 to 4),用随机函数产生各元素,范围介于1,20之间,编程将第2行和第4行对应元素交换。Private Sub Form_Click()Dim a(0 To 3, 0 To 3), i%, j%, tFor i = 0 To 3For j = 0 To 3a(i, j) = Int(Rnd * 21 + 1)Print Tab(j * 5); a(i, j)Next jNext iPrintPrintFor j = 0 To 3t = a(1, j): a(1, j) = a(3, j): a(3, j) = tNext jFor i = 0 To 3For j = 0 To 3Print Tab(j * 5); a(i, j)Next jNext iEnd Sub38、随机产生10个30,100内的整数,求最小值及所对应的下标。Private Sub Form_Click()Dim a(1 To 10) As Integer, i%, mina%, m%For i = 1 To 10a(i) = Int(Rnd * 70) + 30Next imina = a(1)For i = 2 To 10If a(i) a(1) Thenmina = a(i): m = iElseIf a(i) = a(1) Thenmina = a(i): m = iEnd IfNext iFor i = 1 To 10Print a(i);Next iPrint mina= & mina; 下标为 & mEnd Sub39、编一个判断宿舍的通用过程(函数或子过程)。调用该过程,计算并输出区间(1000,,1100)内所有素数的和。Function ss(n) As IntegerDim i%, tag As Booleantag = TrueFor i = 3 To n / 2If (n Mod i) = 0 Then tag = FalseNext iIf tag Then ss = nEnd FunctionPrivate Sub Picture1_Click()Dim i%, averaavera = 0For i = 1000 To 1100If ss(i) 0 Then Print ss(i)avera = avera + ss(i)Next iPicture1.Print averaEnd Sub40、编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。Private Sub Form_Click()Dim a(1 To 10), amin, i%For i = 1 To 10a(i) = Int(Rnd *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论