分享

工作文档二级vb上机重难点题型回结

 鱼摆摆xp07xp0j 2017-05-18

二级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

1/9页

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 '定义205列的矩阵

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)j17

第七行数组元素满足a(7,j)j17

第一列数组元素满足a(i,1)i17

第七列数组元素满足a(i,7)i17

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)

2/9页

End If

Next j

Next i

二、字符(单词)操作

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

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

数值0,9ASCII值范围是:48,57 Asc('0')~Asc('9')

大写字母A,ZASCII值范围是:65,90 Asc('A')~Asc('Z')

小写字母a,zASCII值范围是: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="">

'是数值

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

'是大写字母

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

'是小写字母

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/9页

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中有没有包含mnp字母

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)

4/9页

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

5/9页

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多