(完整word版)计算机二级考试VB常用算法难点.docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机二级考试VB常用算法:约数因子
1、算法说明
1)最大公约数:用辗转相除法求两自然数m、 n 的最大公约数。
( 1)首先,对于已知两数 m、 n,比较并使得 m>n;
( 2)m 除以 n 得余数 r ;
( 3)若 r = 0,则 n 为求得的最大公约数,算法结束;否则执行步骤( 4)( 4)m→ nn → r再重复执行(2)
譬如:10 与 5
分析步骤:m=10 n=5
r=m mod n=0
所以 n(n=5) 为最大公约数
24 与 9
分析步骤:m=24 n=9
r=m mod n=6
r ≠0 m=9 n=6
r=m mod n=3
r ≠ 0 m=6 n=3
r=m mod n=0
所以 n(n=3) 为最大公约数
算法实现
Private Function GCD(ByVal m As Long, ByVal n As Long) As Long
Dim temp As Long
If m < n Then temp = m: m = n: n = temp
Dim r As Long
Do
r = m Mod n
If r = 0 Then Exit Do
m = n
n = r
Loop
GCD = n
End Function
2)最小公倍数
m×n÷最大公约数
3)互质数
最大公约数为 1 的两个正整数
解题技巧
该算法需要识记!
这种类型题目的扩展是约数和因子题型。
2、实战练习
1)补充代码( 2003 春二( 9))
给定一个十进制正整数,找出小于它并与其互质的所有正整数(所谓互质数是指最大公约数为 1 的两个正整数,下图是程序执行画面)。
Option Explicit
Private Function gcd
((1)) As Integer
Dim r As Integer
r = m Mod n
If r = 0 Then
gcd = n
Else
m = n: n = r
(2)
End If
End Function
Private Sub Command1_Click()
Dim n As Integer, p As Integer
n = Val(Text1)
For p = n - 1 To 2 Step -1
If (3)Then List1.AddItem p
Next p
End Sub
2)编程题( 2002 秋上机试卷 01)
生成一个三行八列的二维数组A(3,8) ,其中前两行元素产生的方法是:
用初值 X1=26 及公式 Xi+1=(25 ×Xi+357) Mod 1024 ,产生一个数列:X1 、 X2 、 ......、 X16 。其中 X1~X8 作为 A 的第一行元素; X9~X16 作为 A 的第二行元素; A 的第三行元素值取前两行同
列元素的最大公约数。最后按图示格式显示在图片框中。
计算机二级考试VB常用算法:进制转化
1、算法说明
1)十进制正整数 m 转换为 R( 2- 16)进制的字符串。
思路:将m不断除r取余数,直到商为0,将余数反序即得到结果。
算法实现:
Private Function Tran(ByVal m As Integer, ByVal r As Integer) As String
Dim StrDtoR As String, n As Integer
Do While m <> o
n = m Mod r
m = m \ r
If n > 9 Then
StrDtoR = Chr(65 + n - 10) & StrDtoR‘将余数n 转换为字符(10 转为A ,11
为 B,依次类推,然后放到转换后字符串的前面(实现反序排列)
Else
StrDtoR = n & StrDtoR
End If
Loop
Tran = StrDtoR
End Function
2)R(2- 16)制字符串十制正整数。
思路: R 制数每位数字乘以之和即十制数。
算法:
Private Function Tran(ByVal s As String, ByVal r As Integer) As integer
Dim n As Integer, dec As Integer
s = UCase(Trim(s))
For i% = 1 To Len(s)
If Mid(s, i, 1) >= "A" Then
n = Asc(Mid(s, i, 1)) - Asc("A") + 10将字‘母A10,B11,⋯ .
Else
n = Val(Mid(s, i, 1))
End If
dec = dec + n * r ^ (Len(s) - i)
Next i
Tran = dec
End Function
解技巧
制化的原理要清楚, 同写代候要留意16 制中的A- F 字符的理。
2、
1)充代( 2002 秋二( 9))
本程序是把定的二制整数八制整数。
Private Sub Command1_Click()
Dim a As String, b As String, c As String
Dim L As Integer, m As Integer, n As Integer
a = InputBox("入一个
二制数 ", "入框")
(1)
a = String(L, "0") & a
(2)
For m = 1 To n / 3
b = Mid(a, 3 * m - 2,
3)
(3)
Next m
Text1.Text = c
End Sub