- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- + 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
辗转相除法,又名欧几里德算法(Euclidean algorithm),是求两个正整数最大公约数的算法。它是已知最古老的算法之一,其可追溯至3000年前。用辗转相除法来得一个分数的约分后的最简形式的算法如下:

第一步:设两数为a、b,且令a>b;
第二步:a÷b,令r为所得余数,若r=0,算法结束,b 即为最大公约数;若r>0则a←b,b←r,并返回第二步;
第三步:
即为
约分后的最简形式。
编写VB程序,程序运行界面如第6题图1所示,请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Dim a As Integer, b As Integer, r As Integer 'a、b为分子和分母,r为最大公约数
a = Val(Text1.Text)
b = Val(Text2.Text)
If b =" 0" Then c = MsgBox("分母不能为0"): Exit Sub
'如果分母为0,则提示“分母不能为0”并退出该过程
r = ① (3分)
Text3.Text =" Str(a" / r)
Text4.Text =" Str(b" / r)
End Sub
Function gys(ByVal m As Integer, ByVal n As Integer) As Integer
'gys函数用于求最大公约数
Dim s As Integer
If m < n Then
t =" m:" m =" n:" n = t
End If
Do While n <> 0
s =" m" Mod n
m = n
n = s
Loop
② (3分)
End Function

第一步:设两数为a、b,且令a>b;
第二步:a÷b,令r为所得余数,若r=0,算法结束,b 即为最大公约数;若r>0则a←b,b←r,并返回第二步;
第三步:


编写VB程序,程序运行界面如第6题图1所示,请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Dim a As Integer, b As Integer, r As Integer 'a、b为分子和分母,r为最大公约数
a = Val(Text1.Text)
b = Val(Text2.Text)
If b =" 0" Then c = MsgBox("分母不能为0"): Exit Sub
'如果分母为0,则提示“分母不能为0”并退出该过程
r = ① (3分)
Text3.Text =" Str(a" / r)
Text4.Text =" Str(b" / r)
End Sub
Function gys(ByVal m As Integer, ByVal n As Integer) As Integer
'gys函数用于求最大公约数
Dim s As Integer
If m < n Then
t =" m:" m =" n:" n = t
End If
Do While n <> 0
s =" m" Mod n
m = n
n = s
Loop
② (3分)
End Function
国内特快专递每200克为一个计费单位,200克以内22元,200克以上每续重200克(不足200克以200克计算)8元,现在要编写一个程序输入包裹重量自动计算出价格。解决上述问题,最合适的算法是( )
A.解析算法 | B.枚举算法 | C.排序算法 | D.递归算法 |
下列VB程序模块可以计算正整数n阶乘的值。
Function f(n As Integer) As Integer
If n < =" 1" Then
f = 1
Else
f =" n" * f(n - 1)
End If
End Function
该模块采用的算法是( )
Function f(n As Integer) As Integer
If n < =" 1" Then
f = 1
Else
f =" n" * f(n - 1)
End If
End Function
该模块采用的算法是( )
A.枚举 | B.查找 | C.排序 | D.递归 |
某VB程序的一个事件过程如下:
Private Sub Commandl_Click()
Dim i As Integer,j As Integer.s As String
Dim a(1 To 5) As Integer
List1.Clear
Randomize
For i="1" To 10
j="Int(Rnd*6)+1"
a(j)=a(j)+1
Next i
For i="1" To 5
s=Str(a(i))
List1.AddItem s
Next i
End Sub
程序运行时,单击按钮Commandl后弹出如图所示的错误提示。出现错误的语句是( )

Private Sub Commandl_Click()
Dim i As Integer,j As Integer.s As String
Dim a(1 To 5) As Integer
List1.Clear
Randomize
For i="1" To 10
j="Int(Rnd*6)+1"
a(j)=a(j)+1
Next i
For i="1" To 5
s=Str(a(i))
List1.AddItem s
Next i
End Sub
程序运行时,单击按钮Commandl后弹出如图所示的错误提示。出现错误的语句是( )

A.j=Int(Rnd*6)+1 | B.a(j)=a(j)+1 |
C.s=Str(a(i)) | D.List1.AddItem s |
下列VB程序运行时,单击命令按钮command1后,在列表框 list1 中输出的是_______________。
Private Sub Command1_Click()
Dim I as integer
For i=1 to 10 step 2
If i>=5 then
List1.additem str(i-3)
Else
List1.additem str(i)
Next i
End Sub
Private Sub Command1_Click()
Dim I as integer
For i=1 to 10 step 2
If i>=5 then
List1.additem str(i-3)
Else
List1.additem str(i)
Next i
End Sub
下列VB程序运行时,单击命令按钮Command1后,在文本框Text1中输入“1024”,语句“a(i)=a(i+1)/2”共被执行了________次。
Private Sub Command1_C1ick ( )
Dim a(9) As Integer
a(9)=Val(Text1.text)
For i="8" to 1 step -2
a(i)=a(i+1)/2
Next i
Text2.text=str(a(i))
End Sub
Private Sub Command1_C1ick ( )
Dim a(9) As Integer
a(9)=Val(Text1.text)
For i="8" to 1 step -2
a(i)=a(i+1)/2
Next i
Text2.text=str(a(i))
End Sub
以下语句运行后变量c的值是( )
a=”2009”
b=”2008”
c=Val(a)+Val(b)
a=”2009”
b=”2008”
c=Val(a)+Val(b)
A.2009+2008 | B.4017 | C.”20092008” | D.20092008 |
下列程序的功能是:随机产生10个1—100之间的正整数,按从小到大排序并输出。为了实现这一目标,程序中划线处应填入的合适语句是:
①______________ _
②__________ _____
Const n=10
Dim i As Integer,j As Integer,t As Integer
Dim a(1 to 10) As Integer
For i="1" to 10
_____①_______
Next i
For i="1" to n-1
For j="i+1" to n
If ____②____ Then
k=a(i):a(i)=a(j):a(j)=k
End If
Next j
Next i
For i="1" To n
Print a(i)
Next i
①______________ _
②__________ _____
Const n=10
Dim i As Integer,j As Integer,t As Integer
Dim a(1 to 10) As Integer
For i="1" to 10
_____①_______
Next i
For i="1" to n-1
For j="i+1" to n
If ____②____ Then
k=a(i):a(i)=a(j):a(j)=k
End If
Next j
Next i
For i="1" To n
Print a(i)
Next i
下面程序的功能是:计算表达式1+3+5+…+(2n-1)的值,程序运行时在文本框Text1中输入n的值,计算结果在文本框Text2中输出。则程序中加框处的语句应分别更正为:
(1)__________________
(2)__________________
Private Sub Command1_Click()
Dim sum As Long,i As Integer,n As Integer
sum = 0
n =Val( Text1.Text)
For i =" 1" To 2 * n - 1 Step 2
sum =" sum" + 2
Next i
Text2.label=Str(sum)
End Sub
(1)__________________
(2)__________________
Private Sub Command1_Click()
Dim sum As Long,i As Integer,n As Integer
sum = 0
n =Val( Text1.Text)
For i =" 1" To 2 * n - 1 Step 2
sum =" sum" + 2
Next i
Text2.label=Str(sum)
End Sub
如下程序段运行后,k的值是
Dim d(1 to 5) As Integer
k=0
For i="1" to 5
d( i )=i
If d( i )>k Then k="d(" i )
Next i
Print k
Dim d(1 to 5) As Integer
k=0
For i="1" to 5
d( i )=i
If d( i )>k Then k="d(" i )
Next i
Print k