1、国家二级 VB机试(控制结构)模拟试卷 11及答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.有下面程序代码: Private Sub Command1_Click() Dim sign As Integer sign=1 a=1:b=2 For k=l To 5 c=a+sign*b a=b:b=c Print c: sign=-sign Next k End Sub 程序运行后,单击命令按钮Command1,输出结果是(分数:2.00)A.3 -1 2 -3 -1B.3 5 8 13 21C.-1 1 -2 -1 -1D.3 4 5 6 7
2、2.编写如下程序: Private Sub Command1_Click() Dim a(10)As String s=“123456“:n=Len(s) For k=1 To n a(k)=Mid(s,k,1) Next k For i=1 To n2 t=a(i) a(i)=a(n-i+1):a(n-i+1)=t Next i For k=l To n Print a(k); Next k End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.654321B.123456C.654123D.1236543.窗体上有 1个名称为 Command1的命令按
3、钮;1 个名称为 List1、没有列表项的列表框。编写如下程序: Private Sub Command1_Click() Dim x As String,s As String,temp As String Dim i As Integer x=InputBox(“输入字符串“,“输入“) Ifx“Then temp=s+temp Else List1AddItem temp s=“:temp=“ End If Next List1AddItem temp Else MsgBox“输入内容为空!“ End If End Sub 程序运行后,单击命令按钮 Command1,并输入“Happy
4、new year”,则在 List1中显示的内容为(分数:2.00)A.year new HappyB.Happy new yearC.raey wen yppaHD.yppaH wen raey4.设窗体上有一个文本框 Text1和一个命令按钮 Command1,并有以下事件过程:Private Sub Command1_Click()Dim s As String,ch As String s=“For k=1 To Len(Text1)ch=Mid(Text1,k,1)s=ch+s Next k Text1Text=s End Sub 程序执行时,在文本框中输入“Basic”,然后单击命
5、令按钮,则 Text1中显示的是(分数:2.00)A.BasicB.cisaBC.BASICD.CISAB5.某人编写了如下程序,用来求 10个整数(整数从键盘输入)中的最大值: Private Sub Command1_Click() Dim a(10)As Integer,max As Integer For k=1 To 10 a(k)=InputBox(“输入一个整数“) Next k max=0 For k=1 To 10 Ifa(k)max Then max=a(k) End If Next k Print max End Sub 运行程序时发现,当输入 10个正数时,可以得到正确
6、结果,但输入 10个负数时结果是错误的,程序需要修改。下面的修改中可以得到正确运行结果的是(分数:2.00)A.把 Ifa(k)max Then改为 Ifa(k)B.把 max=a(k)改为 a(k)=maxC.把第 2个循环语句 For k=1 To 10改为 For k=2 To 10D.把 max=0改为 max=a(10)6.在窗体上画一个名称为 Text1的文本框和一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim i As Integer,n As Integer For i=0 To 50 i=i+3:
7、n=n+1 Ifi10 Then Exit For Next Text1Text=Str(n) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3C.4D.57.在窗体上画一个名为 Command1的命令按钮,然后编写如下代码: Option Base1 Private Sub Command1 Click(1) Dim a a=Array(1,2,3,4):j=1 For i=4 To 1 Step-1 s=s+a(i)*j:j=j*10 Next i Print s End Sub 运行上面的程序,其输出结果是(分数:2.00)A.1234B.12
8、C.34D.43218.在窗体上画一个名称为 Text1的文本框和一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click0 Dim iAs Integer,n As Integer For i=0 To 50 i=i+3:n=n+1 Ifi10 Then Exit For Next Text1Text=Str(n) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3C.4D.59.在窗体上画一个名称为 Command1的命令按钮,然后编写如下程序: Option Base1 Private
9、Sub Command1_Click() d=0:c=10:x=Array(10,12,21,32,24) For i=l To 5 Ifx(i)c Then d=d+x(i):c=x(i) Else d=d-c End If Next i Print d End Sub 程序运行后,如果单击命令按钮,则在窗体上输出的内容为(分数:2.00)A.89B.99C.23D.7710.在窗体上画 1个名称为 Command1的命令按钮,并编写如下事件过程: Private Sub Command1_Click() x=1:s=0 For i=1 To 5 x=xi:s=s+x Next Print
10、s End Sub 该事件过程的功能是计算(分数:2.00)A.s=1+2+3+4+5qB.s=1+12+13+14+15C.s=1+12!+13!+14!+15!D.s=1+1(1*2)+1(2*3)+1(3*4)+1(4*5)11.有如下程序: Private Sub Form_Click() Dim i As Integer,n As Integer For i=1 To 20 i:i+4:n=n+i Ifi10 Then Exit For Next Print n End Sub 程序运行后,单击窗体,则输出结果是(分数:2.00)A.14B.15C.29D.3012.有以下通用过程:
11、 Function fun(N As Integer) s=0 For k=1 To N s=s+k*(k+1) Next k fun=s End Function 该过程的功能是(分数:2.00)A.计算 N!B.计算 1+2+3+NC.计算 12233NND.计算 12+23+34+N(N+1)13.编写如下程序: Option Base1 Private Sub Command1_Click() Dim a a=Array(1,2,3,4):s=0:j=1 For i=4 To 1 Step-1 s=s+a(i)*j:j=j*10 Next i Print s End Sub 程序运行后
12、,单击命令按钮 Command1,输出结果为(分数:2.00)A.110B.123C.1234D.432114.在窗体上画一个名称为 Command1的命令按钮,编写如下事件过程: Private Sub Command1_Click() n=0 For i=0 To 10 X=2*i=1 IfX Mod 3=0 Then n=n+1 Next i Print n End Sub 运行程序,单击命令按钮,则窗体上显示的是(分数:2.00)A.1B.3C.5D.715.窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。要求编写一个程序,统计文本框中 0-9各数字字符
13、的个数。某人编写如下程序: Private Sub Command1_Click() Dim count(10)As Integer第 1个 For循环 For i=0 To 9 count(i)=0 Next S=Trim(Text1Text) strLen=Len(s)第 2个 For循环 For i=1 To strLen c=Mid(s,i,1) If C=“0“And cb a=ab Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是(分数:2.00)A.把 a=ab 改为 a=baB.把 a=ab 改为 a=abC.把
14、 While ab改为 While ab改为 While a=b19.设有如下事件过程: Private Sub Form Click() x=0 While xA.16B.19C.20D.2520.下面程序在调试时出现了死循环 Private Sub Command1_Click() n=InputBox(“请输入一个整数”) Do Ifn Mod 2=0 Then n=n+1 Else n=n+2 End If Loop Until n=1000 End Sub(分数:2.00)A.只有输入的 n是偶数时才会出现死循环,否则不会B.只有输入的 n是奇数时才会出现死循环,否则不会C.只有输入
15、的 n是大于 1000的整数时才会出现死循环,否则不会D.输入任何整数都会出现死循环21.假定有以下循环结构 Do Until条件表达式循环体 Loop则以下正确的描述是(分数:2.00)A.如果“条件表达式”的值是 0,则一次循环体也不执行B.如果“条件表达式”的值不为 0,则至少执行一次循环体C.不论“条件表达式”的值是否为“真”,至少要执行一次循环体D.如果“条件表达式”的值恒为 0,则无限次执行循环体22.以下 Visual Basic不支持的循环结构是(分数:2.00)A.ForNextB.For EachNextC.DoLoopD.DoEnd Do23.在窗体上画两个文本框(名称分
16、别为 Text1和 Text2)和一个命令按钮(名称为 Command1),然后编写如下事件过程: Private Sub Command1_Click() x=0 Do While xA.l和 0B.2和 72C.3和 50D.4和 16824.编写如下程序: Private Sub Cornmandl Click() Dim X As Integer,y As Integer x=1:y=1 Do y=x*y Ifv10 Then Exit Do Else x=x+3 End If Loop Until x0 s=sn Mod 10:s=Sn10 Mod 10 n=n100 Loop Pr
17、int s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123456,则输出结果为(分数:2.00)A.654321B.563412C.642531D.61524326.下面程序计算并输出的是 Private Sub Command1_Click() a=10:s=0 Do s=s+a*a*a:a=a-1 Loop Until ay Then x=x-y Else y=y-x End if Loop Print x End Sub 运行程序,单击命令按钮,并输入 2个整数169和 39,则在窗体上显示的内容为(分数:2.00)A.11B.13C.23D.39国家二级
18、 VB机试(控制结构)模拟试卷 11答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.有下面程序代码: Private Sub Command1_Click() Dim sign As Integer sign=1 a=1:b=2 For k=l To 5 c=a+sign*b a=b:b=c Print c: sign=-sign Next k End Sub 程序运行后,单击命令按钮Command1,输出结果是(分数:2.00)A.3 -1 2 -3 -1 B.3 5 8 13 21C.-1 1 -2 -1 -1D.3 4 5 6 7解析:解
19、析:在每次循环中 sign的值在 1和-1 之间来回变化,第一次循环时 sign的值为 1;在循环中 c的值为 a+sign*b,然后将 b赋值给 a,c 赋值给 b;因此第一次循环结束后 c的值为 3,a 的值为 2,b 的值为 3;第二次循环结束后 c的值为-1,a 的值为 3,b 的值为-1;第三次循环结束后 c的值为 2,a 的值为-1,b 的值为 2;第四次循环结束后 c的值为-3,a 的值为 2,b 的值为-3;第五次循环结束后 c的值为-1,a 的值为-3,b 的值为-1。2.编写如下程序: Private Sub Command1_Click() Dim a(10)As Str
20、ing s=“123456“:n=Len(s) For k=1 To n a(k)=Mid(s,k,1) Next k For i=1 To n2 t=a(i) a(i)=a(n-i+1):a(n-i+1)=t Next i For k=l To n Print a(k); Next k End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.654321 B.123456C.654123D.123654解析:解析:本题中有三个 For循环,但是这三个循环之间没有嵌套关系,而是顺序的关系。在第一个循环中依次取出字符串 s中的每一个字符存入数组 a:第二个循环
21、中将数组的第一个元素和最后一个元素互换,第二个元素和倒数第二个元素互换以此类推完成数组的逆序;第三个循环输出数组元素。3.窗体上有 1个名称为 Command1的命令按钮;1 个名称为 List1、没有列表项的列表框。编写如下程序: Private Sub Command1_Click() Dim x As String,s As String,temp As String Dim i As Integer x=InputBox(“输入字符串“,“输入“) Ifx“Then temp=s+temp Else List1AddItem temp s=“:temp=“ End If Next Li
22、st1AddItem temp Else MsgBox“输入内容为空!“ End If End Sub 程序运行后,单击命令按钮 Command1,并输入“Happy new year”,则在 List1中显示的内容为(分数:2.00)A.year new Happy B.Happy new yearC.raey wen yppaHD.yppaH wen raey解析:解析:本题的循环中倒序从字符串 s中依次取出每一个字符,只要该字符不是空格就将其连接到temp的前面,见到空格就把连接好的 temp加入到列表框中,即先加入 year,然后是 new,最后是Happy。4.设窗体上有一个文本框
23、Text1和一个命令按钮 Command1,并有以下事件过程:Private Sub Command1_Click()Dim s As String,ch As String s=“For k=1 To Len(Text1)ch=Mid(Text1,k,1)s=ch+s Next k Text1Text=s End Sub 程序执行时,在文本框中输入“Basic”,然后单击命令按钮,则 Text1中显示的是(分数:2.00)A.BasicB.cisaB C.BASICD.CISAB解析:解析:本题考查的考点是有关循环和取子串函数的。本题比较简单,循环次数就是字符串的长度,每次都在第 k位取一个
24、字母,最后倒序连接起来。注意每次都把 ch连接到 s的前面。5.某人编写了如下程序,用来求 10个整数(整数从键盘输入)中的最大值: Private Sub Command1_Click() Dim a(10)As Integer,max As Integer For k=1 To 10 a(k)=InputBox(“输入一个整数“) Next k max=0 For k=1 To 10 Ifa(k)max Then max=a(k) End If Next k Print max End Sub 运行程序时发现,当输入 10个正数时,可以得到正确结果,但输入 10个负数时结果是错误的,程序需
25、要修改。下面的修改中可以得到正确运行结果的是(分数:2.00)A.把 Ifa(k)max Then改为 Ifa(k)B.把 max=a(k)改为 a(k)=maxC.把第 2个循环语句 For k=1 To 10改为 For k=2 To 10D.把 max=0改为 max=a(10) 解析:解析:本题考查的考点是有关循环和数组的。本题为了实现求取最大值,首先应该假设数组中的某一个数就是最大值,再依次与数组元素比较,一旦某个元素比当前的最大值大,就把它作为新的最大值。max初值设为 0是不可以的,它没有考虑到数组元素都小于 0的情况。6.在窗体上画一个名称为 Text1的文本框和一个名称为 C
26、ommand1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim i As Integer,n As Integer For i=0 To 50 i=i+3:n=n+1 Ifi10 Then Exit For Next Text1Text=Str(n) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3 C.4D.5解析:解析:本题考查的考点是有关循环的。实际上本题就要关注循环何时结束,第一次循环中,i 的值变成 3,n 的值变为 1,然后 i+1变成 4;由于满足循环条件,所以第二次循环中,i 的值变
27、成 7,n 的值变为 2,然后 i+1变成 8;由于还是满足循环条件,所以第三次循环中,i 的值变成 11,n 的值变为 3,然后判断由于 i已经大于 10,所以退出循环,最后 n的值为 3。7.在窗体上画一个名为 Command1的命令按钮,然后编写如下代码: Option Base1 Private Sub Command1 Click(1) Dim a a=Array(1,2,3,4):j=1 For i=4 To 1 Step-1 s=s+a(i)*j:j=j*10 Next i Print s End Sub 运行上面的程序,其输出结果是(分数:2.00)A.1234 B.12C.3
28、4D.4321解析:解析:本题考查的考点是有关循环的。本题也很简单,首先取得数组的最后一个元素加到累加变量中,然后取倒数第二个元素,乘 10后加到累加变量中,然后取倒数第三个元素,乘 100后加到累加变量中,以此类推,最后结果为 1234。8.在窗体上画一个名称为 Text1的文本框和一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click0 Dim iAs Integer,n As Integer For i=0 To 50 i=i+3:n=n+1 Ifi10 Then Exit For Next Text1Text=Str(n)
29、End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3 C.4D.5解析:解析:语句 Exit For的作用是退出当前 For循环。 本题中 For循环语句的循环变量 i不仅在执行到 Next语句时后自动加 1,而且在每次执行循环体中的 i=i+3语句时,还会加 3。当第 1次进入循环体时i=0、n=0;当第 2次进入循环体时 i=4、n=1:当第 3次进入循环体时 i=8、n=2,此时当执行 i=i+3和n=n+1语句后,i=11、n=3,If 语句的条件表达式 i10为真,将退出循环,故文本框中显示的值为 3。9.在窗体上画一个名称为 Command1
30、的命令按钮,然后编写如下程序: Option Base1 Private Sub Command1_Click() d=0:c=10:x=Array(10,12,21,32,24) For i=l To 5 Ifx(i)c Then d=d+x(i):c=x(i) Else d=d-c End If Next i Print d End Sub 程序运行后,如果单击命令按钮,则在窗体上输出的内容为(分数:2.00)A.89B.99C.23 D.77解析:解析:本题的循环中依次用数组的每个元素和 c进行比较,如果比 c大就将数组元素累加,并令数组元素成为新的 c值;否则令累加和 d减去 c。在
31、5次循环中 d的累加过程为-10+12+21+32-32=23。10.在窗体上画 1个名称为 Command1的命令按钮,并编写如下事件过程: Private Sub Command1_Click() x=1:s=0 For i=1 To 5 x=xi:s=s+x Next Print s End Sub 该事件过程的功能是计算(分数:2.00)A.s=1+2+3+4+5qB.s=1+12+13+14+15C.s=1+12!+13!+14!+15! D.s=1+1(1*2)+1(2*3)+1(3*4)+1(4*5)解析:解析:在本题的循环中每次累加的变量是 x,而 x在每次的循环中都会除以 i
32、,即第一次除以 1,第二次再除以 2,第三次再除以 3以此类推 C选项是正确答案。11.有如下程序: Private Sub Form_Click() Dim i As Integer,n As Integer For i=1 To 20 i:i+4:n=n+i Ifi10 Then Exit For Next Print n End Sub 程序运行后,单击窗体,则输出结果是(分数:2.00)A.14B.15C.29D.30 解析:解析:本题的 For循环中改变了循环变量 i的值,而且在循环中还有 Exit语句退出循环,故此需要逐次循环进行分析。第一次循环中 i的初值为 1,然后变为 5,将
33、其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1(特别重要很容易忘记)继续循环;第二次循环开始 i的值为 6,加上 4以后变为10,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 l继续循环;第三次循环开始 i的值为 11,加上 4以后变为 15,将其累加到 n中然后因其满足 If条件退出循环,所以累加三次的值为5+10+15=30。12.有以下通用过程: Function fun(N As Integer) s=0 For k=1 To N s=s+k*(k+1) Next k fun=s End Function 该过程的功能是(分数:2.00)A.计算 N
34、!B.计算 1+2+3+NC.计算 12233NND.计算 12+23+34+N(N+1) 解析:解析:在函数中每次向累加和变量 s中累加 k*(k+1)的值,循环变量 k从 1循环到 N,即为求12+23+34+N(N+1)的值。13.编写如下程序: Option Base1 Private Sub Command1_Click() Dim a a=Array(1,2,3,4):s=0:j=1 For i=4 To 1 Step-1 s=s+a(i)*j:j=j*10 Next i Print s End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.1
35、10B.123C.1234 D.4321解析:解析:本题的循环首先取出数组的最后一位累加,然后取出倒数第二位乘以 10以后累加;然后取出倒数第三位乘以 100后累加以此类推,最终结果为 1234。14.在窗体上画一个名称为 Command1的命令按钮,编写如下事件过程: Private Sub Command1_Click() n=0 For i=0 To 10 X=2*i=1 IfX Mod 3=0 Then n=n+1 Next i Print n End Sub 运行程序,单击命令按钮,则窗体上显示的是(分数:2.00)A.1B.3 C.5D.7解析:解析:本题的 For循环共执行 11
36、次,在每次循环中计算出一个 X的值,然后判断能否被 3整除,如能整除则令计数器 n自加 1。15.窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。要求编写一个程序,统计文本框中 0-9各数字字符的个数。某人编写如下程序: Private Sub Command1_Click() Dim count(10)As Integer第 1个 For循环 For i=0 To 9 count(i)=0 Next S=Trim(Text1Text) strLen=Len(s)第 2个 For循环 For i=1 To strLen c=Mid(s,i,1) If C=“0“
37、And cb a=ab Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是(分数:2.00)A.把 a=ab 改为 a=baB.把 a=ab 改为 a=abC.把 While ab改为 While ab改为 While a=b 解析:解析:本题函数过程的原代码仅适合 a不能被 b整除的两数,而当 a能被 b整除时则不适用,如a=4,b=2,a 除以 b的余数为 0,而原代码返回的函数值为 2。因此需将语句 While ab改为 While a=b。19.设有如下事件过程: Private Sub Form Click() x=0
38、While xA.16B.19C.20D.25 解析:解析:本题是简单 While循环,在循环中改变循环变量 x的值,要注意退出循环时 x必然是不会满足循环条件的。本题中循环中 x依次变化为 1、4、25。20.下面程序在调试时出现了死循环 Private Sub Command1_Click() n=InputBox(“请输入一个整数”) Do Ifn Mod 2=0 Then n=n+1 Else n=n+2 End If Loop Until n=1000 End Sub(分数:2.00)A.只有输入的 n是偶数时才会出现死循环,否则不会B.只有输入的 n是奇数时才会出现死循环,否则不会
39、C.只有输入的 n是大于 1000的整数时才会出现死循环,否则不会D.输入任何整数都会出现死循环 解析:解析:本题考查循环。如果输入的 n是偶数,那么在循环体中执行 n=n+1,偶数+1 是奇数,循环结束条件 Loop Until n=1000不会满足,形成死循环;如果输入的 n是奇数,那么循环体内执行 n=n+2,奇数+2 依然是奇数,循环结束条件永远不会满足,也形成死循环。21.假定有以下循环结构 Do Until条件表达式循环体 Loop则以下正确的描述是(分数:2.00)A.如果“条件表达式”的值是 0,则一次循环体也不执行B.如果“条件表达式”的值不为 0,则至少执行一次循环体C.不
40、论“条件表达式”的值是否为“真”,至少要执行一次循环体D.如果“条件表达式”的值恒为 0,则无限次执行循环体 解析:解析:本题考查的考点是有关 Do型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件如何至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环:在 While循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。22.以下 Visual Basic不支持的循环结构是(分数:2.00)A.ForNextB.For Ea
41、chNextC.DoLoopD.DoEnd Do 解析:解析:Visual Basic 支持的循环结构包括:ForNext 循环、For EachNext 循环、DoLoop 循环和 While循环。23.在窗体上画两个文本框(名称分别为 Text1和 Text2)和一个命令按钮(名称为 Command1),然后编写如下事件过程: Private Sub Command1_Click() x=0 Do While xA.l和 0B.2和 72 C.3和 50D.4和 168解析:解析:本题考查的考点是有关 Do型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,
42、则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。本题只需要实际计算一下两次循环中 x和 n值的变化即可容易的得出结果。24.编写如下程序: Private Sub Cornmandl Click() Dim X As Integer,y As Integer x=1:y=1 Do y=x*y Ifv10 Then Exit Do Else x=x+3 End If Loop Un
43、til x10,执行Else分支,x 变成 4,此时由于满足 x0 s=sn Mod 10:s=Sn10 Mod 10 n=n100 Loop Print s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123456,则输出结果为(分数:2.00)A.654321 B.563412C.642531D.615243解析:解析:本题在循环中先将 n除以 10的余数(即个位数字)连接到 s上,然后将整除 10后除以 10的余数(即十位上数字)连接到 s上,然后 n整除 100的值赋值给 n(即去掉最后两位),然后继续进行循环,所以最终将会输出数字的逆序。26.下面程序计算并输出的是 Private Sub Command1_Click() a=10:s=0 Do s=s+a*a*a:a=a-1 Loop Until ay Then x=x-y Else y=y-x End if Loop Print x End Sub 运行程序,单击命令按钮,并输入 2个整数169和 39,则在窗体上显示的内容为(分数:2.00)A.11B.13 C.23D.39解析:解析:本题的循环中将两个输入的数 x和 y互相相减,直到 x=y为止,实际上就是辗转相减法求最大公约数的过程。