题库 高中信息

题干

求两个整数的最大公约数分析:求最大公约数的算法思想:
(1)对于已知两数m,n,使得m>n;
(2)m除以n得余数r;
(3)若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4)m←n,n←r,再重复执行(2)。
例如: 求 m="14" ,n="6" 的最大公约数.
M n r
14 6 2
6 2 0
请根据以上思路补充下面的程序代码:
Private Sub Command1_Click()
m = InputBox("m=")
n = InputBox("n=")
If m < n  Then  t =" m:" m =" n:" n = t
r = ________________
Do While (r <> 0)
m = n
n = r
r =" m" Mod n
Loop
Print "最大公约数=", n
End Sub
上一题 下一题 0.99难度 None 更新时间:2015-12-11 04:23:06

答案(点此获取答案解析)

同类题4

在一个文档中,每行包含一个字符串。现使用如下规则对其压缩:压缩时,对于每个字符串求其与前一字符串的公共前缀,然后使用公共前缀的长度和字符串的剩余部分(以空格隔开)表示该字符串,每个空格和字符都会占用一个字节空间。图a所示为该压缩规则示意图。小明为此编写了VB程序,功能如下:运行程序时,在列表框List1中显示原字符串内容,单击“压缩”按钮Command1,在列表框List2中显示压缩后字符串,并在标签Label2中显示压缩后容量。程序运行界面如图b所示。

实现上述功能的 VB 代码如下,但划线处代码有错,请改正。
Dim word(3000) As String, pre(3000) As String
Const n = 2000
Private Sub Form_Load()
'该过程的作用是从数据库读取 n 个单词,按字典顺序存储在数组 word 中,并在 Label1输出单词数量和容量
'代码略
End Sub
Private Sub Command1_Click()
Dim conp As Integer '存储压缩后的容量
Dim f As Boolean,m As Integer,k As Integer   'k 存储公共前缀的长度
conp=0
For i=1 To n
k=0
If i=1 Then f=False Else f=True
k=Len(word(i)) '(1)______________
Do While k<m And f=True
If Mid(word(i),1,k+1)=Mid(word(i-1),1,k+1) Then    
k=k-1 '(2)____________
Else
f=False
End If
Loop
pre(i)=CStr(k)+" "+Mid(word(i),k+1,Len(word(i)))
'Cstr()函数能够将数字类型的值转换为字符类型的值,并却掉前导空格。
List2.AddItem pre(i)
conp=conp+Len(word(i))   '(3)______________
Next i
Label2.Caption="压缩后容量为"+Str(conp)+"字节"
End Sub

同类题5

(加试题)用一个6*5矩阵表示地图,分别用a数组元素表示,第1行从左到右为a(1)到a(6),依次类推,右下角为a(30)。其中数字0表示不通,数字1I表示畅通。现在要从左上角到右下角寻找一条畅通的路径。线路规则如F:
•路线每个位置只能向右或向下
•任何一个岔口优先向右走,右侧不通再向下走
•一条路线中每个位置只能走一次,不能重复
算法思路:探路过程中,记录每个位置坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧不通;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下角为止,最后输出整体线路坐标。
实现算法的程序如下,运行结果如图所示。
回答下列问题:
(1)根据规则,如图迷宫矩阵正确路线的第6个位置是a数组的第_________个元素(填数字)

(2)在程序划线处填上合适代码,使程序完整。
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer,j As Integer,pos As Integer
Dim cha(1 To 10)As Integer'记录一条路线中各个岔路口
Dim lu(1 To 10) As Integer’记录路线经过的位置
pos=1:j=0:lu(1)=1:i=1
Do While i <=9‘第1个和最后1个固定,中间有9个需要路过的路径点

If pos Mod 6<>0 And a(pos+1)=1 Then' 向右畅通

If pos+6 <=30 and a(pos+6)=1 Then‘记录岔路口
j=j+1
_____________
End If
pos=pos+1
i=i+1
1u(i)=pos
Else If pos+6 <=30 And a(pos+6)=1 Then’向下畅通
pos=pos+6
i=i+1
lu(i)=pos
Else’坐标退回到上一个岔路口
If j=0 Then Exit Do
Do While lu(i)<>cha(j)
_____________
Loop
a(cha(j)+1)=0’标记此路口右侧不可用
_____________
j=j-1
End If;

Loop

If j=0 Then

Text1.Text="没有畅通道路"

Else

For i=1 To 10
Text1.Text=Text1.Text+Str(lu(i))
Next i

End If

End Sub
Private Sub Form_Load()

‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略

End Sub