问题 单项选择题

有如下程序段:
Private Sub Form_Click()
Dim m,n As Integer
m=InputBox("请输入M的值")
m=Val(m)
m1=m
n=InputBox("请输入N的值")
n=Val(n)
n1=n
Do While n<>0
remin=m Mod n
m=n
n=remin
Loop
Print m1, n1,m
End Sub
程序运行后,单击窗体,在输入对话框中分别输入16和24,则程序在窗体上的输出结果为______。

A) 16 24 4
B) 16 24 8
C) 24 16 6
D) 24 16 8

答案

参考答案:B

解析: 本题提供的是用"辗转相除法"求两个整数的最大公约数的程序。一般来说,假定有两个整数m和n(m>n),把m作为被除数,n作为除数,相除后余数为r。如果r不等于0,则令m=n,n=r,再进行一次除法运算(以新的m作为被除数,n作为除数),得到新的r。如果r仍不等于0,则重复上述过程,直到r=0为止,此时的n就是两个数的最大公约数。在本题Do While…Loop循环中,通过辗转相除法求最大公约数,循环结束的条件是相除后余数为0,如果不为0,则一直"除下去。这里用Mod运算求余数,较大的整数作为被除数或者较小的整数作为被除数都可以得到正确的结果,但整除的次数可能会不一样。在本题的输入中,先输入16,再输入24,求出的最大公约数为8。

单项选择题
单项选择题