当前位置:文档之家› VB上机试题及答案

VB上机试题及答案

上机操作练习题1.某数组有20个元素,其值为随机产生的两位整数。

现要求将前10个元素与后10个元素对换。

即第1个元素与第20个元素互换,第2个数与第19个元素互换,…,第10个元素与第11个元素互换。

在窗体上输出数组原来各元素的值与对换后各元素的值。

Option explicitDim a(1 to 20) as integer, I as integer, j as integer, t as integerPrivate Sub Form_Load()ShowPrint "原始数组是:"RandomizeFor i = 1 To 20a(i) = Int(Rnd * 90) + 10Print a(i);If i Mod 10 = 0 Then PrintNext iPrintPrint "现在数组是:"For i = 1 To 10j = 21 - it = a(i): a(i) = a(j): a(j) = tNext iFor i = 1 To 20Print a(i);If i Mod 10 = 0 Then PrintNext iEnd Sub2.从数组中删除一个数。

先定义一个一维数组,大小、数组的值自定。

从键盘上输入一个数,若这个数在数组当中,就把它删除;若这个数不在数组中,提示“该数不在数组中”注意:1)如果数组中存在多个与该数相同的元素,每一个都能删除;2)能实现多次删除Private Sub Form_Load()ShowReDim a(9) As Integerm = 1Print "原来数组为:"For i = 0 To 9a(i) = InputBox("请输入第" & m & "个数:")Print a(i);m = m + 1Next iPrintn = InputBox("查找的数是:")i = 0: flag = FalseDoIf a(i) = n Thenj = i: flag = TrueFor k = j To UBound(a) - 1a(k) = a(k + 1)Next kReDim Preserve a(UBound(a) - 1)i = i - 1End Ifi = i + 1Loop While (i <= UBound(a))If flag = False ThenMsgBox n & "不在该数组中"ElsePrint "删除" & n & "后的数组是:"For i = 0 To UBound(a)Print a(i);Next iEnd IfEnd Sub3.数组a中存放着升序排列的数据,使用array赋值,将inputbox输入的新数插入到数组中,插入后数组仍有序。

注意:要求利用动态数组,能够实现多次插入Private Sub Form_Load()Shown = 8: ReDim a(n)a = Array(5, 15, 23, 52, 68, 88, 90, 99)n = n + 1: ReDim Preserve a(n)m = InputBox("请输入要插入的数据:")For i = 1 To n - 1If m < a(i) Then Exit ForNext iFor k = n To i + 1 Step -1a(k) = a(k - 1)Next ka(k) = mFor i = 1 To nPrint a(i);Next iPrintEnd Sub4.6个评委为4位歌手打分,分数介于1-100之间。

去掉一个最高分,一个最低分,求出每位选手的最后得分。

将4位歌手得分从高到低排列输出,同时输出该选手的编号。

如:歌手3 95分歌手 1 87分歌手 4 80分歌手 2 70分Option Base 1Private Type geshouxuhao As Stringfenshu(6) As Integerscore As Integerpingjun As IntegerEnd TypeDim singer(1 To 4) As geshouPrivate Sub Command1_Click()For i = 1 To 4For j = 1 To 6singer(i).fenshu(j) = Int(Rnd * 100)singer(i).xuhao = "歌手" & iNextNextCall paixuEnd SubPrivate Sub paixu()Dim p As geshouFor i = 1 To 4For j = 1 To 5For k = j To 6If singer(i).fenshu(j) > singer(i).fenshu(k) Thent = singer(i).fenshu(j)singer(i).fenshu(j) = singer(i).fenshu(k)singer(i).fenshu(k) = tEnd IfNextNextNextFor i = 1 To 4For j = 2 To 5singer(i).score = singer(i).score + singer(i).fenshu(j) Nextsinger(i).pingjun = singer(i).score / 4NextFor i = 1 To 3For j = i To 4If singer(i).score < singer(j).score Thenp = singer(i): singer(i) = singer(j): singer(j) = p End IfNextNextFor i = 1 To 4Print singer(i).xuhao & "得分:" & singer(i).pingjunNextEnd SubPrivate Sub Form_Load()End Sub10个评委给10个选手打分Private Sub Form_Load()Shown = UBound(b)For i = 1 To 10For j = 1 To 10a(i, j) = Val(InputBox("请第" & j & "位评委给第" & i & "位选手打分:"))Next jNext iFor i = 1 To 10max = a(i, 1): sum = 0min = a(i, 1): ave = 0For j = 1 To 10If a(i, j) > max Then max = a(i, j)If a(i, j) < min Then min = a(i, j)sum = sum + a(i, j)Next jave = (sum - max - min) / (n - 2)b(i) = aveNext iFor i = 1 To n - 1For j = i + 1 To nIf b(i) < b(j) Thent = b(i): b(i) = b(j): b(j) = tEnd IfNext jNext iPrint "选手的得分由高到低为:"For i = 1 To 10Print b(i);Next iEnd Sub5.编写函数求一元二次方程ax2+bx+c=0的解。

注意:要求考虑方程有两相等实根、两不等实根和两个虚根的情况。

Dim a As Single, b As Single, c As SingleDim s As Singlea = InputBox("请输入a")b = InputBox("请输入b")c = InputBox("请输入c")s = b ^ 2 - 4 * a * cIf s < 0 ThenMsgBox ("方程无解")ElseIf s = 0 ThenPrint -b / 2 * aElsePrint ((-b) + Sqr(s)) / 2 * a & " " & ((-b) - Sqr(s)) / 2 * aEnd IfEnd Sub6. 任意输入一组字符,统计出大写字母多少个,小写字母多少个,数字多少个?要求用过程实现。

Call tongji(a, n, m, o)Print "数字:" & n & Chr(13) & "小写:" & m & Chr(13) & "大写:" & o End SubPrivate Sub tongji(a As String, n As Integer, m As Integer, p As Integer)For i = 1 To Len(a)If Asc(Mid(a, i, 1)) > 47 And Asc(Mid(a, i, 1)) < 58 Thenn = n + 1ElseIf Asc(Mid(a, i, 1)) > 96 And Asc(Mid(a, i, 1)) < 123 Thenm = m + 1ElseIf Asc(Mid(a, i, 1)) > 64 And Asc(Mid(a, i, 1)) < 91 Thenp = p + 1End IfNextEnd Sub7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。

Option Base 1Private Sub Form_Load()Dim a(5, 5) As IntegerDim s As IntegerFor i = 1 To 5For j = 1 To 5If i = j Or i = 6 - j Thena(i, j) = 1Elsea(i, j) = Int(Rnd * 1000)End IfText1.Text = Text1.Text & " " & a(i, j)s = s + a(i, j)NextText1.Text = Text1.Text & vbCrLf & vbCrLfNextList1.AddItem (s)End Sub8.编写一个函数,能将字母按下列规律译成密码:A<-->Z a<-->zB<-->Y b<-->y即第1个字母与第26个字母互换,第i个字母与第(26-i+1)个字母互换。

相关主题