单选题
窗体上有一个名称为Command1的命令按钮,并有如下程序:
Private Sub Command1_Click()
Dim m As Integer, n As Integer
m=InputBox("输入第一个数")
n=InputBox("输入第二个数")
Do While m<>n
Do While m>n
m=m-n
Loop
Do While n>m
n=n-m
Loop
Loop
Print m
End Sub
该程序的功能是______。
A、
求数值m和n的最大公约数
B、
求数值m和n的最小公倍数
C、
求数值m和n中的较大数
D、
求数值m和n中的较小数
【正确答案】
A
【答案解析】
[解析] 本题要理解嵌套Do While的功能。如果m不等于n,则执行内层循环,退出循环的条件和m=n。输入的m、n的值有三种情况:m=n,m>n,m<n。如果m=n,则直接跳过循环,输出m的值。下面对m>n的作进一步的分析,m<n的情况与之类似。
(1)m>n,循环执行嵌套的第一个循环,m=m-n,直到m<=n,设循环执行了x次,则m=m-xn,令a=m=m-xn,为执行第一个循环后的m值。①如果a=n,有n=m-xn,整理得m=(x+1)n,则m说明m是n的整数倍,输出结果为n。②如果a<n,执行嵌套的第二个循环,n=n-a,直到a>=n,设循环执行了y次,则n=n-ya,令b=n-ya,如果a=b,有a=n-ya,(y+1)a=n,n/a=y+1,a=m-xn=m-x(y+1)a,m/a=xy+x+1,可见a是m、n的最大公约数。(2)如果b<a,也就是m>n的情况,继续(1)。
如果认为上述解析难于理解,可代入具体的数据来计算,例如,令m=24,n=9。
提交答案
关闭