(完整word版)计算机二级考试VB常用算法难点.docx

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档