试题

计算机二级VB上机重难点题型及答案

时间:2025-04-27 06:24:25 试题 我要投稿
  • 相关推荐

2016年计算机二级VB上机重难点题型及答案

  一、二维数组(矩阵)操作

  1、求矩阵元素的最大值

  Dim a(5, 5) As Integer

  '省略给数组a赋值代码

  '求数组a的最大值

  Max = a(1, 1) '假设第一个数为最大值初值

  For i = 1 To 5

  For j = 1 To 5

  If a(i, j) > Max Then

  Max = a(i, j)

  End If

  Next j

  Next i

  '循环结束后,max获得最大值

  '注意for i循环必须从1开始,不能从2开始

  '若for i循环从2开始,那a(1,2),a(1,3),a(1,4),a(1,5)都无法参加比较

  2、求方阵对角线元素之和、两个对角线元素之和

  假定有如下定义:

  Const N% = 6

  Dim a(1 to N,1 to N) as Integer

  则a数组的主、副对角线元素分别为:

  1.主对角线元素:a(1,1)、a(2,2)、…a(i,i)…a(N,N),“左上-右下”元素,即元素行、列下标相同;

  2.副对角线元素:a(1,N)、a(2,N - 1)、…a(i,N – i + 1)…a(N,1),“右上-左下”元素,即第1行最后一个、第2行倒数第2个……第i行倒数第i个元素。

  黑色线条表示的是主对角线,红色线条表示的副对角线

  Sum1 = 0 '获得主对角线之和

  Sum2 = 0 '获得副对角线之和

  For i = 1 To N

  For j = 1 To N

  If i = j Then '求主对角线元素之和

  Sum1 = Sum1 + a(i, j)

  End If

  If i + j = N + 1 Then '求副对角线元素之和

  Sum2 = Sum2 + a(i, j)

  End If

  Next j

  Next i

  3、列与列互换,如第2列和第4列互换

  For i = 1 To N

  t = a(i, 2)

  a(i, 2) = a(i, 4)

  a(i, 2) = t

  Next i

  注意:a(i, 2)表示第2列的数组元素,a(i,4)表示第4列的数组元素,如果是第2行与第4行互换,则可用a(2, i)表示第2行的数组元素,a(4,i)表示第4行的数组元素。

  4、二维数组每行最大值及其在该行中的位置

  Dim a(20, 5) As Integer '定义20行5列的矩阵

  For i = 1 To 20

  Max = a(i, 1) '假设该行第一个数是最大值初值

  maxi = 1 '获得假设初值的列下标

  For j = 1 To 5

  If a(i, j) > Max Then Max = a(i, j): maxi = j

  Next j

  Print "第"; i; "行最大值"; Max, "在该行的"; maxi; "位置"

  Next i

  注意:该题还可以扩展为求所有行最大值平均值、各行平均数的最大值、各行最小数的平均值;每行在某个范围内(如小于100)元素值之和、平均值;每行的偶数最大值、奇数最小值等。

  5、矩阵四周围元素之和,能被某数整除的个数

  Dim a(7, 7) As Integer

  如上声明的数组a,对数组a而言其四周围的元素即为第一行、第七行、第一列和第七列的数组元素。

  第一行数组元素满足a(1,j),j从1到7

  第七行数组元素满足a(7,j),j从1到7

  第一列数组元素满足a(i,1),i从1到7

  第七列数组元素满足a(i,7),i从1到7

  Sum=0

  For i = 1 To 7

  For j = 1 To 7

  If i = 1 Or i = 7 Or j = 1 Or j = 7 Then

  Sum = Sum + a(i, j)

  End If

  Next j

  Next i

  二、字符(单词)操作

  1、统计文本框中数字、大写字母、小写字母个数

  每次取出一个字符,利用ASCII码值进行判断,

  数值0~9的ASCII值范围是:48~57 或 Asc("0")~Asc("9")

  大写字母A~Z的ASCII值范围是:65~90 或 Asc("A")~Asc("Z")

  小写字母a~z的ASCII值范围是:97~122 或 Asc("a")~Asc("z")

  For i = 1 To Len(Text1)

  s = Mid(Text1, i, 1)

  If Asc(s) >= 48 And Asc(s) <= 57 Then

  ’是数值

  ElseIf Asc(s) >= 65 And Asc(s) <= 90 Then

  ’是大写字母

  ElseIf Asc(s) >= 97 And Asc(s) <= 122 Then

  ’是小写字母

  End If

  Next i

  注意:与该题类似的还有,统计给定字母的出现次数,此时循环中的if判断条件改成s与该字母的比较即可;判断文本框中输入的是数字信息还是非数字信息等。

  2、统计文本中某单词出现的次数、平均长度、最长单词见上机教程第十三讲考点2单词操作

  ’统计文本s中单词this出现的次数

  For i = 1 To Len(s) ’对字符串内所有字符处理

  c = Mid(s, i, 1) ’取字符

  If c <> " " Then ’不为空格字符

  word = word + c ’将该字符连接在单词中

  Else ’若为空格字符

  If word= "this" then ’如果是this单词,对该单词个数计数

  n = n + 1 ’单词个数计数

  End if

  word = "" ’存下一个单词前,将变量word清空

  End If

  Next i

  ’循环退出后,还有最后出现一个单词未处理

  If word= "this" then ’如果是this单词,对该单词个数计数

  n = n + 1 ’单词个数计数

  End if

  3、统计文本中同时含有某几个字母的单词个数(instr函数)

  要求统计包含了字母“m”,“n”和“p”的单词个数

  For i = 1 To Len(s) ’对字符串内所有字符处理

  c = Mid(s, i, 1) ’取字符

  If c <> " " Then ’不为空格字符

  word = word + c ’将该字符连接在单词中

  Else ’若为空格字符

  ’利用instr函数判断单词word中有没有包含m、n和p字母

  If instr(word, "m")>0 and instr(word, "n")>0 and instr(word, "p")>0 then

  n = n + 1 ’单词个数计数

  End if

  word = "" ’存下一个单词前,将变量word清空

  End If

  Next i

  ’循环退出后,还有最后出现一个单词未处理

  If instr(word, "m")>0 and instr(word, "n")>0 and instr(word, "p")>0 then

  n = n + 1 ’单词个数计数

  End if

  4、编写函数判断回文

  思路:将第一个字符和最后一个字符进行比较,如果相同,继续判断第二个字符和倒数第二个字符是否相同,若不相同比较结束,该字符串不满足回文。

  Function foundhuiwen(p As String) ’判断p是否满足回文条件

  foundhuiwen = True

  For i = 1 To Len(p) / 2

  If Mid(p, i, 1) <> Mid(p, Len(p) - i + 1, 1) Then

  foundhuiwen = False

  Exit For

  End If

  Next i

  End Function

  三、算法

  1、排序算法

  (1)对读入的数据进行从小到大排序

  Dim a(10) As Integer

  Private Sub Command1_Click()

  Open App.Path & "\Data5.txt" For Input As #1

  Do While Not LOF(1)

  For i = 1 To 10

  Input #1, a(i)

  Next i

  Loop

  Close #1

  End Sub

  Private Sub Command2_Click()

  ’============以下考生编写程序开始=================

  ’============考生编写程序结束=====================

  End Sub

  (2)将奇偶数分开,将奇数移动到前面,偶数移动到后面。(文本框为控件数组,名称属性分别为Text1(0)~Text1(9))

  单击“重排数据”按钮,执行如下代码

  ’================================================

  ’算法:

  ’1)令i指向第1个数,j指向最后1个数,并先暂存最后一个数;

  ’2)检查第i个数是否为偶数,若不是,再检查下一个,直到第i个是

  ’ 偶数,则把此偶数放到第j个位置,j向前移1个位置;

  ’3)检查第j个数是否为奇数,若不是,再检查前一个,直到第j个是

  ’ 奇数,则把此奇数放到第i个位置,i向后移1个位置;

  ’4)重复2)、3),直到i=j

  ’5)把开始暂存的数放到i的位置

  ’=================================================

  Dim i%, j%, temp%, flag As Boolean

  i = 0

  ’ j = ?1

  ’ ?2 = Text1(j)

  flag = True

  ’ While (i < ?3)

  If flag Then

  If Text1(i) Mod 2 = 0 Then

  Text1(j) = Text1(i)

  j = j - 1

  flag = Not flag

  Else

  i = i + 1

  End If

  Else

  ’ If Text1(j) Mod 2 = ?4 Then

  Text1(i) = Text1(j)

  i = i + 1

  flag = Not flag

  Else

  j = j - 1

  End If

  End If

  Wend

  Text1(i) = temp

  End Sub

  参考答案:

  1、9

  2、temp

  3、j

  4、1

  2、查找算法:在随机产生(数值互不相同)的数组中输入一个数进行查找

  Option Base 1

  Dim a(10)

  ’产生数组

  Private Sub Command1_Click()

  For i = 1 To 10

  a(i) = Fix(Rnd * 99 + 1)

  ’ For j = 1 To ?1

  If a(i) = a(j) Then

  ’ i = ?2

  Exit For

  End If

  Next j

  Next i

  End Sub

  ’输入一个数进行查找

  Private Sub Command2_Click()

  Dim num As Integer, i As Integer

  num = InputBox("请输入待查找的数")

  For i = 1 To 10

  ’ If a(i) = ?3 Then

  Text2.Text = Str(num) + "是数组中的第" + Str(i) + "个值"

  Exit For

  End If

  Next i

  ’ If ?4 > 10 Then

  Text2.Text = Str(num) + "不存在于数组中"

  End If

  End Sub

  参考答案:

  1、i-1

  2、i-1

  3、num

  4、i

  3、插入和删除算法

  (1)有序数组中插入一个数,让该数组仍然有序

  思路:通过比较查找到该数要插入的位置i,将该位置以及后续数逐一向后移动(注意移动时应先移最后一个数)。注意插入后数组的个数要增加1。

  Dim a(100) As Integer, num As Integer

  ’读入升序的数组元素

  Private Sub Command1_Click()

  Dim k As Integer

  Open App.Path & "\in4.dat" For Input As #1

  For k = 1 To 60

  Input #1, a(k)

  Next k

  Close #1

  End Sub

  ’输入一个要插入的数

  Private Sub Command2_Click()

  num = InputBox("请输入一个数")

  End Sub

  ’插入后数组仍然为升序

  Private Sub Command3_Click()

  For i = 1 To 60

  ’If num < a(i) Then ?1

  Next i

  ’For j = 60 To i ?2

  ’a(j + 1) =?3

  Next j

  ’?= num

  End Sub

  参考答案

  1、Exit For

  2、Step -1

  3、a(j)

  4、a(i)

  (2)有序数组中删除一个数

  思路:通过比较查找到要删除数的位置i,将该位置以及后续数逐一向前移动(注意移动时应先移第i+1个数)。注意删除后数组的个数要减少1。

  ’数组a获得有序数

  Private Sub Command3_Click()

  num = InputBox("请输入一个数")

  For i = 1 To n ’n为数组元素个数

  If num = a(i) Then Exit For

  Next i

  ’ If ?1 Then

  MsgBox "该数不存在于数组中,不能执行删除操作!"

  Else

  n = n - 1

  ’ For j = i To ?2

  ’ a(j) = ?3

  Next

  End If

  End Sub

  参考答案

  1、i>n

  2、n

  3、a(j+1)

  四、其它

  1、求一范围内的完全平方数(平均值、最大值、个数等)

  注意:36=62,完全平方数是36,而不是6

  求100以内所有完全平方数的个数

  For i=1 to 100

  If sqr(i)=int(sqr(i)) then ‘完全平方数开平方后为整数

  n=n+1

  End If

  Next i

  2、有序数组A和B,合并成数组C,要求仍然有序

  思路:假设数组A和B各有20个数组元素,先将A的数组元素值赋值给C的前20个数组元素,再将B的数组元素值赋值给C作为后20个数组元素,再对C进行排序操作。

  3、图形控件Shape的椭圆、圆形设置、填充线设置、边框设置等

  椭圆和圆形设置:Shape属性

  填充线设置:FillStyle属性

  填充线颜色设置:FillColor属性

  边框设置:BorderStyle属性

  边框颜色设置:BorderColor属性

  4、统计随机产生数中出现频率最高的数以及出现的次数

  数组a获得100个随机数,判断出现频率最高的数及其次数,b(i)获得对应a(i)出现的次数。

  max = 0

  For i = 1 To 20

  For j = 1 To i-1 ‘不能让a(1)和其本身进行比较

  If a(i) = a(j) Then

  b(i) = b(i) + 1

  End If

  Next j

  If b(i) > max Then max = b(i)

  Next i

【计算机二级VB上机重难点题型及答案】相关文章:

计算机二级VB上机试题及答案09-09

计算机二级VB考试上机题型与解题技巧07-14

计算机二级VB上机模拟题及答案10-17

计算机二级《VB》上机题题库(含答案)10-22

计算机二级vb上机试题07-06

计算机二级考试VB上机模拟题及答案06-18

2016年计算机VB二级考试上机题及答案08-25

计算机二级VB上机操作练习题及答案10-02

计算机二级考试VB上机模拟题以及答案10-05